浏览代码

Merge branch 'master' of http://62.234.61.92:3000/wjm/mec-cloud_IntelligentManufacturing_CLIENT

lph 11 月之前
父节点
当前提交
106a5e73c7
共有 100 个文件被更改,包括 12610 次插入66 次删除
  1. 12 0
      pom.xml
  2. 10 0
      zkqy-admin/pom.xml
  3. 4 2
      zkqy-admin/src/main/java/com/zkqy/web/controller/common/CommonFileController.java
  4. 13 2
      zkqy-admin/src/main/java/com/zkqy/web/controller/homepagestatistics/StatisticsController.java
  5. 14 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java
  6. 18 1
      zkqy-business/src/main/java/com/zkqy/business/controller/MobilePageDataController.java
  7. 118 0
      zkqy-business/src/main/java/com/zkqy/business/controller/MobilePageTableListController.java
  8. 23 0
      zkqy-business/src/main/java/com/zkqy/business/entity/MobilePageData.java
  9. 214 0
      zkqy-business/src/main/java/com/zkqy/business/entity/MobilePageTableList.java
  10. 16 0
      zkqy-business/src/main/java/com/zkqy/business/entity/vo/MobilePageDataVo.java
  11. 39 0
      zkqy-business/src/main/java/com/zkqy/business/factory/MysqlDialect.java
  12. 20 0
      zkqy-business/src/main/java/com/zkqy/business/factory/QueryCondition.java
  13. 23 0
      zkqy-business/src/main/java/com/zkqy/business/factory/SimpleQueryCondition.java
  14. 40 0
      zkqy-business/src/main/java/com/zkqy/business/factory/SqlDialect.java
  15. 65 0
      zkqy-business/src/main/java/com/zkqy/business/mapper/MobilePageTableListMapper.java
  16. 2 1
      zkqy-business/src/main/java/com/zkqy/business/service/IMobilePageDataService.java
  17. 61 0
      zkqy-business/src/main/java/com/zkqy/business/service/IMobilePageTableListService.java
  18. 337 55
      zkqy-business/src/main/java/com/zkqy/business/service/impl/MobilePageDataServiceImpl.java
  19. 96 0
      zkqy-business/src/main/java/com/zkqy/business/service/impl/MobilePageTableListServiceImpl.java
  20. 2 1
      zkqy-business/src/main/resources/mapper/dragmapper/MobilePageDataMapper.xml
  21. 139 0
      zkqy-business/src/main/resources/mapper/dragmapper/MobilePageTableListMapper.xml
  22. 0 1
      zkqy-custom-business/pom.xml
  23. 1 1
      zkqy-custom-business/src/main/resources/mapper/business/DetailsOfTheRefuelingPlanSpinningMapper.xml
  24. 1 1
      zkqy-custom-business/src/main/resources/mapper/business/MaterialInventoryMapper.xml
  25. 1 1
      zkqy-custom-business/src/main/resources/mapper/business/OutboundRecordsMapper.xml
  26. 31 0
      zkqy-fujian-amichi/pom.xml
  27. 190 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BillOfMaterialsController.java
  28. 139 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialInfoController.java
  29. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialtransactionlogController.java
  30. 126 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionTasksController.java
  31. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TaskDetailsController.java
  32. 549 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BillOfMaterials.java
  33. 251 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialInfo.java
  34. 350 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/Materialtransactionlog.java
  35. 419 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionTasks.java
  36. 307 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TaskDetails.java
  37. 15 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/BillOfMaterialsVo.java
  38. 19 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/ProductionTasksVo.java
  39. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BillOfMaterialsMapper.java
  40. 65 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/MaterialInfoMapper.java
  41. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/MaterialtransactionlogMapper.java
  42. 70 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionTasksMapper.java
  43. 90 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/TaskDetailsMapper.java
  44. 84 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBillOfMaterialsService.java
  45. 75 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IMaterialInfoService.java
  46. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IMaterialtransactionlogService.java
  47. 90 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProductionTasksService.java
  48. 62 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ITaskDetailsService.java
  49. 228 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BillOfMaterialsServiceImpl.java
  50. 189 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/MaterialInfoServiceImpl.java
  51. 98 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/MaterialtransactionlogServiceImpl.java
  52. 153 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionTasksServiceImpl.java
  53. 97 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TaskDetailsServiceImpl.java
  54. 251 0
      zkqy-fujian-amichi/src/main/resources/mapper/BillOfMaterialsMapper.xml
  55. 171 0
      zkqy-fujian-amichi/src/main/resources/mapper/MaterialInfoMapper.xml
  56. 179 0
      zkqy-fujian-amichi/src/main/resources/mapper/MaterialtransactionlogMapper.xml
  57. 213 0
      zkqy-fujian-amichi/src/main/resources/mapper/ProductionTasksMapper.xml
  58. 180 0
      zkqy-fujian-amichi/src/main/resources/mapper/TaskDetailsMapper.xml
  59. 31 0
      zkqy-laboratory-information/pom.xml
  60. 113 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/CommissionedInspectionController.java
  61. 114 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/ConsignmentMaterialController.java
  62. 126 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/DetectionInformationController.java
  63. 126 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/DetectionResultController.java
  64. 191 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/EntrustedInformationController.java
  65. 113 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/LaboratorySampleCollectionController.java
  66. 143 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/MaterialInformationController.java
  67. 113 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/ReportInformationController.java
  68. 141 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/SamplePrintingController.java
  69. 126 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/SampleTestingProcessInformationController.java
  70. 167 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/CommissionedInspection.java
  71. 375 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/ConsignmentMaterial.java
  72. 355 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/DetectionInformation.java
  73. 319 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/DetectionResult.java
  74. 444 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/EntrustedInformation.java
  75. 328 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/LaboratorySampleCollection.java
  76. 404 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/MaterialInformation.java
  77. 266 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/ReportInformation.java
  78. 305 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/SamplePrinting.java
  79. 248 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/SampleTestingProcessInformation.java
  80. 68 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/vo/WtRVo.java
  81. 318 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/vo/WtVo.java
  82. 83 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/CommissionedInspectionMapper.java
  83. 70 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/ConsignmentMaterialMapper.java
  84. 81 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/DetectionInformationMapper.java
  85. 61 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/DetectionResultMapper.java
  86. 63 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/EntrustedInformationMapper.java
  87. 63 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/LaboratorySampleCollectionMapper.java
  88. 71 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/MaterialInformationMapper.java
  89. 61 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/ReportInformationMapper.java
  90. 73 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/SamplePrintingMapper.java
  91. 61 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/SampleTestingProcessInformationMapper.java
  92. 69 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/ICommissionedInspectionService.java
  93. 61 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IConsignmentMaterialService.java
  94. 61 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IDetectionInformationService.java
  95. 61 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IDetectionResultService.java
  96. 93 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IEntrustedInformationService.java
  97. 64 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/ILaboratorySampleCollectionService.java
  98. 70 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IMaterialInformationService.java
  99. 61 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IReportInformationService.java
  100. 76 0
      zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/ISamplePrintingService.java

+ 12 - 0
pom.xml

@@ -168,6 +168,16 @@
                 <artifactId>zkqy-custom-business</artifactId>
                 <version>3.8.5</version>
             </dependency>
+            <dependency>
+                <groupId>com.zkqy</groupId>
+                <artifactId>zkqy-laboratory-information</artifactId>
+                <version>3.8.5</version>
+            </dependency>
+            <dependency>
+                <groupId>com.zkqy</groupId>
+                <artifactId>zkqy-fujian-amichi</artifactId>
+                <version>3.8.5</version>
+            </dependency>
             <dependency>
                 <groupId>org.projectlombok</groupId>
                 <artifactId>lombok</artifactId>
@@ -198,6 +208,8 @@
         <module>zkqy-business</module>
         <module>zkqy-process-execution</module>
         <module>zkqy-custom-business</module>
+        <module>zkqy-laboratory-information</module>
+        <module>zkqy-fujian-amichi</module>
     </modules>
     <packaging>pom</packaging>
     <dependencies>

+ 10 - 0
zkqy-admin/pom.xml

@@ -67,6 +67,16 @@
             <artifactId>zkqy-custom-business</artifactId>
             <version>3.8.5</version>
         </dependency>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-laboratory-information</artifactId>
+            <version>3.8.5</version>
+        </dependency>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-fujian-amichi</artifactId>
+            <version>3.8.5</version>
+        </dependency>
         <!--谷歌的JSON转换工具GSON-->
         <dependency>
             <groupId>com.google.code.gson</groupId>

+ 4 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/common/CommonFileController.java

@@ -117,7 +117,8 @@ public class CommonFileController {
     /**
      * 通用上传请求(单个)
      */
-    @Log(title = "动态表格", businessType = BusinessType.IMPORT)
+//    @Log(title = "动态表格", businessType = BusinessType.IMPORT)
+    @Anonymous
     @PostMapping("/upload")
     public AjaxResult uploadFile(MultipartFile file) throws Exception {
         try {
@@ -140,7 +141,8 @@ public class CommonFileController {
     /**
      * 通用上传请求(多个)
      */
-    @Log(title = "动态表格", businessType = BusinessType.IMPORT)
+//    @Log(title = "动态表格", businessType = BusinessType.IMPORT)
+    @Anonymous
     @PostMapping("/uploads")
     public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception {
         try {

+ 13 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/homepagestatistics/StatisticsController.java

@@ -63,7 +63,7 @@ public class StatisticsController {
      */
     @GetMapping("/getProcessInformation")
      public AjaxResult getProcessInformation(){
-        if(SecurityUtils.getTenantId().equals("166")){
+        if(SecurityUtils.getTenantId().equals(166L)){
             //查询加弹计划
             int i1 = detailsOfTheRefuelingPlanService.selectDetailsOfTheRefuelingPlanListCount();
             int i2 = detailsOfTheRefuelingPlanSpinningService.selectDetailsOfTheRefuelingPlanSpinningListCount();
@@ -80,8 +80,19 @@ public class StatisticsController {
             listMap.add(map2);
             return AjaxResult.success(listMap);
             //纺丝+翻框+络筒
+        }else {
+            HashMap<String, String> map1 = new HashMap<>();
+            map1.put("name", "计划任务");
+            map1.put("value","0");
+            HashMap<String, String> map2 = new HashMap<>();
+            map2.put("审批任务","0");
+            map2.put("name", "审批任务");
+            map2.put("value","0");
+            List<Map> listMap=new ArrayList<>();
+            listMap.add(map1);
+            listMap.add(map2);
+            return AjaxResult.success(listMap);
         }
-        return AjaxResult.success(0);
      }
 
     /**

+ 14 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java

@@ -132,6 +132,20 @@ public class SysUserController extends BaseController {
         return ajax;
     }
 
+    /**
+     * 根据用户编号获取详细信息
+     */
+    //@PreAuthorize("@ss.hasPermi('system:user:query')")
+    @GetMapping(value = { "/userInfoAndSection/{userId}"})
+    public AjaxResult getUserInfo(@PathVariable(value = "userId", required = false) Long userId) {
+        userService.checkUserDataScope(userId);
+        AjaxResult ajax = AjaxResult.success();
+        SysUser sysUser = userService.selectUserById(userId);
+        Long deptId = sysUser.getDeptId();
+        SysDept sysDept = deptService.selectDeptById(deptId);
+        ajax.put("deptInfo",sysDept);
+        return ajax;
+    }
     /**
      * 新增用户
      */

+ 18 - 1
zkqy-business/src/main/java/com/zkqy/business/controller/MobilePageDataController.java

@@ -10,6 +10,7 @@ import com.zkqy.common.core.page.TableDataInfo;
 import com.zkqy.common.enums.BusinessType;
 
 import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,6 +47,8 @@ public class MobilePageDataController extends BaseController {
     }
 
 
+
+
     /**
      * 查询移动端数据列表
      */
@@ -54,7 +57,21 @@ public class MobilePageDataController extends BaseController {
     @ApiOperation(value = "查询当前租户的首页信息")
     public AjaxResult IndexTrue() throws JsonProcessingException {
 //        return success(mobilePageDataService.selectMobilePageDataById(id));
-        MobilePageData mobilePageData = mobilePageDataService.selectMobilePageDataIndexTrue();
+        CommonEntity commonEntity=new CommonEntity();
+        MobilePageData mobilePageData = mobilePageDataService.selectMobilePageDataIndexTrue(commonEntity);
+        return AjaxResult.success(mobilePageData);
+    }
+
+    /**
+     * 查询移动端数据列表
+     * 带条件的查询列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:data:list')")
+    @PostMapping("/getConditionsIndexTrue")
+    @ApiOperation(value = "查询当前租户的首页信息")
+    public AjaxResult IndexTrue(@RequestBody CommonEntity commonEntity) throws JsonProcessingException {
+//        return success(mobilePageDataService.selectMobilePageDataById(id));
+        MobilePageData mobilePageData = mobilePageDataService.selectMobilePageDataIndexTrue(commonEntity);
         return AjaxResult.success(mobilePageData);
     }
 

+ 118 - 0
zkqy-business/src/main/java/com/zkqy/business/controller/MobilePageTableListController.java

@@ -0,0 +1,118 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.entity.MobilePageTableList;
+import com.zkqy.business.service.IMobilePageTableListService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 页面列表Controller
+ *
+ * @author zkqy
+ * @date 2024-05-21
+ */
+@RestController
+@RequestMapping("/system/页面列表")
+@Api(value = "/system/页面列表", description = "页面列表-接口")
+public class MobilePageTableListController extends BaseController
+{
+
+    @Autowired
+    private IMobilePageTableListService mobilePageTableListService;
+
+    /**
+     * 查询页面列表列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:页面列表:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询页面列表列表")
+    public TableDataInfo list(MobilePageTableList mobilePageTableList)
+    {
+        startPage();
+        List<MobilePageTableList> list = mobilePageTableListService.selectMobilePageTableListList(mobilePageTableList);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出页面列表列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:页面列表:export')")
+    @Log(title = "页面列表", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出页面列表列表")
+    public void export(HttpServletResponse response, MobilePageTableList mobilePageTableList)
+    {
+        ObjectMapper objectMapper=new ObjectMapper();
+
+        List<MobilePageTableList> list = mobilePageTableListService.selectMobilePageTableListList(mobilePageTableList);
+        ExcelUtil<MobilePageTableList> util = new ExcelUtil<MobilePageTableList>(MobilePageTableList.class);
+        util.exportExcel(response, list, "页面列表数据");
+    }
+
+    /**
+     * 获取页面列表详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:页面列表:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取页面列表详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(mobilePageTableListService.selectMobilePageTableListById(id));
+    }
+
+    /**
+     * 新增页面列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:页面列表:add')")
+    @Log(title = "页面列表", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增页面列表")
+    public AjaxResult add(@RequestBody MobilePageTableList mobilePageTableList)
+    {
+        return toAjax(mobilePageTableListService.insertMobilePageTableList(mobilePageTableList));
+    }
+
+    /**
+     * 修改页面列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:页面列表:edit')")
+    @Log(title = "页面列表", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改页面列表")
+    public AjaxResult edit(@RequestBody MobilePageTableList mobilePageTableList)
+    {
+        return toAjax(mobilePageTableListService.updateMobilePageTableList(mobilePageTableList));
+    }
+
+    /**
+     * 删除页面列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:页面列表:remove')")
+    @Log(title = "页面列表", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除页面列表")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(mobilePageTableListService.deleteMobilePageTableListByIds(ids));
+    }
+}

+ 23 - 0
zkqy-business/src/main/java/com/zkqy/business/entity/MobilePageData.java

@@ -36,6 +36,29 @@ public class MobilePageData extends BaseEntity
     @Excel(name = "下拉框数据(1、默认数据 2、动态数据)")
     private  String selectMapValueList;
 
+    @Excel(name="是否包含列表")
+    private  String  isExistsList;
+
+    public String getIsExistsList() {
+        return isExistsList;
+    }
+
+    public void setIsExistsList(String isExistsList) {
+        this.isExistsList = isExistsList;
+    }
+
+    public MobilePageTableList mobilePageTableList;
+
+
+
+    public MobilePageTableList getMobilePageTableList() {
+        return mobilePageTableList;
+    }
+
+    public void setMobilePageTableList(MobilePageTableList mobilePageTableList) {
+        this.mobilePageTableList = mobilePageTableList;
+    }
+
     public String getFromMapDb() {
         return fromMapDb;
     }

+ 214 - 0
zkqy-business/src/main/java/com/zkqy/business/entity/MobilePageTableList.java

@@ -0,0 +1,214 @@
+package com.zkqy.business.entity;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 页面列表对象 mobile_page_table_list
+ * 
+ * @author zkqy
+ * @date 2024-05-21
+ */
+public class MobilePageTableList extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键自增 */
+    private Long id;
+
+    /** 页面id */
+    @Excel(name = "页面id")
+    private Long pageId;
+
+    /** 中文表名称 */
+    @Excel(name = "中文表名称")
+    private String tableNameDes;
+
+    /** 0:单表,1:多表 */
+    @Excel(name = "0:单表,1:多表")
+    private String isSingleTable;
+
+    /** 表名称集合 */
+    @Excel(name = "表名称集合")
+    private String tableNames;
+
+    /** 列表展示字段信息及属性 */
+    @Excel(name = "列表展示字段信息及属性")
+    private String tableColumnName;
+
+    /** 展示描述 */
+    @Excel(name = "展示描述")
+    private String tableColumnDesc;
+
+    /** 表的连接关系 */
+    @Excel(name = "表的连接关系")
+    private String tableJoin;
+
+    /** 表的查询条件 */
+    @Excel(name = "表的查询条件")
+    private String tableQueryConditions;
+
+    /** 时间范围查询 */
+    @Excel(name = "时间范围查询")
+    private String timeRangeFilters;
+
+    /** 数据排序查询 */
+    @Excel(name = "数据排序查询")
+    private String tablelistSort;
+
+    /** 列表映射数据 */
+    @Excel(name = "列表映射数据")
+    private String listMapValue;
+
+    /** 拓展字段 */
+    @Excel(name = "拓展字段")
+    private String extensions;
+
+
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setPageId(Long pageId) 
+    {
+        this.pageId = pageId;
+    }
+
+    public Long getPageId() 
+    {
+        return pageId;
+    }
+    public void setTableNameDes(String tableNameDes) 
+    {
+        this.tableNameDes = tableNameDes;
+    }
+
+    public String getTableNameDes() 
+    {
+        return tableNameDes;
+    }
+    public void setIsSingleTable(String isSingleTable) 
+    {
+        this.isSingleTable = isSingleTable;
+    }
+
+    public String getIsSingleTable() 
+    {
+        return isSingleTable;
+    }
+    public void setTableNames(String tableNames) 
+    {
+        this.tableNames = tableNames;
+    }
+
+    public String getTableNames() 
+    {
+        return tableNames;
+    }
+    public void setTableColumnName(String tableColumnName) 
+    {
+        this.tableColumnName = tableColumnName;
+    }
+
+    public String getTableColumnName() 
+    {
+        return tableColumnName;
+    }
+    public void setTableColumnDesc(String tableColumnDesc) 
+    {
+        this.tableColumnDesc = tableColumnDesc;
+    }
+
+    public String getTableColumnDesc() 
+    {
+        return tableColumnDesc;
+    }
+    public void setTableJoin(String tableJoin) 
+    {
+        this.tableJoin = tableJoin;
+    }
+
+    public String getTableJoin() 
+    {
+        return tableJoin;
+    }
+    public void setTableQueryConditions(String tableQueryConditions) 
+    {
+        this.tableQueryConditions = tableQueryConditions;
+    }
+
+    public String getTableQueryConditions() 
+    {
+        return tableQueryConditions;
+    }
+    public void setTimeRangeFilters(String timeRangeFilters) 
+    {
+        this.timeRangeFilters = timeRangeFilters;
+    }
+
+    public String getTimeRangeFilters() 
+    {
+        return timeRangeFilters;
+    }
+    public void setTablelistSort(String tablelistSort) 
+    {
+        this.tablelistSort = tablelistSort;
+    }
+
+    public String getTablelistSort() 
+    {
+        return tablelistSort;
+    }
+    public void setListMapValue(String listMapValue) 
+    {
+        this.listMapValue = listMapValue;
+    }
+
+    public String getListMapValue() 
+    {
+        return listMapValue;
+    }
+    public void setExtensions(String extensions) 
+    {
+        this.extensions = extensions;
+    }
+
+    public String getExtensions() 
+    {
+        return extensions;
+    }
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pageId", getPageId())
+            .append("tableNameDes", getTableNameDes())
+            .append("isSingleTable", getIsSingleTable())
+            .append("tableNames", getTableNames())
+            .append("tableColumnName", getTableColumnName())
+            .append("tableColumnDesc", getTableColumnDesc())
+            .append("tableJoin", getTableJoin())
+            .append("tableQueryConditions", getTableQueryConditions())
+            .append("timeRangeFilters", getTimeRangeFilters())
+            .append("tablelistSort", getTablelistSort())
+            .append("listMapValue", getListMapValue())
+            .append("extensions", getExtensions())
+            .append("createTime", getCreateTime())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("updateBy", getUpdateBy())
+            .append("updateById", getUpdateById())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 16 - 0
zkqy-business/src/main/java/com/zkqy/business/entity/vo/MobilePageDataVo.java

@@ -0,0 +1,16 @@
+package com.zkqy.business.entity.vo;
+
+import com.zkqy.business.entity.MobilePageData;
+
+public class MobilePageDataVo extends MobilePageData {
+
+    private  String  listMapValue;
+
+    public String getListMapValue() {
+        return listMapValue;
+    }
+
+    public void setListMapValue(String listMapValue) {
+        this.listMapValue = listMapValue;
+    }
+}

+ 39 - 0
zkqy-business/src/main/java/com/zkqy/business/factory/MysqlDialect.java

@@ -0,0 +1,39 @@
+package com.zkqy.business.factory;
+
+public class MysqlDialect implements SqlDialect{
+
+    /**
+     * 转义MySQL中的表名,使用反引号包围以符合MySQL的标识符规则。
+     * @param tableName 待转义的表名。
+     * @return 转义后的表名。
+     */
+    @Override
+    public String tableEscape(String tableName) {
+        return "`" + tableName + "`";
+    }
+
+    @Override
+    public String columnEscape(String columnName) {
+        return "`" + columnName + "`";
+    }
+
+    @Override
+    public String generateSelectAll(String tableName) {
+        return "SELECT * FROM " + tableEscape(tableName);
+    }
+
+    /**
+     * 根据给定的查询条件生成MySQL的WHERE子句。
+     * 简化示例假设QueryCondition有getColumnName(), getOperator(), and getValue()方法。
+     * @param condition 查询条件对象。
+     * @return 生成的WHERE子句。
+     */
+    @Override
+    public String generateWhereClause(QueryCondition condition) {
+        // 简化的实现,实际应用中需要更复杂的逻辑处理各种条件组合
+        return "WHERE " + columnEscape(condition.getColumnName()) + " "
+                + condition.getOperator() + " ?";
+        // 注意:"?"
+        // 是参数占位符,实际使用PreparedStatement时会动态绑定值,以防止SQL注入
+    }
+}

+ 20 - 0
zkqy-business/src/main/java/com/zkqy/business/factory/QueryCondition.java

@@ -0,0 +1,20 @@
+package com.zkqy.business.factory;
+
+public interface QueryCondition {
+
+    // 现有方法...
+    /**
+     * 获取条件所对应的列名。
+     *
+     * @return 列名字符串。
+     */
+    String getColumnName();
+
+    /**
+     * 获取条件所使用的比较操作符(例如 "=", ">", "<=", "LIKE" 等)。
+     *
+     * @return 操作符字符串。
+     */
+    String getOperator();
+
+}

+ 23 - 0
zkqy-business/src/main/java/com/zkqy/business/factory/SimpleQueryCondition.java

@@ -0,0 +1,23 @@
+package com.zkqy.business.factory;
+
+public class SimpleQueryCondition implements QueryCondition{
+    private final String columnName;
+    private final String operator;
+    private final Object value; // 假设值在此存储,实际应用中可能需要更复杂的类型处理
+
+    public SimpleQueryCondition(String columnName, String operator, Object value) {
+        this.columnName = columnName;
+        this.operator = operator;
+        this.value = value;
+    }
+
+    @Override
+    public String getColumnName() {
+        return columnName;
+    }
+
+    @Override
+    public String getOperator() {
+        return operator;
+    }
+}

+ 40 - 0
zkqy-business/src/main/java/com/zkqy/business/factory/SqlDialect.java

@@ -0,0 +1,40 @@
+package com.zkqy.business.factory;
+
+/**
+ * 定义了用于生成特定于数据库SQL语句的方法接口。
+ * 每个数据库(如MySQL、PostgreSQL等)都有其特定的SQL语法和特性,
+ * SqlDialect接口的实现类需针对不同的数据库提供相应的SQL生成策略。
+ */
+public interface  SqlDialect {
+
+    /**
+     * 转义表名,使其符合特定数据库的SQL语法要求。
+     * @param tableName
+     * @return
+     */
+     String tableEscape(String tableName);
+
+    /**
+     * 转义列名,使其符合特定数据库的SQL语法要求。
+     *
+     * @param columnName 待转义的原始列名。
+     * @return 转义后的列名,适配当前数据库的SQL标准。
+     */
+    String columnEscape(String columnName);
+
+    /**
+     * 生成查询所有列的SQL片段,通常用于"SELECT *"部分。
+     *
+     * @param tableName 表名,用于确定从哪个表中选择所有列。
+     * @return 完整的"SELECT *" SQL片段,可能根据数据库方言有所不同。
+     */
+    String generateSelectAll(String tableName);
+
+    /**
+     * 根据给定的查询条件生成WHERE子句。
+     *
+     * @param condition 查询条件对象,封装了比较操作符、列名和值等信息。
+     * @return 生成的WHERE子句字符串,可以直接嵌入到SQL查询中。
+     */
+    String generateWhereClause(QueryCondition condition);
+}

+ 65 - 0
zkqy-business/src/main/java/com/zkqy/business/mapper/MobilePageTableListMapper.java

@@ -0,0 +1,65 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.entity.MobilePageTableList;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 页面列表Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-05-21
+ */
+@Mapper
+public interface MobilePageTableListMapper 
+{
+    /**
+     * 查询页面列表
+     * 
+     * @param id 页面列表主键
+     * @return 页面列表
+     */
+    public MobilePageTableList selectMobilePageTableListById(Long id);
+
+
+
+    /**
+     * 查询页面列表列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 页面列表集合
+     */
+    public List<MobilePageTableList> selectMobilePageTableListList(MobilePageTableList mobilePageTableList);
+
+    /**
+     * 新增页面列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 结果
+     */
+    public int insertMobilePageTableList(MobilePageTableList mobilePageTableList);
+
+    /**
+     * 修改页面列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 结果
+     */
+    public int updateMobilePageTableList(MobilePageTableList mobilePageTableList);
+
+    /**
+     * 删除页面列表
+     * 
+     * @param id 页面列表主键
+     * @return 结果
+     */
+    public int deleteMobilePageTableListById(Long id);
+
+    /**
+     * 批量删除页面列表
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMobilePageTableListByIds(Long[] ids);
+}

+ 2 - 1
zkqy-business/src/main/java/com/zkqy/business/service/IMobilePageDataService.java

@@ -4,6 +4,7 @@ package com.zkqy.business.service;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.zkqy.business.entity.MobilePageData;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 
 import java.util.List;
 
@@ -29,7 +30,7 @@ public interface IMobilePageDataService
      * 查询首页信息
      * @return 移动端数据
      */
-    public MobilePageData selectMobilePageDataIndexTrue() throws JsonProcessingException;
+    public MobilePageData selectMobilePageDataIndexTrue(CommonEntity commonEntity) throws JsonProcessingException;
 
     /**
      * 查询移动端数据列表

+ 61 - 0
zkqy-business/src/main/java/com/zkqy/business/service/IMobilePageTableListService.java

@@ -0,0 +1,61 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.entity.MobilePageTableList;
+
+/**
+ * 页面列表Service接口
+ * 
+ * @author zkqy
+ * @date 2024-05-21
+ */
+public interface IMobilePageTableListService 
+{
+    /**
+     * 查询页面列表
+     * 
+     * @param id 页面列表主键
+     * @return 页面列表
+     */
+    public MobilePageTableList selectMobilePageTableListById(Long id);
+
+    /**
+     * 查询页面列表列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 页面列表集合
+     */
+    public List<MobilePageTableList> selectMobilePageTableListList(MobilePageTableList mobilePageTableList);
+
+    /**
+     * 新增页面列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 结果
+     */
+    public int insertMobilePageTableList(MobilePageTableList mobilePageTableList);
+
+    /**
+     * 修改页面列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 结果
+     */
+    public int updateMobilePageTableList(MobilePageTableList mobilePageTableList);
+
+    /**
+     * 批量删除页面列表
+     * 
+     * @param ids 需要删除的页面列表主键集合
+     * @return 结果
+     */
+    public int deleteMobilePageTableListByIds(Long[] ids);
+
+    /**
+     * 删除页面列表信息
+     * 
+     * @param id 页面列表主键
+     * @return 结果
+     */
+    public int deleteMobilePageTableListById(Long id);
+}

+ 337 - 55
zkqy-business/src/main/java/com/zkqy/business/service/impl/MobilePageDataServiceImpl.java

@@ -1,30 +1,32 @@
 package com.zkqy.business.service.impl;
 
 
+import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.zkqy.business.entity.MobilePageData;
+import com.zkqy.business.entity.MobilePageTableList;
 import com.zkqy.business.mapper.MobilePageDataMapper;
+import com.zkqy.business.mapper.MobilePageTableListMapper;
 import com.zkqy.business.service.IMobilePageDataService;
 import com.zkqy.common.utils.SecurityUtils;
+import com.zkqy.common.utils.StringUtils;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import com.zkqy.execution.produce.dispersed.mapper.CommonMapper;
-import com.zkqy.execution.produce.dispersed.service.impl.CommonServiceImpl;
-import net.bytebuddy.jar.asm.TypeReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 
 /**
  * 移动端数据Service业务层处理
- * 
+ *
  * @author zkqy
  * @date 2024-04-18
  */
 @Service
-public class MobilePageDataServiceImpl implements IMobilePageDataService
-{
+public class MobilePageDataServiceImpl implements IMobilePageDataService {
 
     @Autowired
     private MobilePageDataMapper mobilePageDataMapper;
@@ -32,9 +34,12 @@ public class MobilePageDataServiceImpl implements IMobilePageDataService
     @Autowired
     private CommonMapper commonMapper;
 
+    @Autowired
+    private MobilePageTableListMapper mobilePageTableListMapper;
+
     /**
      * 查询移动端数据
-     * 
+     *
      * @param id 移动端数据主键
      * @return 移动端数据
      */
@@ -46,48 +51,48 @@ public class MobilePageDataServiceImpl implements IMobilePageDataService
         MobilePageData mobilePageData = mobilePageDataMapper.selectMobilePageDataById(id);
         //下拉框限定的数据查询
         String selectQualifiedField = mobilePageData.getSelectQualifiedField();
-        List<Map<String,String>> selectQualifiedFieldListMap=objectMapper.readValue(selectQualifiedField, List.class);
+        List<Map<String, String>> selectQualifiedFieldListMap = objectMapper.readValue(selectQualifiedField, List.class);
         //存下拉框回显数据的值
         String selectMapValueList = mobilePageData.getSelectMapValueList();
         //new 一个hashMap对象放数据 "{"下拉框数据key":[{"lable","111111,value":"2222"}]}"
-        HashMap<String,Object> stringObjectHashMap=new HashMap<>();
+        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
         //循环映射条件
-        selectQualifiedFieldListMap.forEach(item->{
+        selectQualifiedFieldListMap.forEach(item -> {
             String tableName = item.get("tableName");
             String label = item.get("label");
-            String value=item.get("label");
+            String value = item.get("label");
             try {
-                List<Map<String,Object>>  queryCondition= objectMapper.readValue(item.get("queryCondition"), List.class);
+                List<Map<String, Object>> queryCondition = objectMapper.readValue(item.get("queryCondition"), List.class);
                 HashMap<String, Object> objectObjectHashMap = new HashMap<>();
                 //有默认的用户信息值,就替换掉
-                queryCondition.forEach(k->{
-                    k.forEach((key,vl)->{
-                        if(key.equals("#{userId}")){
-                            objectObjectHashMap.put(key,SecurityUtils.getUserId().toString());
-                        }else {
-                            objectObjectHashMap.put(key,vl);
+                queryCondition.forEach(k -> {
+                    k.forEach((key, vl) -> {
+                        if (key.equals("#{userId}")) {
+                            objectObjectHashMap.put(key, SecurityUtils.getUserId().toString());
+                        } else {
+                            objectObjectHashMap.put(key, vl);
                         }
                     });
                 });
                 //查询下拉框数据值
                 List<Map<String, Object>> maps = commonMapper.selectDropDownList(tableName, label, value, objectObjectHashMap);
-              //建立数据key和下拉框数据的对应关系
-              stringObjectHashMap.put(item.get("selectDataKey").toString(),maps);
+                //建立数据key和下拉框数据的对应关系
+                stringObjectHashMap.put(item.get("selectDataKey").toString(), maps);
             } catch (JsonProcessingException e) {
                 throw new RuntimeException(e);
             }
         });
         //证明以前有默认数据
-        if(selectMapValueList!=null&&selectMapValueList!=""){
+        if (selectMapValueList != null && selectMapValueList != "") {
             //默认数据转map
-            Map<String,Object>  defaultJson= objectMapper.readValue(selectMapValueList, Map.class);
+            Map<String, Object> defaultJson = objectMapper.readValue(selectMapValueList, Map.class);
             //查询出来的默认数据所用字段赋值为空
             mobilePageData.setSelectMapValueList("");
             //把默认数据往数据map里面堆
             stringObjectHashMap.putAll(defaultJson);
             //从新设置下拉框数据信息字段(这字段包含所有的下拉框数据)
             mobilePageData.setSelectMapValueList(objectMapper.writeValueAsString(stringObjectHashMap));//mao对象转json放入到字段中
-        }else {
+        } else {
             //直接放数据不存在默认数据
             mobilePageData.setSelectMapValueList(objectMapper.writeValueAsString(stringObjectHashMap));//mao对象转json放入到字段中
         }
@@ -95,39 +100,39 @@ public class MobilePageDataServiceImpl implements IMobilePageDataService
     }
 
     @Override
-    public MobilePageData selectMobilePageDataIndexTrue() throws JsonProcessingException {
+    public MobilePageData selectMobilePageDataIndexTrue(CommonEntity commonEntity) throws JsonProcessingException {
         //JSON转换器
         ObjectMapper objectMapper = new ObjectMapper();
         //查询出来的总体数据
         MobilePageData mobilePageData = mobilePageDataMapper.selectMobilePageDataIndexTrue();
         //new 一个hashMap对象放数据 "{"下拉框数据key":[{"lable","111111,value":"2222"}]}"
-        HashMap<String,Object> stringObjectHashMap=new HashMap<>();
+        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
         //下拉框限定的数据查询
-        if(mobilePageData.getSelectQualifiedField()!=null&&mobilePageData.getSelectQualifiedField()!=""){
+        if (mobilePageData.getSelectQualifiedField() != null && mobilePageData.getSelectQualifiedField() != "") {
             String selectQualifiedField = mobilePageData.getSelectQualifiedField();
-            List<Map<String,String>> selectQualifiedFieldListMap=objectMapper.readValue(selectQualifiedField, List.class);
+            List<Map<String, String>> selectQualifiedFieldListMap = objectMapper.readValue(selectQualifiedField, List.class);
             //循环映射条件
-            selectQualifiedFieldListMap.forEach(item->{
+            selectQualifiedFieldListMap.forEach(item -> {
                 String tableName = item.get("tableName");
                 String label = item.get("label");
-                String value=item.get("value");
+                String value = item.get("value");
                 try {
-                    List<Map<String,Object>>  queryCondition= objectMapper.readValue(item.get("queryCondition"), List.class);
+                    List<Map<String, Object>> queryCondition = objectMapper.readValue(item.get("queryCondition"), List.class);
                     HashMap<String, Object> objectObjectHashMap = new HashMap<>();
                     //有默认的用户信息值,就替换掉
-                    queryCondition.forEach(k->{
-                        k.forEach((key,vl)->{
-                            if(key.equals("#{userId}")){
-                                objectObjectHashMap.put(key,SecurityUtils.getUserId().toString());
-                            }else {
-                                objectObjectHashMap.put(key,vl);
+                    queryCondition.forEach(k -> {
+                        k.forEach((key, vl) -> {
+                            if (key.equals("#{userId}")) {
+                                objectObjectHashMap.put(key, SecurityUtils.getUserId().toString());
+                            } else {
+                                objectObjectHashMap.put(key, vl);
                             }
                         });
                     });
                     //查询下拉框数据值
                     List<Map<String, Object>> maps = commonMapper.selectDropDownList(tableName, label, value, objectObjectHashMap);
                     //建立数据key和下拉框数据的对应关系
-                    stringObjectHashMap.put(item.get("selectDataKey").toString(),maps);
+                    stringObjectHashMap.put(item.get("selectDataKey").toString(), maps);
                 } catch (JsonProcessingException e) {
                     throw new RuntimeException(e);
                 }
@@ -136,79 +141,356 @@ public class MobilePageDataServiceImpl implements IMobilePageDataService
         //存下拉框回显数据的值
         String selectMapValueList = mobilePageData.getSelectMapValueList();
         //证明以前有默认数据
-        if(selectMapValueList!=null&&selectMapValueList!=""){
+        if (selectMapValueList != null && selectMapValueList != "") {
             //默认数据转map
-            Map<String,Object>  defaultJson= objectMapper.readValue(selectMapValueList, Map.class);
+            Map<String, Object> defaultJson = objectMapper.readValue(selectMapValueList, Map.class);
             //查询出来的默认数据所用字段赋值为空
             mobilePageData.setSelectMapValueList("");
             //把默认数据往数据map里面堆
             stringObjectHashMap.putAll(defaultJson);
             //从新设置下拉框数据信息字段(这字段包含所有的下拉框数据)
             mobilePageData.setSelectMapValueList(objectMapper.writeValueAsString(stringObjectHashMap));//mao对象转json放入到字段中
-        }else {
+        } else {
             //直接放数据不存在默认数据
             mobilePageData.setSelectMapValueList(objectMapper.writeValueAsString(stringObjectHashMap));//mao对象转json放入到字段中
         }
+        //等于0包含列表 等于1不包含列表
+        if (mobilePageData.getIsExistsList().equals("true")) {
+            //存在列表信息(未来一个页面上可能会有好多个list)
+            MobilePageTableList mobilePageTableList = this.getMobilePageTableList(mobilePageData.getId().toString(),commonEntity);
+            mobilePageData.setMobilePageTableList(mobilePageTableList);
+        }
         return mobilePageData;
     }
 
+    /**
+     * 查询移动端列表信息
+     */
+    private MobilePageTableList getMobilePageTableList(String pageId,CommonEntity commonEntity) throws JsonProcessingException {
+        //JSON转换器
+        ObjectMapper objectMapper = new ObjectMapper();
+        //得到列表信息
+        MobilePageTableList mobilePageTableList = mobilePageTableListMapper.selectMobilePageTableListById(Long.valueOf(pageId));
+        //表名信息([{tableName:"studnet",asName:"stu",isMain:"true"},{"tableName":"greade",asName:"gr",isMain:"true"}])
+        String tableNames = mobilePageTableList.getTableNames();
+        //json解构成数组
+        List<HashMap<String, String>> tableNameList = objectMapper.readValue(tableNames, List.class);
+        //判断表的类型(0:单表,1:多表)
+        if (mobilePageTableList.getIsSingleTable().equals("0")) { //0、单表
+            HashMap<String, String> stringHashMap = tableNameList.get(0);
+            //得到表名
+            String tableName = stringHashMap.get("tableAsName");
+            //得到列信息
+            String tableColumnName = mobilePageTableList.getTableColumnName();
+            List<HashMap<String, String>> tableColumnNamelist = objectMapper.readValue(tableColumnName, List.class);
+            //fieldList
+            List<String> fieldList = new ArrayList<>();
+            //记录需要格式化的列数据
+            HashMap<String, String> formatting = new HashMap<>();
+            //表列信息循环
+            tableColumnNamelist.forEach(item -> {
+                //处理日期属性问题
+                String columnAttribute = item.get("column_attribute");
+                if (StringUtils.isNotEmpty(columnAttribute)) {
+                    try {
+                        Map<String, Object> columnAttributeMap = objectMapper.readValue(columnAttribute, Map.class);
+                        boolean containsKey = columnAttributeMap.containsKey("dateFormat");//是否包含
+                        boolean isDateColumn = (boolean) columnAttributeMap.get("isDateColumn");//判断是否是日志字段?
+                        if (containsKey && isDateColumn) {
+                            formatting.put(item.get("fieldAsName"), columnAttributeMap.get("dateFormat").toString()); //k=as 字段名->V=formattingValue
+                        }
+                    } catch (JsonProcessingException e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+                StringBuffer sb = new StringBuffer();
+                //处理日期格式化的问题--存在日器格式化的于日期格式化的map里
+                if (formatting.containsKey(item.get("fieldAsName"))) {
+                    String formattingValue = formatting.get(item.get("fieldAsName"));//格式化类型
+                    if (formattingValue.equals("yyyy-MM-dd")) {
+                        //SELECT DATE_FORMAT(now(), "%Y-%m-%d" )
+                        //一般的sql语句-:表名称.列名 as 对应的表名 DATE_FORMAT "%Y-%m-%d"|yyyy-MM-dd
+                        StringBuffer fieldAppendString = sb.append("DATE_FORMAT(").append(item.get("tbname") + "." + item.get("fieldName")).append(",'").append("%Y-%m-%d").append("')")
+                                .append(" as ").append(item.get("fieldAsName"));
+                        fieldList.add(fieldAppendString.toString());
+                    } else if (formattingValue.equals("yyyy-MM-dd hh:mm:ss")||formattingValue.equals("yyyy-MM-dd HH:mm:ss")) {
+                        //SELECT DATE_FORMAT(now(), "%Y-%m-%d %H:%i:%s" )
+                        //一般的sql语句-:表名称.列名 as 对应的表名 DATE_FORMAT "%Y-%m-%d %H:%i:%s"|yyyy-MM-dd HH:mm:ss
+                        StringBuffer fieldAppendString = sb.append("DATE_FORMAT(").append(item.get("tbname") + "." + item.get("fieldName")).append(",'").append("%Y-%m-%d %H:%i:%s").append("')")
+                                .append(" as ").append(item.get("fieldAsName"));
+                        fieldList.add(fieldAppendString.toString());
+                    }
+                } else {
+                    //如果不存在证明就不是日期类型的字符串
+                    StringBuffer fieldAppendString = sb.append(item.get("fieldName")).append(" as ").append(item.get("fieldAsName"));
+                    fieldList.add(fieldAppendString.toString());
+                }
+            });
+            //处理条件 默认值0、输入值:1,系统值2
+            String tableQueryConditions = mobilePageTableList.getTableQueryConditions();
+            //解析json([{fieldName:"tbname.fieldName":value:"xxx","operator": "eq",type:"0",},
+            //         {fieldName:"tbname.fieldName":value:"#{x}","operator": "eq",type:"1"},
+            //         {fieldName:"tbname.fieldName":value:"#{userID}","operator": "eq",type:"2"}])
+            List<HashMap<String, String>> tableQueryConditionsList = objectMapper.readValue(tableQueryConditions, List.class);
+            //转成对象包对象 {"key":"{fieldName:"tbname.fieldName":value:"xxx","operator": "eq",type:"0",}"}
+            HashMap<String, HashMap<String, String>> filedKMapValue = new HashMap();
+            //需要处理的默认值和系统值
+            List<String> conditionStringList = new ArrayList<>();
+            tableQueryConditionsList.forEach(item -> {
+                //方便参数映射条件查询
+                filedKMapValue.put(item.get("fieldName"), item);
+                //处理默认值,和系统值
+                String type = item.get("type");
+                if (type.equals("0")) {//默认值处理
+                    conditionStringList.add(item.get("fieldName") + item.get("operator") + "'" + item.get("value") + "'");
+                }
+                if (type.equals("2")) {//系统值
+                    if (item.get("value").equals("#{userId}")){
+                        conditionStringList.add(item.get("fieldName") + item.get("operator") + SecurityUtils.getUserId());
+                    }
+                }
+            });
+            //先写死条件后期改造为传递参数的的   @RequestBody CommonEntity commonEntity
+//            CommonEntity common = new CommonEntity();
+            Map<String, Object> queryMap = commonEntity.getQueryMap();
+
+            //找到你传过来的条件
+            queryMap.forEach((k, v) -> {
+                HashMap<String, String> conditionMap = filedKMapValue.get(k);
+                conditionStringList.add(conditionMap.get("fieldName") + conditionMap.get("operator") + v);
+            });
+            //调用查询mapper[{别名:"数据"},{}]
+            List<HashMap<String, String>> commonEntities = commonMapper.mobileSelectList(tableName, fieldList, conditionStringList);
+            //封装展示描述
+//            String tableColumnDesc = mobilePageTableList.getTableColumnDesc();
+//            List<HashMap<String, String>> tableNamesDesMap = objectMapper.readValue(tableColumnDesc, List.class);
+//            //存描述信息的map
+//            HashMap<String, String> desName = new HashMap<>();
+//            //列描述对应map
+//            tableNamesDesMap.stream().parallel().forEach(item -> {
+//                desName.put(item.get("column"), item.get("columnDes"));
+//            });
+            //返回信息map
+            String listMapValue = mobilePageTableList.getListMapValue();
+            Map<String, Object> resultMap = objectMapper.readValue(listMapValue, Map.class);
+            resultMap.forEach((k, v) -> {
+                if (v.equals(tableName)) {
+                    resultMap.put(k, commonEntities);
+                }
+            });
+            //根据规则查询出来的数据信息
+            mobilePageTableList.setListMapValue(JSONObject.toJSONString(resultMap));
+            return mobilePageTableList;
+        } else if (mobilePageTableList.getIsSingleTable().equals("1")) {
+            //记录需要格式化的列数据--map
+            HashMap<String, String> formatting = new HashMap<>();
+
+            //最终查询用到的列信息: fieldList
+            List<String> fieldList = new ArrayList<>();
+
+            //转成对象包对象 {"key":"{fieldName:"tbname.fieldName":value:"xxx","operator": "eq",type:"0",}"}
+            HashMap<String, HashMap<String, String>> filedKMapValue = new HashMap();
+
+            //需要处理的默认值和系统值
+            List<String> conditionStringList = new ArrayList<>();
+
+            //存JoinOnString
+            List<String> strings=new ArrayList<>();
+
+            //取主表名称
+            AtomicReference<String> mainTable = new AtomicReference<>("");
+            //多表要循环
+            tableNameList.forEach(item -> {
+                //判断当前表是否为主表
+                if (item.get("isMain").equals("true")) {
+                    mainTable.set(item.get("tableName"));
+                }
+            });
+
+            //处理查询列信息
+            //得到所有的列信息
+            String tableColumnName = mobilePageTableList.getTableColumnName();
+            //转换为一个列集合
+            List<HashMap<String, String>> tableColumnNamelist = objectMapper.readValue(tableColumnName, List.class);
+            //循环
+            tableColumnNamelist.forEach(item -> {
+                //处理日期属性问题
+                String columnAttribute = item.get("column_attribute");
+                //判断当前字段的的属性是否为空
+                if (StringUtils.isNotEmpty(columnAttribute)) {
+                    try {
+                        //得到属性map: {"isDateColumn":"false","dateFormat":"格式化格式","yyyy-MM-ddd",isshwo:"falsle"}
+                        Map<String, Object> columnAttributeMap = objectMapper.readValue(columnAttribute, Map.class);
+                        //是否包含当前字段的格式化规格信息
+                        boolean containsKey = columnAttributeMap.containsKey("dateFormat");//是否包含
+                        //是否是日期字段
+                        boolean isDateColumn = (boolean) columnAttributeMap.get("isDateColumn");//判断是否是日志字段?
+                        //containsKey: (true:包含||false:不包含)   containsKey: (true:是||false:不是)
+                        if (containsKey && isDateColumn) {
+                            formatting.put(item.get("fieldAsName"), columnAttributeMap.get("dateFormat").toString()); //k=as 字段名->V=formattingValue
+                        }
+                    } catch (JsonProcessingException e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+                //拼接需要查询的字段信息(线程安全的)
+                StringBuffer sb = new StringBuffer();
+                //处理日期格式化的问题--存在日器格式化的于日期格式化的map里
+                if (formatting.containsKey(item.get("fieldAsName"))) {
+                    String formattingValue = formatting.get("fieldAsName");//格式化类型
+                    if (formattingValue.equals("yyyy-MM-dd")) {
+                        //SELECT DATE_FORMAT(now(), "%Y-%m-%d" )
+                        //一般的sql语句-:表名称.列名 as 对应的表名 DATE_FORMAT "%Y-%m-%d"|yyyy-MM-dd
+                        StringBuffer fieldAppendString = sb.append("DATE_FORMAT(").append(item.get("tbname") + "." + item.get("fieldName")).append(",'").append("%Y-%m-%d").append("')")
+                                .append(" as ").append(item.get("fieldAsName"));
+                        fieldList.add(fieldAppendString.toString());
+                    } else if (formattingValue.equals("yyyy-MM-dd HH:mm:ss")) {
+                        //SELECT DATE_FORMAT(now(), "%Y-%m-%d %H:%i:%s" )
+                        //一般的sql语句-:表名称.列名 as 对应的表名 DATE_FORMAT "%Y-%m-%d %H:%i:%s"|yyyy-MM-dd HH:mm:ss
+                        StringBuffer fieldAppendString = sb.append("DATE_FORMAT(").append(item.get("tbname") + "." + item.get("fieldName")).append(",'").append("%Y-%m-%d %H:%i:%s").append("')")
+                                .append(" as ").append(item.get("fieldAsName"));
+                        fieldList.add(fieldAppendString.toString());
+                    }
+                } else {
+                    //如果不存在证明就不是日期类型的字符串
+                    StringBuffer fieldAppendString = sb.append(item.get("fieldName")).append(" as ").append(item.get("fieldAsName"));
+                    fieldList.add(fieldAppendString.toString());
+                }
+            });
+            //处理连表
+            String tableJoin = mobilePageTableList.getTableJoin();
+            //从表[{mainTable:{"tableName":"a1","tableAsName":"asA1"},"joinType":"left join","subTable:{"tableName":"a1","tableAsName":"asA1"},onWhere:["asA1.字段名"]}]
+            List<HashMap<String, String>> tableJoinList = objectMapper.readValue(tableJoin, List.class);
+            tableJoinList.forEach(item->{
+                try {
+                    //取mainTable属性
+                    String mainTable1 = item.get("mainTable");
+                    //主表转map属性
+                    HashMap<String, String> stringHashMap1 = objectMapper.readValue(mainTable1, HashMap.class);
+                    //取mainTable属性
+                    String subTable1 = item.get("subTable");
+                    //主表转map属性
+                    HashMap<String, String> stringHashMap2 = objectMapper.readValue(subTable1, HashMap.class);
+                    //拼 left JOIN sale_order as so ON sp.sale_order_no = so.sale_no
+                    //当前表的关联方式
+                    String joinType = item.get("joinType");
+                    //on的关联条件
+                    String onWhere = item.get("onWhere");
+                    //onWhereList集合信息
+                    List<String> onWhereString = objectMapper.readValue(onWhere, List.class);
+                    //当前
+                    StringBuffer stringBuffer=new StringBuffer();
+                    //连表语句中只可能存在一个主表信息(构建主体sql语句)--当前构建的是从表信息
+                    stringBuffer.append(joinType).append(stringHashMap2.get("tableName")).append(" as ").append("tableAsName")
+                            .append("on").append(onWhereString.get(0));
+                    //所有的 left JOIN sale_order as so ON sp.sale_order_no = so.sale_no 都添加到一个集合里了
+                    strings.add(stringBuffer.toString());
+                } catch (JsonProcessingException e) {
+                    throw new RuntimeException(e);
+                }
+            });
+            //处理查询条件的问题
+            //条件类型-默认值type=0、输入值:type=1,系统值:type=2
+            String tableQueryConditions = mobilePageTableList.getTableQueryConditions();
+            //解析json[{fieldName:"tbname.fieldName":value:"xxx","operator": "eq",type:"0",},{fieldName:"tbname.fieldName":value:"#{x}","operator": "eq",type:"1"},
+            //        {fieldName:"tbname.fieldName":value:"#{userID}","operator": "eq",type:"2"}]) 备注: 查询条件用了别名就必须用别名点列名才可以
+            List<HashMap<String, String>> tableQueryConditionsList = objectMapper.readValue(tableQueryConditions, List.class);
+            //循环查询条件
+            tableQueryConditionsList.forEach(item -> {
+                //方便参数映射条件查询(字段名作为Key,当前字段信息作为值)
+                filedKMapValue.put(item.get("fieldName"), item); //现在fieldName=表名称.列名
+                //处理默认值,和系统值
+                Integer type = Integer.valueOf(item.get("type"));
+                if (type.equals("0")) {//逻辑删除条件的处理
+                    conditionStringList.add(item.get("fieldName") + item.get("operator") + "'" + item.get("value") + "'");
+                }
+                if (type.equals("2")) {//系统user值
+                    if (item.get("value").equals("#{userId}")) {
+                        conditionStringList.add(item.get("fieldName") + item.get("operator") + SecurityUtils.getUserId());
+                    }
+                }
+            });
+            //先写死条件后期改造为传递参数的的   @RequestBody CommonEntity commonEntity
+            CommonEntity common = new CommonEntity();
+            //得到前端的输入值
+            Map<String, Object> queryMap = common.getQueryMap();
+            //找到你传过来的条件
+            queryMap.forEach((k, v) -> {
+                HashMap<String, String> conditionMap = filedKMapValue.get(k);
+                conditionStringList.add(conditionMap.get("fieldName") + conditionMap.get("operator") + v);
+            });
+            //拼接执行对应的SQL
+            List<HashMap<String, String>> commonEntities = commonMapper.mobileSelectListJoin(mainTable.get(), fieldList, strings, conditionStringList);
+            //封装展示描述
+//          String tableColumnDesc = mobilePageTableList.getTableColumnDesc();
+//          List<HashMap<String, String>> tableNamesDesMap = objectMapper.readValue(tableColumnDesc, List.class);
+            //返回信息map
+            String listMapValue = mobilePageTableList.getListMapValue();
+            Map<String, Object> resultMap = objectMapper.readValue(listMapValue, Map.class);
+            resultMap.forEach((k, v) -> {
+                if (v.equals(mainTable.get())) {
+                    resultMap.put(k, commonEntities);
+                }
+            });
+            //根据规则查询出来的数据信息
+            mobilePageTableList.setListMapValue(JSONObject.toJSONString(resultMap));
+            return mobilePageTableList;
+        }
+        return null;
+    }
+
     /**
      * 查询移动端数据列表
-     * 
+     *
      * @param mobilePageData 移动端数据
      * @return 移动端数据
      */
     @Override
-    public List<MobilePageData> selectMobilePageDataList(MobilePageData mobilePageData)
-    {
+    public List<MobilePageData> selectMobilePageDataList(MobilePageData mobilePageData) {
         return mobilePageDataMapper.selectMobilePageDataList(mobilePageData);
     }
 
     /**
      * 新增移动端数据
-     * 
+     *
      * @param mobilePageData 移动端数据
      * @return 结果
      */
     @Override
-    public int insertMobilePageData(MobilePageData mobilePageData)
-    {
+    public int insertMobilePageData(MobilePageData mobilePageData) {
         return mobilePageDataMapper.insertMobilePageData(mobilePageData);
     }
 
     /**
      * 修改移动端数据
-     * 
+     *
      * @param mobilePageData 移动端数据
      * @return 结果
      */
     @Override
-    public int updateMobilePageData(MobilePageData mobilePageData)
-    {
+    public int updateMobilePageData(MobilePageData mobilePageData) {
         return mobilePageDataMapper.updateMobilePageData(mobilePageData);
     }
 
     /**
      * 批量删除移动端数据
-     * 
+     *
      * @param ids 需要删除的移动端数据主键
      * @return 结果
      */
     @Override
-    public int deleteMobilePageDataByIds(Long[] ids)
-    {
+    public int deleteMobilePageDataByIds(Long[] ids) {
         return mobilePageDataMapper.deleteMobilePageDataByIds(ids);
     }
 
     /**
      * 删除移动端数据信息
-     * 
+     *
      * @param id 移动端数据主键
      * @return 结果
      */
     @Override
-    public int deleteMobilePageDataById(Long id)
-    {
+    public int deleteMobilePageDataById(Long id) {
         return mobilePageDataMapper.deleteMobilePageDataById(id);
     }
 

+ 96 - 0
zkqy-business/src/main/java/com/zkqy/business/service/impl/MobilePageTableListServiceImpl.java

@@ -0,0 +1,96 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.MobilePageTableListMapper;
+import com.zkqy.business.entity.MobilePageTableList;
+import com.zkqy.business.service.IMobilePageTableListService;
+
+/**
+ * 页面列表Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-05-21
+ */
+@Service
+public class MobilePageTableListServiceImpl implements IMobilePageTableListService 
+{
+    @Autowired
+    private MobilePageTableListMapper mobilePageTableListMapper;
+
+    /**
+     * 查询页面列表
+     * 
+     * @param id 页面列表主键
+     * @return 页面列表
+     */
+    @Override
+    public MobilePageTableList selectMobilePageTableListById(Long id)
+    {
+        return mobilePageTableListMapper.selectMobilePageTableListById(id);
+    }
+
+    /**
+     * 查询页面列表列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 页面列表
+     */
+    @Override
+    public List<MobilePageTableList> selectMobilePageTableListList(MobilePageTableList mobilePageTableList)
+    {
+        return mobilePageTableListMapper.selectMobilePageTableListList(mobilePageTableList);
+    }
+
+    /**
+     * 新增页面列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 结果
+     */
+    @Override
+    public int insertMobilePageTableList(MobilePageTableList mobilePageTableList)
+    {
+        mobilePageTableList.setCreateTime(DateUtils.getNowDate());
+        return mobilePageTableListMapper.insertMobilePageTableList(mobilePageTableList);
+    }
+
+    /**
+     * 修改页面列表
+     * 
+     * @param mobilePageTableList 页面列表
+     * @return 结果
+     */
+    @Override
+    public int updateMobilePageTableList(MobilePageTableList mobilePageTableList)
+    {
+        mobilePageTableList.setUpdateTime(DateUtils.getNowDate());
+        return mobilePageTableListMapper.updateMobilePageTableList(mobilePageTableList);
+    }
+
+    /**
+     * 批量删除页面列表
+     * 
+     * @param ids 需要删除的页面列表主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMobilePageTableListByIds(Long[] ids)
+    {
+        return mobilePageTableListMapper.deleteMobilePageTableListByIds(ids);
+    }
+
+    /**
+     * 删除页面列表信息
+     * 
+     * @param id 页面列表主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMobilePageTableListById(Long id)
+    {
+        return mobilePageTableListMapper.deleteMobilePageTableListById(id);
+    }
+}

+ 2 - 1
zkqy-business/src/main/resources/mapper/dragmapper/MobilePageDataMapper.xml

@@ -12,10 +12,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="fromMapDb"    column="from_map_db"    />
         <result property="selectQualifiedField"    column="select_qualified_field"    />
         <result property="selectMapValueList"    column="select_map_value_list"    />
+        <result property="isExistsList"    column="is_exists_list"    />
     </resultMap>
 
     <sql id="selectMobilePageDataVo">
-        select id, name, pageJson,isIndex,from_map_db,select_qualified_field,select_map_value_list from {DBNAME}.mobile_page_data
+        select id, name, pageJson,isIndex,from_map_db,select_qualified_field,select_map_value_list,is_exists_list from {DBNAME}.mobile_page_data
     </sql>
 
     <select id="selectMobilePageDataList" parameterType="com.zkqy.business.entity.MobilePageData" resultMap="MobilePageDataResult">

+ 139 - 0
zkqy-business/src/main/resources/mapper/dragmapper/MobilePageTableListMapper.xml

@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.business.mapper.MobilePageTableListMapper">
+    
+    <resultMap type="com.zkqy.business.entity.MobilePageTableList" id="MobilePageTableListResult">
+        <result property="id"    column="id"    />
+        <result property="pageId"    column="page_id"    />
+        <result property="tableNameDes"    column="table_name_des"    />
+        <result property="isSingleTable"    column="is_single_table"    />
+        <result property="tableNames"    column="table_names"    />
+        <result property="tableColumnName"    column="table_column_name"    />
+        <result property="tableColumnDesc"    column="table_column_desc"    />
+        <result property="tableJoin"    column="table_join"    />
+        <result property="tableQueryConditions"    column="table_query_conditions"    />
+        <result property="timeRangeFilters"    column="time_range_filters"    />
+        <result property="tablelistSort"    column="tablelist_sort"    />
+        <result property="listMapValue"    column="list_map_value"    />
+        <result property="extensions"    column="extensions"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectMobilePageTableListVo">
+        select id, page_id, table_name_des, is_single_table, table_names, table_column_name, table_column_desc, table_join, table_query_conditions, time_range_filters, tablelist_sort, list_map_value, extensions, create_time, create_by_id, create_by, update_by, update_by_id, update_time from {DBNAME}.mobile_page_table_list
+    </sql>
+
+    <select id="selectMobilePageTableListList" parameterType="com.zkqy.business.entity.MobilePageTableList" resultMap="MobilePageTableListResult">
+        <include refid="selectMobilePageTableListVo"/>
+        <where>  
+            <if test="pageId != null "> and page_id = #{pageId}</if>
+            <if test="tableNameDes != null  and tableNameDes != ''"> and table_name_des = #{tableNameDes}</if>
+            <if test="isSingleTable != null  and isSingleTable != ''"> and is_single_table = #{isSingleTable}</if>
+            <if test="tableNames != null  and tableNames != ''"> and table_names = #{tableNames}</if>
+            <if test="tableColumnName != null  and tableColumnName != ''"> and table_column_name like concat('%', #{tableColumnName}, '%')</if>
+            <if test="tableColumnDesc != null  and tableColumnDesc != ''"> and table_column_desc = #{tableColumnDesc}</if>
+            <if test="tableJoin != null  and tableJoin != ''"> and table_join = #{tableJoin}</if>
+            <if test="tableQueryConditions != null  and tableQueryConditions != ''"> and table_query_conditions = #{tableQueryConditions}</if>
+            <if test="timeRangeFilters != null  and timeRangeFilters != ''"> and time_range_filters = #{timeRangeFilters}</if>
+            <if test="tablelistSort != null  and tablelistSort != ''"> and tablelist_sort = #{tablelistSort}</if>
+            <if test="listMapValue != null  and listMapValue != ''"> and list_map_value = #{listMapValue}</if>
+            <if test="extensions != null  and extensions != ''"> and extensions = #{extensions}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+        </where>
+    </select>
+    
+    <select id="selectMobilePageTableListById" parameterType="Long" resultMap="MobilePageTableListResult">
+        <include refid="selectMobilePageTableListVo"/>
+        where page_id = #{id}
+    </select>
+        
+    <insert id="insertMobilePageTableList" parameterType="com.zkqy.business.entity.MobilePageTableList">
+        insert into  {DBNAME}.mobile_page_table_list
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pageId != null">page_id,</if>
+            <if test="tableNameDes != null">table_name_des,</if>
+            <if test="isSingleTable != null">is_single_table,</if>
+            <if test="tableNames != null">table_names,</if>
+            <if test="tableColumnName != null">table_column_name,</if>
+            <if test="tableColumnDesc != null">table_column_desc,</if>
+            <if test="tableJoin != null">table_join,</if>
+            <if test="tableQueryConditions != null">table_query_conditions,</if>
+            <if test="timeRangeFilters != null">time_range_filters,</if>
+            <if test="tablelistSort != null">tablelist_sort,</if>
+            <if test="listMapValue != null">list_map_value,</if>
+            <if test="extensions != null">extensions,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pageId != null">#{pageId},</if>
+            <if test="tableNameDes != null">#{tableNameDes},</if>
+            <if test="isSingleTable != null">#{isSingleTable},</if>
+            <if test="tableNames != null">#{tableNames},</if>
+            <if test="tableColumnName != null">#{tableColumnName},</if>
+            <if test="tableColumnDesc != null">#{tableColumnDesc},</if>
+            <if test="tableJoin != null">#{tableJoin},</if>
+            <if test="tableQueryConditions != null">#{tableQueryConditions},</if>
+            <if test="timeRangeFilters != null">#{timeRangeFilters},</if>
+            <if test="tablelistSort != null">#{tablelistSort},</if>
+            <if test="listMapValue != null">#{listMapValue},</if>
+            <if test="extensions != null">#{extensions},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateMobilePageTableList" parameterType="com.zkqy.business.entity.MobilePageTableList">
+        update  {DBNAME}.mobile_page_table_list
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pageId != null">page_id = #{pageId},</if>
+            <if test="tableNameDes != null">table_name_des = #{tableNameDes},</if>
+            <if test="isSingleTable != null">is_single_table = #{isSingleTable},</if>
+            <if test="tableNames != null">table_names = #{tableNames},</if>
+            <if test="tableColumnName != null">table_column_name = #{tableColumnName},</if>
+            <if test="tableColumnDesc != null">table_column_desc = #{tableColumnDesc},</if>
+            <if test="tableJoin != null">table_join = #{tableJoin},</if>
+            <if test="tableQueryConditions != null">table_query_conditions = #{tableQueryConditions},</if>
+            <if test="timeRangeFilters != null">time_range_filters = #{timeRangeFilters},</if>
+            <if test="tablelistSort != null">tablelist_sort = #{tablelistSort},</if>
+            <if test="listMapValue != null">list_map_value = #{listMapValue},</if>
+            <if test="extensions != null">extensions = #{extensions},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteMobilePageTableListById" parameterType="Long">
+        delete from  {DBNAME}.mobile_page_table_list where id = #{id}
+    </delete>
+
+    <delete id="deleteMobilePageTableListByIds" parameterType="String">
+        delete from  {DBNAME}.mobile_page_table_list where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 0 - 1
zkqy-custom-business/pom.xml

@@ -17,7 +17,6 @@
             <groupId>com.zkqy</groupId>
             <artifactId>zkqy-framework</artifactId>
         </dependency>
-
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>easyexcel</artifactId>

+ 1 - 1
zkqy-custom-business/src/main/resources/mapper/business/DetailsOfTheRefuelingPlanSpinningMapper.xml

@@ -69,7 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
     </select>
     <select id="selectDetailsOfTheRefuelingPlanSpinningListCount" resultType="java.lang.Integer">
-        select count(id) from {DBNAME}.details_of_the_refueling_plan_spinning where plan_status !=2
+        select count(id) from {DBNAME}.details_of_the_refueling_plan_spinning where plan_status !=2 and plan_status!=3
     </select>
     <select id="getCurrentProductionLineSuperior"
             resultType="com.zkqy.business.domain.DetailsOfTheRefuelingPlanSpinning">

+ 1 - 1
zkqy-custom-business/src/main/resources/mapper/business/MaterialInventoryMapper.xml

@@ -232,7 +232,7 @@
         where material_code = #{materialCode}
     </select>
     <select id="selectMaterialInventoryListSum" resultType="java.lang.Integer">
-        select sum(quantity) from {DBNAME}.material_inventory
+        SELECT COALESCE(SUM(quantity), 0) FROM {DBNAME}.material_inventory
     </select>
 
 </mapper>

+ 1 - 1
zkqy-custom-business/src/main/resources/mapper/business/OutboundRecordsMapper.xml

@@ -71,7 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where qtCodeNumber = #{qtCodeNumber}
     </select>
     <select id="selectOutboundRecordsCount" resultType="java.lang.Integer">
-        select sum(outbound_quantity) from {DBNAME}.outbound_records
+        select  COALESCE(sum(outbound_quantity), 0) from {DBNAME}.outbound_records
     </select>
 
     <insert id="insertOutboundRecords" parameterType="com.zkqy.business.domain.OutboundRecords" useGeneratedKeys="true" keyProperty="id">

+ 31 - 0
zkqy-fujian-amichi/pom.xml

@@ -0,0 +1,31 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zkqy</groupId>
+        <artifactId>zkqy</artifactId>
+        <version>3.8.5</version>
+    </parent>
+
+    <artifactId>zkqy-fujian-amichi</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-framework</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.6.2</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>

+ 190 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BillOfMaterialsController.java

@@ -0,0 +1,190 @@
+package com.zkqy.amichi.controller;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.domain.vo.BillOfMaterialsVo;
+import com.zkqy.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.BillOfMaterials;
+import com.zkqy.amichi.service.IBillOfMaterialsService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 物料清单Controller
+ * /amichi/productionTasks/tasks
+ * @author zkqy
+ * @date 2024-06-28
+ */
+@RestController
+@RequestMapping("/amichi/billOfMaterials")
+@Api(value = "/system/materials", description = "物料清单-接口")
+public class BillOfMaterialsController extends BaseController
+{
+    @Autowired
+    private IBillOfMaterialsService billOfMaterialsService;
+
+    /**
+     * 查询物料清单列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:materials:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询物料清单列表")
+    public TableDataInfo list(BillOfMaterials billOfMaterials)
+    {
+        startPage();
+        List<BillOfMaterials> list = billOfMaterialsService.selectBillOfMaterialsList(billOfMaterials);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询物料清单列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:materials:list')")
+    @GetMapping("/selectListTree")
+    @ApiOperation(value = "查询物料清单列表")
+    public AjaxResult selectList()
+    {
+        List<Map<String, Object>> maps = billOfMaterialsService.selectBillOfMaterialsListSelectList();
+        HashMap<String,Object> map=new HashMap<>();
+        map.put("id",0);
+        map.put("label","主类目");
+        map.put("children",maps);
+        List<Map<String,Object>> reMap=new ArrayList<>();
+        reMap.add(map);
+        return AjaxResult.success(reMap);
+    }
+
+
+    /**
+     * 查询物料清单列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:materials:list')")
+    @Anonymous
+    @GetMapping("/treeList")
+    @ApiOperation(value = "查询物料清单列表")
+    public TableDataInfo treeList(BillOfMaterials billOfMaterials)
+    {
+        startPage();
+        billOfMaterials.setDelFlag("0");
+        List<BillOfMaterialsVo> billOfMaterialsVos = billOfMaterialsService.selectBillOfMaterialsListTree(billOfMaterials);
+        return getDataTable(billOfMaterialsVos);
+    }
+
+
+
+    /**
+     * 导出物料清单列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:materials:export')")
+    @Log(title = "物料清单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出物料清单列表")
+    public void export(HttpServletResponse response, BillOfMaterials billOfMaterials)
+    {
+        List<BillOfMaterials> list = billOfMaterialsService.selectBillOfMaterialsList(billOfMaterials);
+        ExcelUtil<BillOfMaterials> util = new ExcelUtil<BillOfMaterials>(BillOfMaterials.class);
+        util.exportExcel(response, list, "物料清单数据");
+    }
+
+
+
+    /**
+     * 获取物料清单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:materials:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取物料清单详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(billOfMaterialsService.selectBillOfMaterialsById(id));
+    }
+
+    /**
+     * 获取物料清单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:materials:query')")
+    @GetMapping(value = "/getTreeInfo/{id}")
+    @ApiOperation(value = "获取物料清单详细信息")
+    public AjaxResult getTreeInfo(@PathVariable("id") Long id)
+    {
+        return success(billOfMaterialsService.selectBillOfMaterialsByIdTreeInfo(id));
+    }
+
+    /**
+     * 新增物料清单
+     */
+    @PreAuthorize("@ss.hasPermi('system:materials:add')")
+    @Log(title = "物料清单", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增物料清单")
+    public AjaxResult add(@RequestBody BillOfMaterials billOfMaterials)
+    {
+        billOfMaterials.setDelFlag("0");
+        return toAjax(billOfMaterialsService.insertBillOfMaterials(billOfMaterials));
+    }
+
+    /**
+     * 修改物料清单
+     */
+    @PreAuthorize("@ss.hasPermi('system:materials:edit')")
+    @Log(title = "物料清单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改物料清单")
+    public AjaxResult edit(@RequestBody BillOfMaterials billOfMaterials)
+    {
+        return toAjax(billOfMaterialsService.updateBillOfMaterials(billOfMaterials));
+    }
+
+
+    /**
+     * 删除物料清单
+     */
+    @PreAuthorize("@ss.hasPermi('system:materials:remove')")
+    @Log(title = "物料清单", businessType = BusinessType.DELETE)
+    @DeleteMapping("/delete/{id}")
+    @ApiOperation(value = "删除物料清单")
+    public AjaxResult deleteById(@PathVariable Long id)
+    {
+        BillOfMaterials billOfMaterials=new BillOfMaterials();
+        billOfMaterials.setFid(id.toString());
+        List<BillOfMaterials> billOfMaterials1 = billOfMaterialsService.selectBillOfMaterialsList(billOfMaterials);
+        if (billOfMaterials1.size()>0){
+           return AjaxResult.error(666,"此菜单被其他菜单引用不能删除");
+        }
+        BillOfMaterials billOfMaterials2=new BillOfMaterials();
+        billOfMaterials2.setId(id);
+        billOfMaterials2.setDelFlag("1");
+        return toAjax(billOfMaterialsService.updateBillOfMaterials(billOfMaterials2));
+    }
+    /**
+     * 删除物料清单
+     */
+    @PreAuthorize("@ss.hasPermi('system:materials:remove')")
+    @Log(title = "物料清单", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除物料清单")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(billOfMaterialsService.deleteBillOfMaterialsByIds(ids));
+    }
+}

+ 139 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialInfoController.java

@@ -0,0 +1,139 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.MaterialInfo;
+import com.zkqy.amichi.service.IMaterialInfoService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 物料信息Controller
+ *
+ * @author zkqy
+ * @date 2024-06-30
+ */
+@RestController
+@RequestMapping("/amichi/materialInfo")
+@Api(value = "/system/materialInfo", description = "物料信息-接口")
+public class MaterialInfoController extends BaseController
+{
+    @Autowired
+    private IMaterialInfoService materialInfoService;
+
+    /**
+     * 查询物料信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:materialInfo:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询物料信息列表")
+    public TableDataInfo list(MaterialInfo materialInfo)
+    {
+        startPage();
+        List<MaterialInfo> list = materialInfoService.selectMaterialInfoList(materialInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出物料信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:materialInfo:export')")
+    @Log(title = "物料信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出物料信息列表")
+    public void export(HttpServletResponse response, MaterialInfo materialInfo)
+    {
+        List<MaterialInfo> list = materialInfoService.selectMaterialInfoList(materialInfo);
+        ExcelUtil<MaterialInfo> util = new ExcelUtil<MaterialInfo>(MaterialInfo.class);
+        util.exportExcel(response, list, "物料信息数据");
+    }
+
+    /**
+     * 获取物料信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:materialInfo:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取物料信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(materialInfoService.selectMaterialInfoById(id));
+    }
+
+    /**
+     * 新增物料信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:materialInfo:add')")
+    @Log(title = "物料信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增物料信息")
+    public AjaxResult add(@RequestBody MaterialInfo materialInfo)
+    {
+        return toAjax(materialInfoService.insertMaterialInfo(materialInfo));
+    }
+
+    /**
+     * 修改物料信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:materialInfo:edit')")
+    @Log(title = "物料信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改物料信息")
+    public AjaxResult edit(@RequestBody MaterialInfo materialInfo)
+    {
+        return toAjax(materialInfoService.updateMaterialInfo(materialInfo));
+    }
+
+    /**
+     * 删除物料信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:materialInfo:remove')")
+    @Log(title = "物料信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除物料信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(materialInfoService.deleteMaterialInfoByIds(ids));
+    }
+
+
+    /**
+     * 物料入库接口
+     */
+    @PreAuthorize("@ss.hasPermi('system:materialInfo:add')")
+    @Log(title = "物料信息", businessType = BusinessType.INSERT)
+    @PostMapping("/warehousing")
+    @ApiOperation(value = "入库物料信息")
+    public AjaxResult warehousing(@RequestBody MaterialInfo materialInfo)
+    {
+        return AjaxResult.success(materialInfoService.warehousing(materialInfo));
+    }
+
+
+    /**
+     * 物料出库接口
+     */
+    @PreAuthorize("@ss.hasPermi('system:materialInfo:add')")
+    @Log(title = "物料信息", businessType = BusinessType.INSERT)
+    @PostMapping("/outLibrary")
+    @ApiOperation(value = "出库物料信息")
+    public AjaxResult outLibrary(@RequestBody MaterialInfo materialInfo)
+    {
+        return AjaxResult.success(materialInfoService.outLibrary(materialInfo));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialtransactionlogController.java

@@ -0,0 +1,113 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.Materialtransactionlog;
+import com.zkqy.amichi.service.IMaterialtransactionlogService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 物料出入库日志Controller
+ *
+ * @author zkqy
+ * @date 2024-06-30
+ */
+@RestController
+@RequestMapping("/amichi/materialtransactionlog")
+@Api(value = "/amichi/materialtransactionlog", description = "物料出入库日志-接口")
+public class MaterialtransactionlogController extends BaseController
+{
+    @Autowired
+    private IMaterialtransactionlogService materialtransactionlogService;
+
+    /**
+     * 查询物料出入库日志列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:materialtransactionlog:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询物料出入库日志列表")
+    public TableDataInfo list(Materialtransactionlog materialtransactionlog)
+    {
+        startPage();
+        List<Materialtransactionlog> list = materialtransactionlogService.selectMaterialtransactionlogList(materialtransactionlog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出物料出入库日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:materialtransactionlog:export')")
+    @Log(title = "物料出入库日志", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出物料出入库日志列表")
+    public void export(HttpServletResponse response, Materialtransactionlog materialtransactionlog)
+    {
+        List<Materialtransactionlog> list = materialtransactionlogService.selectMaterialtransactionlogList(materialtransactionlog);
+        ExcelUtil<Materialtransactionlog> util = new ExcelUtil<Materialtransactionlog>(Materialtransactionlog.class);
+        util.exportExcel(response, list, "物料出入库日志数据");
+    }
+
+    /**
+     * 获取物料出入库日志详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:materialtransactionlog:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取物料出入库日志详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(materialtransactionlogService.selectMaterialtransactionlogById(id));
+    }
+
+    /**
+     * 新增物料出入库日志
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:materialtransactionlog:add')")
+    @Log(title = "物料出入库日志", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增物料出入库日志")
+    public AjaxResult add(@RequestBody Materialtransactionlog materialtransactionlog)
+    {
+        return toAjax(materialtransactionlogService.insertMaterialtransactionlog(materialtransactionlog));
+    }
+
+    /**
+     * 修改物料出入库日志
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:materialtransactionlog:edit')")
+    @Log(title = "物料出入库日志", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改物料出入库日志")
+    public AjaxResult edit(@RequestBody Materialtransactionlog materialtransactionlog)
+    {
+        return toAjax(materialtransactionlogService.updateMaterialtransactionlog(materialtransactionlog));
+    }
+
+    /**
+     * 删除物料出入库日志
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:materialtransactionlog:remove')")
+    @Log(title = "物料出入库日志", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除物料出入库日志")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(materialtransactionlogService.deleteMaterialtransactionlogByIds(ids));
+    }
+}

+ 126 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionTasksController.java

@@ -0,0 +1,126 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.domain.vo.ProductionTasksVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.ProductionTasks;
+import com.zkqy.amichi.service.IProductionTasksService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 生产任务单Controller
+ *
+ * @author zkqy
+ * @date 2024-06-27
+ */
+@RestController
+@RequestMapping("/amichi/productionTasks/tasks")
+@Api(value = "/amichi/productionTasks/tasks", description = "生产任务单-接口")
+public class ProductionTasksController extends BaseController
+{
+    @Autowired
+    private IProductionTasksService productionTasksService;
+
+    /**
+     * 查询生产任务单列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:tasks:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询生产任务单列表")
+    public TableDataInfo list(ProductionTasks productionTasks)
+    {
+        startPage();
+        List<ProductionTasks> list = productionTasksService.selectProductionTasksList(productionTasks);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出生产任务单列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:tasks:export')")
+    @Log(title = "生产任务单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出生产任务单列表")
+    public void export(HttpServletResponse response, ProductionTasks productionTasks)
+    {
+        List<ProductionTasks> list = productionTasksService.selectProductionTasksList(productionTasks);
+        ExcelUtil<ProductionTasks> util = new ExcelUtil<ProductionTasks>(ProductionTasks.class);
+        util.exportExcel(response, list, "生产任务单数据");
+    }
+
+    /**
+     * 获取生产任务单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:tasks:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取生产任务单详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productionTasksService.selectProductionTasksByIdVo(id));
+    }
+
+    /**
+     * 新增生产任务单
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:tasks:add')")
+    @Log(title = "生产任务单", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增生产任务单")
+    public AjaxResult add(@RequestBody ProductionTasks productionTasks)
+    {
+        return toAjax(productionTasksService.insertProductionTasks(productionTasks));
+    }
+
+    /**
+     * 复杂版新增生产任务单
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:tasks:add')")
+    @Log(title = "生产任务单", businessType = BusinessType.INSERT)
+    @PostMapping("/insert")
+    @ApiOperation(value = "新增生产任务单")
+    public AjaxResult insert(@RequestBody ProductionTasksVo productionTasks)
+    {
+        return toAjax(productionTasksService.insertProductionTasksVo(productionTasks));
+    }
+    /**
+     * 修改生产任务单
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:tasks:edit')")
+    @Log(title = "生产任务单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改生产任务单")
+    public AjaxResult edit(@RequestBody ProductionTasksVo productionTasks)
+    {
+        return toAjax(productionTasksService.updateProductionTasksVo(productionTasks));
+    }
+
+    /**
+     * 删除生产任务单
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:tasks:remove')")
+    @Log(title = "生产任务单", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除生产任务单")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productionTasksService.updateProductionTasksIn(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TaskDetailsController.java

@@ -0,0 +1,113 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.TaskDetails;
+import com.zkqy.amichi.service.ITaskDetailsService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 生产任务单明细Controller
+ *
+ * @author zkqy
+ * @date 2024-06-27
+ */
+@RestController
+@RequestMapping("/amichi/taskDetails/details")
+@Api(value = "/amichi/taskDetails/details", description = "生产任务单明细-接口")
+public class TaskDetailsController extends BaseController
+{
+    @Autowired
+    private ITaskDetailsService taskDetailsService;
+
+    /**
+     * 查询生产任务单明细列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:details:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询生产任务单明细列表")
+    public TableDataInfo list(TaskDetails taskDetails)
+    {
+        startPage();
+        List<TaskDetails> list = taskDetailsService.selectTaskDetailsList(taskDetails);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出生产任务单明细列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:export')")
+    @Log(title = "生产任务单明细", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出生产任务单明细列表")
+    public void export(HttpServletResponse response, TaskDetails taskDetails)
+    {
+        List<TaskDetails> list = taskDetailsService.selectTaskDetailsList(taskDetails);
+        ExcelUtil<TaskDetails> util = new ExcelUtil<TaskDetails>(TaskDetails.class);
+        util.exportExcel(response, list, "生产任务单明细数据");
+    }
+
+    /**
+     * 获取生产任务单明细详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取生产任务单明细详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(taskDetailsService.selectTaskDetailsById(id));
+    }
+
+    /**
+     * 新增生产任务单明细
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:add')")
+    @Log(title = "生产任务单明细", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增生产任务单明细")
+    public AjaxResult add(@RequestBody TaskDetails taskDetails)
+    {
+        return toAjax(taskDetailsService.insertTaskDetails(taskDetails));
+    }
+
+    /**
+     * 修改生产任务单明细
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:edit')")
+    @Log(title = "生产任务单明细", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改生产任务单明细")
+    public AjaxResult edit(@RequestBody TaskDetails taskDetails)
+    {
+        return toAjax(taskDetailsService.updateTaskDetails(taskDetails));
+    }
+
+    /**
+     * 删除生产任务单明细
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:remove')")
+    @Log(title = "生产任务单明细", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除生产任务单明细")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(taskDetailsService.deleteTaskDetailsByIds(ids));
+    }
+}

+ 549 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BillOfMaterials.java

@@ -0,0 +1,549 @@
+package com.zkqy.amichi.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 物料清单对象 bill_of_materials
+ * 
+ * @author zkqy
+ * @date 2024-06-28
+ */
+public class BillOfMaterials extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 父级别id */
+    @Excel(name = "父级别id")
+    private String fid;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    private String materialCode;
+
+    /** 物料名称 */
+    @Excel(name = "物料名称")
+    private String materialName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String modelNumber;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    private String specification;
+
+    /** 用量分子 */
+    @Excel(name = "用量分子")
+    private String dosageMolecular;
+
+    /** 用量:分母 */
+    @Excel(name = "用量:分母")
+    private String usageDenominator;
+
+    /** 是否跳层 */
+    @Excel(name = "是否跳层")
+    private String skipOrNot;
+
+    /** 物料属性 */
+    @Excel(name = "物料属性")
+    private String materialProperty;
+
+    /** 数据状态 */
+    @Excel(name = "数据状态")
+    private String dataState;
+
+    /** BOM版本 */
+    @Excel(name = "BOM版本")
+    private String bomVersion;
+
+    /** 发料方式 */
+    @Excel(name = "发料方式")
+    private String materialIssueMethod;
+
+    /** 作业 */
+    @Excel(name = "作业")
+    private String job;
+
+    /** 子项类型 */
+    @Excel(name = "子项类型")
+    private String subitemType;
+
+    /** 标准用量 */
+    @Excel(name = "标准用量")
+    private String standardDosage;
+
+    /** 实际数量 */
+    @Excel(name = "实际数量")
+    private String actualQuantity;
+
+    /** 辅助属性 */
+    @Excel(name = "辅助属性")
+    private String auxiliaryAttribute;
+
+    /** 用量类型 */
+    @Excel(name = "用量类型")
+    private String dosageType;
+
+    /** 固定损耗 */
+    @Excel(name = "固定损耗")
+    private String fixedLoss;
+
+    /** 变动损耗率 */
+    @Excel(name = "变动损耗率")
+    private String changeTheAttritionRate;
+
+    /** 替代策略 */
+    @Excel(name = "替代策略")
+    private String alternativeStrategy;
+
+    /** 替代方式 */
+    @Excel(name = "替代方式")
+    private String alternativeMode;
+
+    /** 替代主料 */
+    @Excel(name = "替代主料")
+    private String substituteMaterial;
+
+    /** 生效日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date effectiveDate;
+
+    /** 失效日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date expirationDate;
+
+    /** 存在联副产品 */
+    @Excel(name = "存在联副产品")
+    private String presenceOfCobyproducts;
+
+    /** 标准子项清单 */
+    @Excel(name = "标准子项清单")
+    private String standardSubitemUsage;
+
+    /** 实际子项用量 */
+    @Excel(name = "实际子项用量")
+    private String actualSubitemUsage;
+
+    /** 库存量 */
+    @Excel(name = "库存量")
+    private String inventory;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setFid(String fid) 
+    {
+        this.fid = fid;
+    }
+
+    public String getFid() 
+    {
+        return fid;
+    }
+    public void setMaterialCode(String materialCode) 
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode() 
+    {
+        return materialCode;
+    }
+    public void setMaterialName(String materialName) 
+    {
+        this.materialName = materialName;
+    }
+
+    public String getMaterialName() 
+    {
+        return materialName;
+    }
+    public void setModelNumber(String modelNumber) 
+    {
+        this.modelNumber = modelNumber;
+    }
+
+    public String getModelNumber() 
+    {
+        return modelNumber;
+    }
+    public void setSpecification(String specification) 
+    {
+        this.specification = specification;
+    }
+
+    public String getSpecification() 
+    {
+        return specification;
+    }
+    public void setDosageMolecular(String dosageMolecular) 
+    {
+        this.dosageMolecular = dosageMolecular;
+    }
+
+    public String getDosageMolecular() 
+    {
+        return dosageMolecular;
+    }
+    public void setUsageDenominator(String usageDenominator) 
+    {
+        this.usageDenominator = usageDenominator;
+    }
+
+    public String getUsageDenominator() 
+    {
+        return usageDenominator;
+    }
+    public void setSkipOrNot(String skipOrNot) 
+    {
+        this.skipOrNot = skipOrNot;
+    }
+
+    public String getSkipOrNot() 
+    {
+        return skipOrNot;
+    }
+    public void setMaterialProperty(String materialProperty) 
+    {
+        this.materialProperty = materialProperty;
+    }
+
+    public String getMaterialProperty() 
+    {
+        return materialProperty;
+    }
+    public void setDataState(String dataState) 
+    {
+        this.dataState = dataState;
+    }
+
+    public String getDataState() 
+    {
+        return dataState;
+    }
+    public void setBomVersion(String bomVersion) 
+    {
+        this.bomVersion = bomVersion;
+    }
+
+    public String getBomVersion() 
+    {
+        return bomVersion;
+    }
+    public void setMaterialIssueMethod(String materialIssueMethod) 
+    {
+        this.materialIssueMethod = materialIssueMethod;
+    }
+
+    public String getMaterialIssueMethod() 
+    {
+        return materialIssueMethod;
+    }
+    public void setJob(String job) 
+    {
+        this.job = job;
+    }
+
+    public String getJob() 
+    {
+        return job;
+    }
+    public void setSubitemType(String subitemType) 
+    {
+        this.subitemType = subitemType;
+    }
+
+    public String getSubitemType() 
+    {
+        return subitemType;
+    }
+    public void setStandardDosage(String standardDosage) 
+    {
+        this.standardDosage = standardDosage;
+    }
+
+    public String getStandardDosage() 
+    {
+        return standardDosage;
+    }
+    public void setActualQuantity(String actualQuantity) 
+    {
+        this.actualQuantity = actualQuantity;
+    }
+
+    public String getActualQuantity() 
+    {
+        return actualQuantity;
+    }
+    public void setAuxiliaryAttribute(String auxiliaryAttribute) 
+    {
+        this.auxiliaryAttribute = auxiliaryAttribute;
+    }
+
+    public String getAuxiliaryAttribute() 
+    {
+        return auxiliaryAttribute;
+    }
+    public void setDosageType(String dosageType) 
+    {
+        this.dosageType = dosageType;
+    }
+
+    public String getDosageType() 
+    {
+        return dosageType;
+    }
+    public void setFixedLoss(String fixedLoss) 
+    {
+        this.fixedLoss = fixedLoss;
+    }
+
+    public String getFixedLoss() 
+    {
+        return fixedLoss;
+    }
+    public void setChangeTheAttritionRate(String changeTheAttritionRate) 
+    {
+        this.changeTheAttritionRate = changeTheAttritionRate;
+    }
+
+    public String getChangeTheAttritionRate() 
+    {
+        return changeTheAttritionRate;
+    }
+    public void setAlternativeStrategy(String alternativeStrategy) 
+    {
+        this.alternativeStrategy = alternativeStrategy;
+    }
+
+    public String getAlternativeStrategy() 
+    {
+        return alternativeStrategy;
+    }
+    public void setAlternativeMode(String alternativeMode) 
+    {
+        this.alternativeMode = alternativeMode;
+    }
+
+    public String getAlternativeMode() 
+    {
+        return alternativeMode;
+    }
+    public void setSubstituteMaterial(String substituteMaterial) 
+    {
+        this.substituteMaterial = substituteMaterial;
+    }
+
+    public String getSubstituteMaterial() 
+    {
+        return substituteMaterial;
+    }
+    public void setEffectiveDate(Date effectiveDate) 
+    {
+        this.effectiveDate = effectiveDate;
+    }
+
+    public Date getEffectiveDate() 
+    {
+        return effectiveDate;
+    }
+    public void setExpirationDate(Date expirationDate) 
+    {
+        this.expirationDate = expirationDate;
+    }
+
+    public Date getExpirationDate() 
+    {
+        return expirationDate;
+    }
+    public void setPresenceOfCobyproducts(String presenceOfCobyproducts) 
+    {
+        this.presenceOfCobyproducts = presenceOfCobyproducts;
+    }
+
+    public String getPresenceOfCobyproducts() 
+    {
+        return presenceOfCobyproducts;
+    }
+    public void setStandardSubitemUsage(String standardSubitemUsage) 
+    {
+        this.standardSubitemUsage = standardSubitemUsage;
+    }
+
+    public String getStandardSubitemUsage() 
+    {
+        return standardSubitemUsage;
+    }
+    public void setActualSubitemUsage(String actualSubitemUsage) 
+    {
+        this.actualSubitemUsage = actualSubitemUsage;
+    }
+
+    public String getActualSubitemUsage() 
+    {
+        return actualSubitemUsage;
+    }
+    public void setInventory(String inventory) 
+    {
+        this.inventory = inventory;
+    }
+
+    public String getInventory() 
+    {
+        return inventory;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("fid", getFid())
+            .append("materialCode", getMaterialCode())
+            .append("materialName", getMaterialName())
+            .append("modelNumber", getModelNumber())
+            .append("specification", getSpecification())
+            .append("dosageMolecular", getDosageMolecular())
+            .append("usageDenominator", getUsageDenominator())
+            .append("skipOrNot", getSkipOrNot())
+            .append("materialProperty", getMaterialProperty())
+            .append("dataState", getDataState())
+            .append("bomVersion", getBomVersion())
+            .append("materialIssueMethod", getMaterialIssueMethod())
+            .append("job", getJob())
+            .append("subitemType", getSubitemType())
+            .append("standardDosage", getStandardDosage())
+            .append("actualQuantity", getActualQuantity())
+            .append("auxiliaryAttribute", getAuxiliaryAttribute())
+            .append("dosageType", getDosageType())
+            .append("fixedLoss", getFixedLoss())
+            .append("changeTheAttritionRate", getChangeTheAttritionRate())
+            .append("alternativeStrategy", getAlternativeStrategy())
+            .append("alternativeMode", getAlternativeMode())
+            .append("substituteMaterial", getSubstituteMaterial())
+            .append("effectiveDate", getEffectiveDate())
+            .append("expirationDate", getExpirationDate())
+            .append("presenceOfCobyproducts", getPresenceOfCobyproducts())
+            .append("standardSubitemUsage", getStandardSubitemUsage())
+            .append("actualSubitemUsage", getActualSubitemUsage())
+            .append("inventory", getInventory())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 251 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialInfo.java

@@ -0,0 +1,251 @@
+package com.zkqy.amichi.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 物料信息对象 materialInfo
+ * 
+ * @author zkqy
+ * @date 2024-06-30
+ */
+public class MaterialInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    private String materialCode;
+
+    /** 物料名称 */
+    @Excel(name = "物料名称")
+    private String materialName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String model;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    private String specification;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    private String unit;
+
+    /** 属性 0自制 1外购 */
+    @Excel(name = "属性 0自制 1外购")
+    private String attribute;
+
+    /** 发料方式 */
+    @Excel(name = "发料方式")
+    private String issueMethod;
+
+    /** 库存量 */
+    @Excel(name = "库存量")
+    private Double stockQuantity;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setMaterialCode(String materialCode) 
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode() 
+    {
+        return materialCode;
+    }
+    public void setMaterialName(String materialName) 
+    {
+        this.materialName = materialName;
+    }
+
+    public String getMaterialName() 
+    {
+        return materialName;
+    }
+    public void setModel(String model) 
+    {
+        this.model = model;
+    }
+
+    public String getModel() 
+    {
+        return model;
+    }
+    public void setSpecification(String specification) 
+    {
+        this.specification = specification;
+    }
+
+    public String getSpecification() 
+    {
+        return specification;
+    }
+    public void setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+    public void setAttribute(String attribute) 
+    {
+        this.attribute = attribute;
+    }
+
+    public String getAttribute() 
+    {
+        return attribute;
+    }
+    public void setIssueMethod(String issueMethod) 
+    {
+        this.issueMethod = issueMethod;
+    }
+
+    public String getIssueMethod() 
+    {
+        return issueMethod;
+    }
+
+    public Double getStockQuantity() {
+        return stockQuantity;
+    }
+
+    public void setStockQuantity(Double stockQuantity) {
+        this.stockQuantity = stockQuantity;
+    }
+
+    public void setCreateById(Long createById)
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("materialCode", getMaterialCode())
+            .append("materialName", getMaterialName())
+            .append("model", getModel())
+            .append("specification", getSpecification())
+            .append("unit", getUnit())
+            .append("attribute", getAttribute())
+            .append("issueMethod", getIssueMethod())
+            .append("stockQuantity", getStockQuantity())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 350 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/Materialtransactionlog.java

@@ -0,0 +1,350 @@
+package com.zkqy.amichi.domain;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 物料出入库日志对象 materialtransactionlog
+ * 
+ * @author zkqy
+ * @date 2024-06-30
+ */
+public class Materialtransactionlog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    private String materialCode;
+
+    /** 物料名称 */
+    @Excel(name = "物料名称")
+    private String materialName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String model;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    private String specification;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    private String unit;
+
+    /** 属性 0自制 1外购 */
+    @Excel(name = "属性 0自制 1外购")
+    private String attribute;
+
+    /** 操作类型 */
+    @Excel(name = "操作类型")
+    private String typeOfOperation;
+
+    /** 出入库数量 */
+    @Excel(name = "出入库数量")
+    private Double quantity;
+
+    /** 出库时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime transactionDate;
+
+
+
+    /** 出库时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime warehousingTime;
+
+    public void setTransactionDate(LocalDateTime transactionDate) {
+        this.transactionDate = transactionDate;
+    }
+
+    public LocalDateTime getWarehousingTime() {
+        return warehousingTime;
+    }
+
+    public void setWarehousingTime(LocalDateTime warehousingTime) {
+        this.warehousingTime = warehousingTime;
+    }
+
+    /** 操作人 */
+    @Excel(name = "操作人")
+    private String operator;
+
+    /** 批次号 */
+    @Excel(name = "批次号")
+    private String batchNumber;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    /** 备用字段1 */
+    @Excel(name = "备用字段1")
+    private String sparea;
+
+    /** 备用字段2 */
+    @Excel(name = "备用字段2")
+    private String spareb;
+
+    /** 备用字段3 */
+    @Excel(name = "备用字段3")
+    private String sparec;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setMaterialCode(String materialCode) 
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode() 
+    {
+        return materialCode;
+    }
+    public void setMaterialName(String materialName) 
+    {
+        this.materialName = materialName;
+    }
+
+    public String getMaterialName() 
+    {
+        return materialName;
+    }
+    public void setModel(String model) 
+    {
+        this.model = model;
+    }
+
+    public String getModel() 
+    {
+        return model;
+    }
+    public void setSpecification(String specification) 
+    {
+        this.specification = specification;
+    }
+
+    public String getSpecification() 
+    {
+        return specification;
+    }
+    public void setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+    public void setAttribute(String attribute) 
+    {
+        this.attribute = attribute;
+    }
+
+    public String getAttribute() 
+    {
+        return attribute;
+    }
+    public void setTypeOfOperation(String typeOfOperation) 
+    {
+        this.typeOfOperation = typeOfOperation;
+    }
+
+    public String getTypeOfOperation() 
+    {
+        return typeOfOperation;
+    }
+
+    public Double getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(Double quantity) {
+        this.quantity = quantity;
+    }
+
+    public LocalDateTime getTransactionDate() {
+        return transactionDate;
+    }
+
+    public void setOperator(String operator)
+    {
+        this.operator = operator;
+    }
+
+    public String getOperator() 
+    {
+        return operator;
+    }
+    public void setBatchNumber(String batchNumber) 
+    {
+        this.batchNumber = batchNumber;
+    }
+
+    public String getBatchNumber() 
+    {
+        return batchNumber;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+    public void setSparea(String sparea) 
+    {
+        this.sparea = sparea;
+    }
+
+    public String getSparea() 
+    {
+        return sparea;
+    }
+    public void setSpareb(String spareb) 
+    {
+        this.spareb = spareb;
+    }
+
+    public String getSpareb() 
+    {
+        return spareb;
+    }
+    public void setSparec(String sparec) 
+    {
+        this.sparec = sparec;
+    }
+
+    public String getSparec() 
+    {
+        return sparec;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("Materialtransactionlog{");
+        sb.append("id=").append(id);
+        sb.append(", materialCode='").append(materialCode).append('\'');
+        sb.append(", materialName='").append(materialName).append('\'');
+        sb.append(", model='").append(model).append('\'');
+        sb.append(", specification='").append(specification).append('\'');
+        sb.append(", unit='").append(unit).append('\'');
+        sb.append(", attribute='").append(attribute).append('\'');
+        sb.append(", typeOfOperation='").append(typeOfOperation).append('\'');
+        sb.append(", quantity=").append(quantity);
+        sb.append(", transactionDate=").append(transactionDate);
+        sb.append(", warehousingTime=").append(warehousingTime);
+        sb.append(", operator='").append(operator).append('\'');
+        sb.append(", batchNumber='").append(batchNumber).append('\'');
+        sb.append(", createById=").append(createById);
+        sb.append(", updateById=").append(updateById);
+        sb.append(", delFlag='").append(delFlag).append('\'');
+        sb.append(", dataApprovalStatus='").append(dataApprovalStatus).append('\'');
+        sb.append(", processKey='").append(processKey).append('\'');
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", sparea='").append(sparea).append('\'');
+        sb.append(", spareb='").append(spareb).append('\'');
+        sb.append(", sparec='").append(sparec).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 419 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionTasks.java

@@ -0,0 +1,419 @@
+package com.zkqy.amichi.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 生产任务单对象 production_tasks
+ * 
+ * @author zkqy
+ * @date 2024-06-27
+ */
+public class ProductionTasks extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 订单编号 */
+    @Excel(name = "订单编号")
+    private String orderNo;
+
+    /** 合同编号 */
+    @Excel(name = "合同编号")
+    private String contractNo;
+
+    /** 总台数 */
+    @Excel(name = "总台数")
+    private String total;
+
+    /** 数据 */
+    @Excel(name = "数据")
+    private String requirementDate;
+
+    /** 机壳-端盖 */
+    @Excel(name = "机壳-端盖")
+    private String shell;
+
+    /** 开关 */
+    @Excel(name = "开关")
+    private String switching;
+
+    /** 颜色 */
+    @Excel(name = "颜色")
+    private String colour;
+
+    /** 铭牌 */
+    @Excel(name = "铭牌")
+    private String nameplate;
+
+    /** 说明书 */
+    @Excel(name = "说明书")
+    private String instructions;
+
+    /** 合格证 */
+    @Excel(name = "合格证")
+    private String certificate;
+
+    /** 包装箱 */
+    @Excel(name = "包装箱")
+    private String packingbox;
+
+    /** 特殊要求 */
+    @Excel(name = "特殊要求")
+    private String special;
+
+    /** 完成时间 */
+    @Excel(name = "完成时间")
+    private String completiontime;
+
+    /** 制单人 */
+    @Excel(name = "制单人")
+    private String creator;
+
+    /** 技术部 */
+    @Excel(name = "技术部")
+    private String technology;
+
+    /** 总经理 */
+    @Excel(name = "总经理")
+    private String general;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private String state;
+
+    /** 备用字段1 */
+    @Excel(name = "备用字段1")
+    private String sparea;
+
+    /** 备用字段2 */
+    @Excel(name = "备用字段2")
+    private String spareb;
+
+    /** 备用字段3 */
+    @Excel(name = "备用字段3")
+    private String sparec;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setOrderNo(String orderNo) 
+    {
+        this.orderNo = orderNo;
+    }
+
+    public String getOrderNo() 
+    {
+        return orderNo;
+    }
+    public void setContractNo(String contractNo) 
+    {
+        this.contractNo = contractNo;
+    }
+
+    public String getContractNo() 
+    {
+        return contractNo;
+    }
+    public void setTotal(String total) 
+    {
+        this.total = total;
+    }
+
+    public String getTotal() 
+    {
+        return total;
+    }
+    public void setRequirementDate(String requirementDate) 
+    {
+        this.requirementDate = requirementDate;
+    }
+
+    public String getRequirementDate() 
+    {
+        return requirementDate;
+    }
+    public void setShell(String shell) 
+    {
+        this.shell = shell;
+    }
+
+    public String getShell() 
+    {
+        return shell;
+    }
+
+    public String getSwitching() {
+        return switching;
+    }
+
+    public void setSwitching(String switching) {
+        this.switching = switching;
+    }
+
+    public void setColour(String colour)
+    {
+        this.colour = colour;
+    }
+
+    public String getColour() 
+    {
+        return colour;
+    }
+    public void setNameplate(String nameplate) 
+    {
+        this.nameplate = nameplate;
+    }
+
+    public String getNameplate() 
+    {
+        return nameplate;
+    }
+    public void setInstructions(String instructions) 
+    {
+        this.instructions = instructions;
+    }
+
+    public String getInstructions() 
+    {
+        return instructions;
+    }
+    public void setCertificate(String certificate) 
+    {
+        this.certificate = certificate;
+    }
+
+    public String getCertificate() 
+    {
+        return certificate;
+    }
+    public void setPackingbox(String packingbox) 
+    {
+        this.packingbox = packingbox;
+    }
+
+    public String getPackingbox() 
+    {
+        return packingbox;
+    }
+    public void setSpecial(String special) 
+    {
+        this.special = special;
+    }
+
+    public String getSpecial() 
+    {
+        return special;
+    }
+    public void setCompletiontime(String completiontime) 
+    {
+        this.completiontime = completiontime;
+    }
+
+    public String getCompletiontime() 
+    {
+        return completiontime;
+    }
+    public void setCreator(String creator) 
+    {
+        this.creator = creator;
+    }
+
+    public String getCreator() 
+    {
+        return creator;
+    }
+    public void setTechnology(String technology) 
+    {
+        this.technology = technology;
+    }
+
+    public String getTechnology() 
+    {
+        return technology;
+    }
+    public void setGeneral(String general) 
+    {
+        this.general = general;
+    }
+
+    public String getGeneral() 
+    {
+        return general;
+    }
+    public void setState(String state) 
+    {
+        this.state = state;
+    }
+
+    public String getState() 
+    {
+        return state;
+    }
+    public void setSparea(String sparea) 
+    {
+        this.sparea = sparea;
+    }
+
+    public String getSparea() 
+    {
+        return sparea;
+    }
+    public void setSpareb(String spareb) 
+    {
+        this.spareb = spareb;
+    }
+
+    public String getSpareb() 
+    {
+        return spareb;
+    }
+    public void setSparec(String sparec) 
+    {
+        this.sparec = sparec;
+    }
+
+    public String getSparec() 
+    {
+        return sparec;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderNo", getOrderNo())
+            .append("contractNo", getContractNo())
+            .append("total", getTotal())
+            .append("requirementDate", getRequirementDate())
+            .append("shell", getShell())
+            .append("switch", getSwitching())
+            .append("colour", getColour())
+            .append("nameplate", getNameplate())
+            .append("instructions", getInstructions())
+            .append("certificate", getCertificate())
+            .append("packingbox", getPackingbox())
+            .append("special", getSpecial())
+            .append("completiontime", getCompletiontime())
+            .append("creator", getCreator())
+            .append("technology", getTechnology())
+            .append("general", getGeneral())
+            .append("state", getState())
+            .append("sparea", getSparea())
+            .append("spareb", getSpareb())
+            .append("sparec", getSparec())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 307 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TaskDetails.java

@@ -0,0 +1,307 @@
+package com.zkqy.amichi.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 生产任务单明细对象 task_details
+ * 
+ * @author zkqy
+ * @date 2024-06-27
+ */
+public class TaskDetails extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 任务单id关联字段 */
+    @Excel(name = "任务单id关联字段")
+    private String taskId;
+
+    /** 规格型号 */
+    @Excel(name = "规格型号")
+    private String model;
+
+    /** 铭牌及包装 */
+    @Excel(name = "铭牌及包装")
+    private String nameplate;
+
+    /** 容量 */
+    @Excel(name = "容量")
+    private String capacity;
+
+    /** 接口/盘片 */
+    @Excel(name = "接口/盘片")
+    private String interfaceDisk;
+
+    /** 铁心长度(定子/励磁) */
+    @Excel(name = "铁心长度", readConverterExp = "定=子/励磁")
+    private String length;
+
+    /** 电压/频率 */
+    @Excel(name = "电压/频率")
+    private String voltage;
+
+    /** 电磁方案 */
+    @Excel(name = "电磁方案")
+    private String programme;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private String quantity;
+
+    /** 备用字段1 */
+    @Excel(name = "备用字段1")
+    private String sparea;
+
+    /** 备用字段2 */
+    @Excel(name = "备用字段2")
+    private String spareb;
+
+    /** 备用字段3 */
+    @Excel(name = "备用字段3")
+    private String sparec;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTaskId(String taskId) 
+    {
+        this.taskId = taskId;
+    }
+
+    public String getTaskId() 
+    {
+        return taskId;
+    }
+    public void setModel(String model) 
+    {
+        this.model = model;
+    }
+
+    public String getModel() 
+    {
+        return model;
+    }
+    public void setNameplate(String nameplate) 
+    {
+        this.nameplate = nameplate;
+    }
+
+    public String getNameplate() 
+    {
+        return nameplate;
+    }
+    public void setCapacity(String capacity) 
+    {
+        this.capacity = capacity;
+    }
+
+    public String getCapacity() 
+    {
+        return capacity;
+    }
+
+    public String getInterfaceDisk() {
+        return interfaceDisk;
+    }
+
+    public void setInterfaceDisk(String interfaceDisk) {
+        this.interfaceDisk = interfaceDisk;
+    }
+
+    public void setLength(String length)
+    {
+        this.length = length;
+    }
+
+    public String getLength() 
+    {
+        return length;
+    }
+    public void setVoltage(String voltage) 
+    {
+        this.voltage = voltage;
+    }
+
+    public String getVoltage() 
+    {
+        return voltage;
+    }
+    public void setProgramme(String programme) 
+    {
+        this.programme = programme;
+    }
+
+    public String getProgramme() 
+    {
+        return programme;
+    }
+    public void setQuantity(String quantity) 
+    {
+        this.quantity = quantity;
+    }
+
+    public String getQuantity() 
+    {
+        return quantity;
+    }
+    public void setSparea(String sparea) 
+    {
+        this.sparea = sparea;
+    }
+
+    public String getSparea() 
+    {
+        return sparea;
+    }
+    public void setSpareb(String spareb) 
+    {
+        this.spareb = spareb;
+    }
+
+    public String getSpareb() 
+    {
+        return spareb;
+    }
+    public void setSparec(String sparec) 
+    {
+        this.sparec = sparec;
+    }
+
+    public String getSparec() 
+    {
+        return sparec;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("taskId", getTaskId())
+            .append("model", getModel())
+            .append("nameplate", getNameplate())
+            .append("capacity", getCapacity())
+            .append("interface", getInterfaceDisk())
+            .append("length", getLength())
+            .append("voltage", getVoltage())
+            .append("programme", getProgramme())
+            .append("quantity", getQuantity())
+            .append("sparea", getSparea())
+            .append("spareb", getSpareb())
+            .append("sparec", getSparec())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 15 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/BillOfMaterialsVo.java

@@ -0,0 +1,15 @@
+package com.zkqy.amichi.domain.vo;
+
+import com.zkqy.amichi.domain.BillOfMaterials;
+
+public class BillOfMaterialsVo extends BillOfMaterials {
+    private  boolean hasChildren;
+
+    public boolean isHasChildren() {
+        return hasChildren;
+    }
+
+    public void setHasChildren(boolean hasChildren) {
+        this.hasChildren = hasChildren;
+    }
+}

+ 19 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/ProductionTasksVo.java

@@ -0,0 +1,19 @@
+package com.zkqy.amichi.domain.vo;
+
+import com.zkqy.amichi.domain.ProductionTasks;
+import com.zkqy.amichi.domain.TaskDetails;
+
+import java.util.List;
+
+public class ProductionTasksVo extends ProductionTasks {
+
+    private List<TaskDetails> taskDetails;
+
+    public List<TaskDetails> getTaskDetails() {
+        return taskDetails;
+    }
+
+    public void setTaskDetails(List<TaskDetails> taskDetails) {
+        this.taskDetails = taskDetails;
+    }
+}

+ 63 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BillOfMaterialsMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BillOfMaterials;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 物料清单Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-28
+ */
+@Mapper
+public interface BillOfMaterialsMapper 
+{
+    /**
+     * 查询物料清单
+     * 
+     * @param id 物料清单主键
+     * @return 物料清单
+     */
+    public BillOfMaterials selectBillOfMaterialsById(Long id);
+
+    /**
+     * 查询物料清单列表
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 物料清单集合
+     */
+    public List<BillOfMaterials> selectBillOfMaterialsList(BillOfMaterials billOfMaterials);
+
+    /**
+     * 新增物料清单
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 结果
+     */
+    public int insertBillOfMaterials(BillOfMaterials billOfMaterials);
+
+    /**
+     * 修改物料清单
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 结果
+     */
+    public int updateBillOfMaterials(BillOfMaterials billOfMaterials);
+
+    /**
+     * 删除物料清单
+     * 
+     * @param id 物料清单主键
+     * @return 结果
+     */
+    public int deleteBillOfMaterialsById(Long id);
+
+    /**
+     * 批量删除物料清单
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBillOfMaterialsByIds(Long[] ids);
+}

+ 65 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/MaterialInfoMapper.java

@@ -0,0 +1,65 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.MaterialInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 物料信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-30
+ */
+@Mapper
+public interface MaterialInfoMapper 
+{
+    /**
+     * 查询物料信息
+     * 
+     * @param id 物料信息主键
+     * @return 物料信息
+     */
+    public MaterialInfo selectMaterialInfoById(Long id);
+
+    /**
+     * 查询物料信息列表
+     * 
+     * @param materialInfo 物料信息
+     * @return 物料信息集合
+     */
+    public List<MaterialInfo> selectMaterialInfoList(MaterialInfo materialInfo);
+
+    /**
+     * 新增物料信息
+     * 
+     * @param materialInfo 物料信息
+     * @return 结果
+     */
+    public int insertMaterialInfo(MaterialInfo materialInfo);
+
+    /**
+     * 修改物料信息
+     * 
+     * @param materialInfo 物料信息
+     * @return 结果
+     */
+    public int updateMaterialInfo(MaterialInfo materialInfo);
+
+    /**
+     * 删除物料信息
+     * 
+     * @param id 物料信息主键
+     * @return 结果
+     */
+    public int deleteMaterialInfoById(Long id);
+
+    /**
+     * 批量删除物料信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMaterialInfoByIds(Long[] ids);
+
+    int updateMaterialInfoByCode(MaterialInfo materialInfo1);
+}

+ 63 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/MaterialtransactionlogMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.Materialtransactionlog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 物料出入库日志Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-30
+ */
+@Mapper
+public interface MaterialtransactionlogMapper 
+{
+    /**
+     * 查询物料出入库日志
+     * 
+     * @param id 物料出入库日志主键
+     * @return 物料出入库日志
+     */
+    public Materialtransactionlog selectMaterialtransactionlogById(Long id);
+
+    /**
+     * 查询物料出入库日志列表
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 物料出入库日志集合
+     */
+    public List<Materialtransactionlog> selectMaterialtransactionlogList(Materialtransactionlog materialtransactionlog);
+
+    /**
+     * 新增物料出入库日志
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 结果
+     */
+    public int insertMaterialtransactionlog(Materialtransactionlog materialtransactionlog);
+
+    /**
+     * 修改物料出入库日志
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 结果
+     */
+    public int updateMaterialtransactionlog(Materialtransactionlog materialtransactionlog);
+
+    /**
+     * 删除物料出入库日志
+     * 
+     * @param id 物料出入库日志主键
+     * @return 结果
+     */
+    public int deleteMaterialtransactionlogById(Long id);
+
+    /**
+     * 批量删除物料出入库日志
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMaterialtransactionlogByIds(Long[] ids);
+}

+ 70 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionTasksMapper.java

@@ -0,0 +1,70 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ProductionTasks;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 生产任务单Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-27
+ */
+@Mapper
+public interface ProductionTasksMapper 
+{
+    /**
+     * 查询生产任务单
+     * 
+     * @param id 生产任务单主键
+     * @return 生产任务单
+     */
+    public ProductionTasks selectProductionTasksById(Long id);
+
+    /**
+     * 查询生产任务单列表
+     * 
+     * @param productionTasks 生产任务单
+     * @return 生产任务单集合
+     */
+    public List<ProductionTasks> selectProductionTasksList(ProductionTasks productionTasks);
+
+    /**
+     * 新增生产任务单
+     * 
+     * @param productionTasks 生产任务单
+     * @return 结果
+     */
+    public int insertProductionTasks(ProductionTasks productionTasks);
+
+    /**
+     * 修改生产任务单
+     * 
+     * @param productionTasks 生产任务单
+     * @return 结果
+     */
+    public int updateProductionTasks(ProductionTasks productionTasks);
+
+    /**
+     * 删除生产任务单
+     * 
+     * @param id 生产任务单主键
+     * @return 结果
+     */
+    public int deleteProductionTasksById(Long id);
+
+    /**
+     * 批量删除生产任务单
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductionTasksByIds(Long[] ids);
+
+    /**
+     * 批量修改
+     * @param ids
+     * @return
+     */
+    int updateProductionTasksIn(Long[] ids);
+}

+ 90 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/TaskDetailsMapper.java

@@ -0,0 +1,90 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TaskDetails;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 生产任务单明细Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-27
+ */
+@Mapper
+public interface TaskDetailsMapper 
+{
+    /**
+     * 查询生产任务单明细
+     * 
+     * @param id 生产任务单明细主键
+     * @return 生产任务单明细
+     */
+    public TaskDetails selectTaskDetailsById(Long id);
+
+    /**
+     * 查询生产任务单明细列表
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 生产任务单明细集合
+     */
+    public List<TaskDetails> selectTaskDetailsList(TaskDetails taskDetails);
+
+
+    /**
+     * 查询生产任务单明细列表
+     *
+     * @param taskId 生产任务单明细
+     * @return 生产任务单明细集合
+     */
+    public List<TaskDetails> selectTaskDetailsListByTaskId(String taskId);
+
+
+    /**
+     * 新增生产任务单明细
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 结果
+     */
+    public int insertTaskDetails(TaskDetails taskDetails);
+
+    /**
+     * 修改生产任务单明细
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 结果
+     */
+    public int updateTaskDetails(TaskDetails taskDetails);
+
+    /**
+     * 修改生产任务单明细
+     *
+     * @param taskId 生产任务单明细
+     * @return 结果
+     */
+    public int updateTaskDetailsInIdDelete(String taskId);
+
+    /**
+     * 修改生产任务单明细
+     *
+     * @param ids 生产任务单明细
+     * @return 结果
+     */
+    public int updateTaskDetailsInTaskId(Long[] ids);
+
+
+    /**
+     * 删除生产任务单明细
+     * 
+     * @param id 生产任务单明细主键
+     * @return 结果
+     */
+    public int deleteTaskDetailsById(Long id);
+
+    /**
+     * 批量删除生产任务单明细
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTaskDetailsByIds(Long[] ids);
+}

+ 84 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBillOfMaterialsService.java

@@ -0,0 +1,84 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.zkqy.amichi.domain.BillOfMaterials;
+import com.zkqy.amichi.domain.vo.BillOfMaterialsVo;
+
+/**
+ * 物料清单Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-28
+ */
+public interface IBillOfMaterialsService 
+{
+    /**
+     * 查询物料清单
+     * 
+     * @param id 物料清单主键
+     * @return 物料清单
+     */
+    public BillOfMaterials selectBillOfMaterialsById(Long id);
+
+    /**
+     * 查询物料清单列表
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 物料清单集合
+     */
+    public List<BillOfMaterials> selectBillOfMaterialsList(BillOfMaterials billOfMaterials);
+
+    /**
+     * 新增物料清单
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 结果
+     */
+    public int insertBillOfMaterials(BillOfMaterials billOfMaterials);
+
+    /**
+     * 修改物料清单
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 结果
+     */
+    public int updateBillOfMaterials(BillOfMaterials billOfMaterials);
+
+    /**
+     * 批量删除物料清单
+     * 
+     * @param ids 需要删除的物料清单主键集合
+     * @return 结果
+     */
+    public int deleteBillOfMaterialsByIds(Long[] ids);
+
+    /**
+     * 删除物料清单信息
+     * 
+     * @param id 物料清单主键
+     * @return 结果
+     */
+    public int deleteBillOfMaterialsById(Long id);
+
+    /**
+     * 树形集合
+     * @param billOfMaterials
+     * @return
+     */
+    List<BillOfMaterialsVo> selectBillOfMaterialsListTree(BillOfMaterials billOfMaterials);
+
+    /**
+     * 树形表格根据id查询
+     * @param id
+     * @return
+     */
+    List<BillOfMaterialsVo> selectBillOfMaterialsByIdTreeInfo(Long id);
+
+    /**
+     * 查询List集合数据
+     * @return
+     */
+    List<Map<String, Object>> selectBillOfMaterialsListSelectList();
+}

+ 75 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IMaterialInfoService.java

@@ -0,0 +1,75 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.MaterialInfo;
+
+/**
+ * 物料信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-30
+ */
+public interface IMaterialInfoService 
+{
+    /**
+     * 查询物料信息
+     * 
+     * @param id 物料信息主键
+     * @return 物料信息
+     */
+    public MaterialInfo selectMaterialInfoById(Long id);
+
+    /**
+     * 查询物料信息列表
+     * 
+     * @param materialInfo 物料信息
+     * @return 物料信息集合
+     */
+    public List<MaterialInfo> selectMaterialInfoList(MaterialInfo materialInfo);
+
+    /**
+     * 新增物料信息
+     * 
+     * @param materialInfo 物料信息
+     * @return 结果
+     */
+    public int insertMaterialInfo(MaterialInfo materialInfo);
+
+    /**
+     * 修改物料信息
+     * 
+     * @param materialInfo 物料信息
+     * @return 结果
+     */
+    public int updateMaterialInfo(MaterialInfo materialInfo);
+
+    /**
+     * 批量删除物料信息
+     * 
+     * @param ids 需要删除的物料信息主键集合
+     * @return 结果
+     */
+    public int deleteMaterialInfoByIds(Long[] ids);
+
+    /**
+     * 删除物料信息信息
+     * 
+     * @param id 物料信息主键
+     * @return 结果
+     */
+    public int deleteMaterialInfoById(Long id);
+
+    /**
+     * 入库接口
+     * @param materialInfo
+     * @return
+     */
+    String warehousing(MaterialInfo materialInfo);
+
+    /**
+     * 出库接口
+     * @param materialInfo
+     * @return
+     */
+    String outLibrary(MaterialInfo materialInfo);
+}

+ 61 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IMaterialtransactionlogService.java

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.Materialtransactionlog;
+
+/**
+ * 物料出入库日志Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-30
+ */
+public interface IMaterialtransactionlogService 
+{
+    /**
+     * 查询物料出入库日志
+     * 
+     * @param id 物料出入库日志主键
+     * @return 物料出入库日志
+     */
+    public Materialtransactionlog selectMaterialtransactionlogById(Long id);
+
+    /**
+     * 查询物料出入库日志列表
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 物料出入库日志集合
+     */
+    public List<Materialtransactionlog> selectMaterialtransactionlogList(Materialtransactionlog materialtransactionlog);
+
+    /**
+     * 新增物料出入库日志
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 结果
+     */
+    public int insertMaterialtransactionlog(Materialtransactionlog materialtransactionlog);
+
+    /**
+     * 修改物料出入库日志
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 结果
+     */
+    public int updateMaterialtransactionlog(Materialtransactionlog materialtransactionlog);
+
+    /**
+     * 批量删除物料出入库日志
+     * 
+     * @param ids 需要删除的物料出入库日志主键集合
+     * @return 结果
+     */
+    public int deleteMaterialtransactionlogByIds(Long[] ids);
+
+    /**
+     * 删除物料出入库日志信息
+     * 
+     * @param id 物料出入库日志主键
+     * @return 结果
+     */
+    public int deleteMaterialtransactionlogById(Long id);
+}

+ 90 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProductionTasksService.java

@@ -0,0 +1,90 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ProductionTasks;
+import com.zkqy.amichi.domain.vo.ProductionTasksVo;
+
+/**
+ * 生产任务单Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-27
+ */
+public interface IProductionTasksService {
+
+    /**
+     * 查询生产任务单
+     * 
+     * @param id 生产任务单主键
+     * @return 生产任务单
+     */
+    public ProductionTasks selectProductionTasksById(Long id);
+
+    /**
+     * 查询生产任务单
+     *
+     * @param id 生产任务单主键
+     * @return 生产任务单
+     */
+    public ProductionTasksVo selectProductionTasksByIdVo(Long id);
+
+
+    /**
+     * 查询生产任务单列表
+     * 
+     * @param productionTasks 生产任务单
+     * @return 生产任务单集合
+     */
+    public List<ProductionTasks> selectProductionTasksList(ProductionTasks productionTasks);
+
+    /**
+     * 新增生产任务单
+     * 
+     * @param productionTasks 生产任务单
+     * @return 结果
+     */
+    public int insertProductionTasks(ProductionTasks productionTasks);
+
+    /**
+     * 修改生产任务单
+     * 
+     * @param productionTasks 生产任务单
+     * @return 结果
+     */
+    public int updateProductionTasks(ProductionTasks productionTasks);
+
+    /**
+     * 批量删除生产任务单
+     * 
+     * @param ids 需要删除的生产任务单主键集合
+     * @return 结果
+     */
+    public int deleteProductionTasksByIds(Long[] ids);
+
+    /**
+     * 删除生产任务单信息
+     * 
+     * @param id 生产任务单主键
+     * @return 结果
+     */
+    public int deleteProductionTasksById(Long id);
+
+    /**
+     * 插入生产任务单和明细信息
+     * @param productionTasks
+     * @return
+     */
+    int insertProductionTasksVo(ProductionTasksVo productionTasks);
+
+    /**
+     * 修改任务
+     * @param productionTasks
+     * @return
+     */
+    int updateProductionTasksVo(ProductionTasksVo productionTasks);
+
+    /**
+     *
+     */
+    int updateProductionTasksIn(Long[] ids);
+}

+ 62 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ITaskDetailsService.java

@@ -0,0 +1,62 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TaskDetails;
+
+/**
+ * 生产任务单明细Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-27
+ */
+public interface ITaskDetailsService {
+
+    /**
+     * 查询生产任务单明细
+     * 
+     * @param id 生产任务单明细主键
+     * @return 生产任务单明细
+     */
+    public TaskDetails selectTaskDetailsById(Long id);
+
+    /**
+     * 查询生产任务单明细列表
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 生产任务单明细集合
+     */
+    public List<TaskDetails> selectTaskDetailsList(TaskDetails taskDetails);
+
+    /**
+     * 新增生产任务单明细
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 结果
+     */
+    public int insertTaskDetails(TaskDetails taskDetails);
+
+    /**
+     * 修改生产任务单明细
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 结果
+     */
+    public int updateTaskDetails(TaskDetails taskDetails);
+
+    /**
+     * 批量删除生产任务单明细
+     * 
+     * @param ids 需要删除的生产任务单明细主键集合
+     * @return 结果
+     */
+    public int deleteTaskDetailsByIds(Long[] ids);
+
+    /**
+     * 删除生产任务单明细信息
+     * 
+     * @param id 生产任务单明细主键
+     * @return 结果
+     */
+    public int deleteTaskDetailsById(Long id);
+
+}

+ 228 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BillOfMaterialsServiceImpl.java

@@ -0,0 +1,228 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import com.zkqy.amichi.domain.vo.BillOfMaterialsVo;
+import com.zkqy.common.core.domain.entity.SysTenant;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.PageUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.BillOfMaterialsMapper;
+import com.zkqy.amichi.domain.BillOfMaterials;
+import com.zkqy.amichi.service.IBillOfMaterialsService;
+
+/**
+ * 物料清单Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-06-28
+ */
+@Service
+public class BillOfMaterialsServiceImpl implements IBillOfMaterialsService 
+{
+
+    @Autowired
+    private BillOfMaterialsMapper billOfMaterialsMapper;
+
+    /**
+     * 查询物料清单
+     * 
+     * @param id 物料清单主键
+     * @return 物料清单
+     */
+    @Override
+    public BillOfMaterials selectBillOfMaterialsById(Long id)
+    {
+        return billOfMaterialsMapper.selectBillOfMaterialsById(id);
+    }
+
+    /**
+     * 查询物料清单列表
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 物料清单
+     */
+    @Override
+    public List<BillOfMaterials> selectBillOfMaterialsList(BillOfMaterials billOfMaterials)
+    {
+        return billOfMaterialsMapper.selectBillOfMaterialsList(billOfMaterials);
+    }
+
+    /**
+     * 新增物料清单
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 结果
+     */
+    @Override
+    public int insertBillOfMaterials(BillOfMaterials billOfMaterials)
+    {
+        billOfMaterials.setCreateTime(DateUtils.getNowDate());
+        return billOfMaterialsMapper.insertBillOfMaterials(billOfMaterials);
+    }
+
+    /**
+     * 修改物料清单
+     * 
+     * @param billOfMaterials 物料清单
+     * @return 结果
+     */
+    @Override
+    public int updateBillOfMaterials(BillOfMaterials billOfMaterials)
+    {
+        billOfMaterials.setUpdateTime(DateUtils.getNowDate());
+        return billOfMaterialsMapper.updateBillOfMaterials(billOfMaterials);
+    }
+
+    /**
+     * 批量删除物料清单
+     * 
+     * @param ids 需要删除的物料清单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBillOfMaterialsByIds(Long[] ids)
+    {
+        return billOfMaterialsMapper.deleteBillOfMaterialsByIds(ids);
+    }
+
+    /**
+     * 删除物料清单信息
+     * 
+     * @param id 物料清单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBillOfMaterialsById(Long id)
+    {
+
+        //判断当前级别下是否存在子级
+        return billOfMaterialsMapper.deleteBillOfMaterialsById(id);
+    }
+
+    @Override
+    public List<BillOfMaterialsVo> selectBillOfMaterialsListTree(BillOfMaterials billOfMaterials) {
+        //源数据
+        List<BillOfMaterials> billOfMaterialsNowPage= billOfMaterialsMapper.selectBillOfMaterialsList(billOfMaterials);
+
+        BillOfMaterials billOfMaterials1 = new BillOfMaterials();
+        billOfMaterials1.setDelFlag("0");
+        //查询全部
+        List<BillOfMaterials> billOfMaterialsAll = billOfMaterialsMapper.selectBillOfMaterialsList(billOfMaterials1);
+        //循环当前页的数据
+        List<BillOfMaterialsVo> collect = billOfMaterialsNowPage.parallelStream().map(item -> {
+            BillOfMaterialsVo billOfMaterialsVo=new BillOfMaterialsVo();
+            BeanUtils.copyProperties(item,billOfMaterialsVo);
+            //看当前页的行数据是否具备子级菜单
+            long count = billOfMaterialsAll.parallelStream().filter(b -> b.getFid().toString().equals(item.getId().toString())).count();
+            if (count > 0) {
+                billOfMaterialsVo.setHasChildren(true);
+            } else {
+                billOfMaterialsVo.setHasChildren(false);
+            }
+            return billOfMaterialsVo;
+        }).collect(Collectors.toList());
+        //循环拷贝进去的数据(如何知道有没有子级?)
+        return collect;
+    }
+
+    @Override
+    public List<BillOfMaterialsVo> selectBillOfMaterialsByIdTreeInfo(Long id) {
+        BillOfMaterials billOfMaterials=new BillOfMaterials();
+        billOfMaterials.setFid(id.toString());
+        billOfMaterials.setDelFlag("0");
+        //源数据
+        List<BillOfMaterials> billOfMaterialsNowPage= billOfMaterialsMapper.selectBillOfMaterialsList(billOfMaterials);
+        //查询全部
+        BillOfMaterials billOfMaterials1 = new BillOfMaterials();
+        billOfMaterials1.setDelFlag("0");
+        List<BillOfMaterials> billOfMaterialsAll = billOfMaterialsMapper.selectBillOfMaterialsList(billOfMaterials1);
+        //循环当前页的数据
+        List<BillOfMaterialsVo> collect = billOfMaterialsNowPage.parallelStream().map(item -> {
+            BillOfMaterialsVo billOfMaterialsVo=new BillOfMaterialsVo();
+            BeanUtils.copyProperties(item,billOfMaterialsVo);
+            //看当前页的行数据是否具备子级菜单
+            long count = billOfMaterialsAll.parallelStream().filter(b -> b.getFid().toString().equals(item.getId().toString())).count();
+            if (count > 0) {
+                billOfMaterialsVo.setHasChildren(true);
+            } else {
+                billOfMaterialsVo.setHasChildren(false);
+            }
+            return billOfMaterialsVo;
+        }).collect(Collectors.toList());
+        //循环拷贝进去的数据(如何知道有没有子级?)
+        return collect;
+    }
+
+    @Override
+    public List<Map<String, Object>> selectBillOfMaterialsListSelectList() {
+        /*        {
+            id: 1,
+                    label: 'a',
+                children: [
+            {
+                id: 4,
+                        label: 'aa',
+                    children: [
+                {
+                    id: 6,
+                            label: 'aaa',
+                }
+              ],
+            }
+          ],
+        },*/
+        BillOfMaterials billOfMaterials = new BillOfMaterials();
+        billOfMaterials.setDelFlag("0");
+        List<BillOfMaterials> sysTenants = billOfMaterialsMapper.selectBillOfMaterialsList(billOfMaterials);
+        List<Map<String, Object>> maps = this.buildTree(sysTenants);
+        return maps;
+    }
+
+    public List<Map<String, Object>> buildTree(List<BillOfMaterials> billOfMaterials) {
+        // 构造一个Map,方便根据tenantId查找SysTenant
+        Map<Long, BillOfMaterials> tenantMap = billOfMaterials.stream()
+                .collect(Collectors.toMap(BillOfMaterials::getId, Function.identity()));
+        // 获取所有父节点
+        List<Map<String, Object>> parentNodes = billOfMaterials.stream()
+                .filter(m -> m.getFid().equals("0"))
+                .map(billOfMaterial -> {
+                    Map<String, Object> node = new HashMap<>();
+                    node.put("id", billOfMaterial.getId());
+                    node.put("label", billOfMaterial.getMaterialName());
+                    // 递归查找子节点
+                    List<Map<String, Object>> children = findChildren(billOfMaterial.getId(), tenantMap);
+                    if (!children.isEmpty()) {
+                        node.put("children", children);
+                    }
+                    return node;
+                })
+                .collect(Collectors.toList());
+
+        return parentNodes;
+    }
+
+    private List<Map<String, Object>> findChildren(Long parentId, Map<Long, BillOfMaterials> tenantMap) {
+        return tenantMap.values().stream()
+                .filter(child -> child.getFid().equals(parentId.toString()))
+                .map(child -> {
+                    Map<String, Object> childNode = new HashMap<>();
+                    childNode.put("id", child.getId());
+                    childNode.put("label", child.getMaterialName());
+                    // 递归查找孙子节点
+                    List<Map<String, Object>> grandchildren = findChildren(child.getId(), tenantMap);
+                    if (!grandchildren.isEmpty()) {
+                        childNode.put("children", grandchildren);
+                    }
+                    return childNode;
+                })
+                .collect(Collectors.toList());
+    }
+}

+ 189 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/MaterialInfoServiceImpl.java

@@ -0,0 +1,189 @@
+package com.zkqy.amichi.service.impl;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import com.zkqy.amichi.domain.Materialtransactionlog;
+import com.zkqy.amichi.mapper.MaterialtransactionlogMapper;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.MaterialInfoMapper;
+import com.zkqy.amichi.domain.MaterialInfo;
+import com.zkqy.amichi.service.IMaterialInfoService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 物料信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-06-30
+ */
+@Service
+public class MaterialInfoServiceImpl implements IMaterialInfoService 
+{
+    @Autowired
+    private MaterialInfoMapper materialInfoMapper;
+    
+    @Autowired
+    private MaterialtransactionlogMapper materialtransactionlogMapper;
+
+    /**
+     * 查询物料信息
+     * 
+     * @param id 物料信息主键
+     * @return 物料信息
+     */
+    @Override
+    public MaterialInfo selectMaterialInfoById(Long id)
+    {
+        return materialInfoMapper.selectMaterialInfoById(id);
+    }
+
+    /**
+     * 查询物料信息列表
+     * 
+     * @param materialInfo 物料信息
+     * @return 物料信息
+     */
+    @Override
+    public List<MaterialInfo> selectMaterialInfoList(MaterialInfo materialInfo)
+    {
+        return materialInfoMapper.selectMaterialInfoList(materialInfo);
+    }
+
+    /**
+     * 新增物料信息
+     * 
+     * @param materialInfo 物料信息
+     * @return 结果
+     */
+    @Override
+    public int insertMaterialInfo(MaterialInfo materialInfo)
+    {
+        materialInfo.setCreateTime(DateUtils.getNowDate());
+        return materialInfoMapper.insertMaterialInfo(materialInfo);
+    }
+
+    /**
+     * 修改物料信息
+     * 
+     * @param materialInfo 物料信息
+     * @return 结果
+     */
+    @Override
+    public int updateMaterialInfo(MaterialInfo materialInfo)
+    {
+        materialInfo.setUpdateTime(DateUtils.getNowDate());
+        return materialInfoMapper.updateMaterialInfo(materialInfo);
+    }
+
+    /**
+     * 批量删除物料信息
+     * 
+     * @param ids 需要删除的物料信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMaterialInfoByIds(Long[] ids)
+    {
+        return materialInfoMapper.deleteMaterialInfoByIds(ids);
+    }
+
+    /**
+     * 删除物料信息信息
+     * 
+     * @param id 物料信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMaterialInfoById(Long id)
+    {
+        return materialInfoMapper.deleteMaterialInfoById(id);
+    }
+
+    /**
+     * 物料入库接口
+     * @param materialInfo
+     * @return
+     */
+    @Override
+    @Transactional
+    public String warehousing(MaterialInfo materialInfo) {
+        //先查询有没有这个编码的库存信息
+        MaterialInfo materialInfo1=new MaterialInfo();
+        materialInfo1.setMaterialCode(materialInfo.getMaterialCode());
+        //查询是否存在当前物料信息
+        List<MaterialInfo> materialInfos = materialInfoMapper.selectMaterialInfoList(materialInfo1);
+        if(materialInfos.size()>0){ //存在物料信息---更新数量操作
+            //库存数量
+            Double oldValue = materialInfos.get(0).getStockQuantity();
+            Double value = materialInfo.getStockQuantity();
+            Double newValue= oldValue+ value;
+            //赋值新的数量
+            materialInfo1.setStockQuantity(newValue);
+            materialInfoMapper.updateMaterialInfoByCode(materialInfo1);
+            //插入日志信息
+            Materialtransactionlog materialtransactionlog=new Materialtransactionlog();
+            BeanUtils.copyProperties(materialInfo,materialtransactionlog);
+            materialtransactionlog.setTypeOfOperation("0");//操作类型
+            materialtransactionlog.setQuantity(materialInfo.getStockQuantity());//当前操作数量
+            materialtransactionlog.setWarehousingTime(LocalDateTime.now());//入库时间
+            materialtransactionlog.setOperator(SecurityUtils.getUsername());//操作人
+            materialtransactionlogMapper.insertMaterialtransactionlog(materialtransactionlog);
+            return "入库成功 库存累加成功";
+        }else {
+            materialInfoMapper.insertMaterialInfo(materialInfo);
+            //插入日志信息
+            Materialtransactionlog materialtransactionlog=new Materialtransactionlog();
+            BeanUtils.copyProperties(materialInfo,materialtransactionlog);
+            materialtransactionlog.setQuantity(materialInfo.getStockQuantity()); //当前操作数量
+            materialtransactionlog.setTypeOfOperation("0");//操作类型
+            materialtransactionlog.setWarehousingTime(LocalDateTime.now());//入库时间
+            materialtransactionlog.setOperator(SecurityUtils.getUsername());//操作人
+            materialtransactionlogMapper.insertMaterialtransactionlog(materialtransactionlog);
+            return "入库成功 新增库存";
+        }
+    }
+
+
+
+    @Override
+    @Transactional
+    public String outLibrary(MaterialInfo materialInfo) {
+        //先查询有没有这个编码的库存信息
+        MaterialInfo materialInfo1=new MaterialInfo();
+        materialInfo1.setMaterialCode(materialInfo.getMaterialCode());
+        //查询是否存在当前物料信息
+        List<MaterialInfo> materialInfos = materialInfoMapper.selectMaterialInfoList(materialInfo1);
+        if(materialInfos.size()<=0) { //存在物料信息---更新数量操作
+          return "不存在此物料信息不能出库";
+        }else {
+          //存在物料信息
+            //1、出库数量大于库存数量
+            if(materialInfo.getStockQuantity()>materialInfos.get(0).getStockQuantity()){
+                return "当前物料库存不足,出库失败";
+            //2、出库数量小于库存数量
+            }else {
+                //库存数量
+                Double oldValue = materialInfos.get(0).getStockQuantity();
+                Double value = materialInfo.getStockQuantity();
+                Double newValue= oldValue- value;
+                //赋值新的数量
+                materialInfo1.setStockQuantity(newValue);
+                materialInfoMapper.updateMaterialInfoByCode(materialInfo1);
+                //插入日志信息
+                Materialtransactionlog materialtransactionlog=new Materialtransactionlog();
+                BeanUtils.copyProperties(materialInfo,materialtransactionlog);
+                materialtransactionlog.setQuantity(materialInfo.getStockQuantity()); //当前操作数量
+                materialtransactionlog.setTypeOfOperation("1");//操作类型
+                materialtransactionlog.setTransactionDate(LocalDateTime.now()); //出库时间
+                materialtransactionlog.setOperator(SecurityUtils.getUsername());//操作人
+                materialtransactionlogMapper.insertMaterialtransactionlog(materialtransactionlog);
+                return "出库成功";
+            }
+        }
+    }
+}

+ 98 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/MaterialtransactionlogServiceImpl.java

@@ -0,0 +1,98 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.MaterialtransactionlogMapper;
+import com.zkqy.amichi.domain.Materialtransactionlog;
+import com.zkqy.amichi.service.IMaterialtransactionlogService;
+
+/**
+ * 物料出入库日志Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-06-30
+ */
+@Service
+public class MaterialtransactionlogServiceImpl implements IMaterialtransactionlogService 
+{
+    @Autowired
+    private MaterialtransactionlogMapper materialtransactionlogMapper;
+
+    /**
+     * 查询物料出入库日志
+     * 
+     * @param id 物料出入库日志主键
+     * @return 物料出入库日志
+     */
+    @Override
+    public Materialtransactionlog selectMaterialtransactionlogById(Long id)
+    {
+        return materialtransactionlogMapper.selectMaterialtransactionlogById(id);
+    }
+
+    /**
+     * 查询物料出入库日志列表
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 物料出入库日志
+     */
+    @Override
+    public List<Materialtransactionlog> selectMaterialtransactionlogList(Materialtransactionlog materialtransactionlog)
+    {
+        return materialtransactionlogMapper.selectMaterialtransactionlogList(materialtransactionlog);
+    }
+
+    /**
+     * 新增物料出入库日志
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 结果
+     */
+    @Override
+    public int insertMaterialtransactionlog(Materialtransactionlog materialtransactionlog)
+    {
+        materialtransactionlog.setCreateTime(DateUtils.getNowDate());
+        materialtransactionlog.setOperator(SecurityUtils.getUsername());//操作人
+        return materialtransactionlogMapper.insertMaterialtransactionlog(materialtransactionlog);
+    }
+
+    /**
+     * 修改物料出入库日志
+     * 
+     * @param materialtransactionlog 物料出入库日志
+     * @return 结果
+     */
+    @Override
+    public int updateMaterialtransactionlog(Materialtransactionlog materialtransactionlog)
+    {
+        materialtransactionlog.setUpdateTime(DateUtils.getNowDate());
+        return materialtransactionlogMapper.updateMaterialtransactionlog(materialtransactionlog);
+    }
+
+    /**
+     * 批量删除物料出入库日志
+     * 
+     * @param ids 需要删除的物料出入库日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMaterialtransactionlogByIds(Long[] ids)
+    {
+        return materialtransactionlogMapper.deleteMaterialtransactionlogByIds(ids);
+    }
+
+    /**
+     * 删除物料出入库日志信息
+     * 
+     * @param id 物料出入库日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMaterialtransactionlogById(Long id)
+    {
+        return materialtransactionlogMapper.deleteMaterialtransactionlogById(id);
+    }
+}

+ 153 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionTasksServiceImpl.java

@@ -0,0 +1,153 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+
+import com.zkqy.amichi.domain.TaskDetails;
+import com.zkqy.amichi.domain.vo.ProductionTasksVo;
+import com.zkqy.amichi.mapper.TaskDetailsMapper;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.ProductionTasksMapper;
+import com.zkqy.amichi.domain.ProductionTasks;
+import com.zkqy.amichi.service.IProductionTasksService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 生产任务单Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-06-27
+ */
+@Service
+public class ProductionTasksServiceImpl implements IProductionTasksService {
+
+    @Autowired
+    private ProductionTasksMapper productionTasksMapper;
+
+    @Autowired
+    private TaskDetailsMapper  taskDetailsMapper;
+
+    /**
+     * 查询生产任务单
+     * 
+     * @param id 生产任务单主键
+     * @return 生产任务单
+     */
+    @Override
+    public ProductionTasks selectProductionTasksById(Long id)
+    {
+        return productionTasksMapper.selectProductionTasksById(id);
+    }
+
+    @Override
+    public ProductionTasksVo selectProductionTasksByIdVo(Long id) {
+        ProductionTasksVo productionTasksVo=new ProductionTasksVo();
+        ProductionTasks productionTasks = productionTasksMapper.selectProductionTasksById(id);
+        BeanUtils.copyProperties(productionTasks,productionTasksVo);
+        List<TaskDetails> taskDetails = taskDetailsMapper.selectTaskDetailsListByTaskId(productionTasks.getId().toString());
+        productionTasksVo.setTaskDetails(taskDetails);
+        return productionTasksVo;
+    }
+
+    /**
+     * 查询生产任务单列表
+     * 
+     * @param productionTasks 生产任务单
+     * @return 生产任务单
+     */
+    @Override
+    public List<ProductionTasks> selectProductionTasksList(ProductionTasks productionTasks)
+    {
+        productionTasks.setDelFlag("0");
+        return productionTasksMapper.selectProductionTasksList(productionTasks);
+    }
+
+    /**
+     * 新增生产任务单
+     * 
+     * @param productionTasks 生产任务单
+     * @return 结果
+     */
+    @Override
+    public int insertProductionTasks(ProductionTasks productionTasks)
+    {
+        productionTasks.setCreateTime(DateUtils.getNowDate());
+        return productionTasksMapper.insertProductionTasks(productionTasks);
+    }
+
+    /**
+     * 修改生产任务单
+     * 
+     * @param productionTasks 生产任务单
+     * @return 结果
+     */
+    @Override
+    public int updateProductionTasks(ProductionTasks productionTasks)
+    {
+        productionTasks.setUpdateTime(DateUtils.getNowDate());
+
+        return productionTasksMapper.updateProductionTasks(productionTasks);
+    }
+
+    /**
+     * 批量删除生产任务单
+     * 
+     * @param ids 需要删除的生产任务单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductionTasksByIds(Long[] ids)
+    {
+        return productionTasksMapper.deleteProductionTasksByIds(ids);
+    }
+
+    /**
+     * 删除生产任务单信息
+     * 
+     * @param id 生产任务单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductionTasksById(Long id)
+    {
+        return productionTasksMapper.deleteProductionTasksById(id);
+    }
+
+    @Override
+    @Transactional
+    public int insertProductionTasksVo(ProductionTasksVo productionTasks) {
+        productionTasks.setCreator(SecurityUtils.getUsername());//制单人
+        int i = productionTasksMapper.insertProductionTasks(productionTasks);
+        productionTasks.getTaskDetails().forEach(item->{
+            item.setTaskId(productionTasks.getId().toString());
+            int i1 = taskDetailsMapper.insertTaskDetails(item);
+        });
+        return 1;
+
+    }
+
+    @Override
+    @Transactional
+    public int updateProductionTasksVo(ProductionTasksVo productionTasks) {
+        productionTasks.setUpdateTime(DateUtils.getNowDate());
+        //删除以前的
+        taskDetailsMapper.updateTaskDetailsInIdDelete(productionTasks.getId().toString());
+        //添加新的
+        productionTasks.getTaskDetails().forEach(item->{
+            item.setTaskId(productionTasks.getId().toString());
+            int i1 = taskDetailsMapper.insertTaskDetails(item);
+        });
+        //修正主表数据
+        return productionTasksMapper.updateProductionTasks(productionTasks);
+    }
+
+    @Override
+    @Transactional
+    public int updateProductionTasksIn(Long[] ids) {
+        taskDetailsMapper.updateTaskDetailsInTaskId(ids);
+        return productionTasksMapper.updateProductionTasksIn(ids);
+    }
+}

+ 97 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TaskDetailsServiceImpl.java

@@ -0,0 +1,97 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.TaskDetailsMapper;
+import com.zkqy.amichi.domain.TaskDetails;
+import com.zkqy.amichi.service.ITaskDetailsService;
+
+/**
+ * 生产任务单明细Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-06-27
+ */
+@Service
+public class TaskDetailsServiceImpl implements ITaskDetailsService 
+{
+    @Autowired
+    private TaskDetailsMapper taskDetailsMapper;
+
+    /**
+     * 查询生产任务单明细
+     * 
+     * @param id 生产任务单明细主键
+     * @return 生产任务单明细
+     */
+    @Override
+    public TaskDetails selectTaskDetailsById(Long id)
+    {
+        return taskDetailsMapper.selectTaskDetailsById(id);
+    }
+
+    /**
+     * 查询生产任务单明细列表
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 生产任务单明细
+     */
+    @Override
+    public List<TaskDetails> selectTaskDetailsList(TaskDetails taskDetails)
+    {
+        taskDetails.setDelFlag("0");
+        return taskDetailsMapper.selectTaskDetailsList(taskDetails);
+    }
+
+    /**
+     * 新增生产任务单明细
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 结果
+     */
+    @Override
+    public int insertTaskDetails(TaskDetails taskDetails)
+    {
+        taskDetails.setCreateTime(DateUtils.getNowDate());
+        return taskDetailsMapper.insertTaskDetails(taskDetails);
+    }
+
+    /**
+     * 修改生产任务单明细
+     * 
+     * @param taskDetails 生产任务单明细
+     * @return 结果
+     */
+    @Override
+    public int updateTaskDetails(TaskDetails taskDetails)
+    {
+        taskDetails.setUpdateTime(DateUtils.getNowDate());
+        return taskDetailsMapper.updateTaskDetails(taskDetails);
+    }
+
+    /**
+     * 批量删除生产任务单明细
+     * 
+     * @param ids 需要删除的生产任务单明细主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTaskDetailsByIds(Long[] ids)
+    {
+        return taskDetailsMapper.deleteTaskDetailsByIds(ids);
+    }
+
+    /**
+     * 删除生产任务单明细信息
+     * 
+     * @param id 生产任务单明细主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTaskDetailsById(Long id)
+    {
+        return taskDetailsMapper.deleteTaskDetailsById(id);
+    }
+}

+ 251 - 0
zkqy-fujian-amichi/src/main/resources/mapper/BillOfMaterialsMapper.xml

@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.amichi.mapper.BillOfMaterialsMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.BillOfMaterials" id="BillOfMaterialsResult">
+        <result property="id"    column="id"    />
+        <result property="fid"    column="fid"    />
+        <result property="materialCode"    column="material_code"    />
+        <result property="materialName"    column="material_name"    />
+        <result property="modelNumber"    column="model_number"    />
+        <result property="specification"    column="specification"    />
+        <result property="dosageMolecular"    column="dosage_molecular"    />
+        <result property="usageDenominator"    column="usage_denominator"    />
+        <result property="skipOrNot"    column="skip_or_not"    />
+        <result property="materialProperty"    column="material_property"    />
+        <result property="dataState"    column="data_state"    />
+        <result property="bomVersion"    column="bom_version"    />
+        <result property="materialIssueMethod"    column="material_issue_method"    />
+        <result property="job"    column="job"    />
+        <result property="subitemType"    column="subitem_type"    />
+        <result property="standardDosage"    column="standard_dosage"    />
+        <result property="actualQuantity"    column="actual_quantity"    />
+        <result property="auxiliaryAttribute"    column="auxiliary_attribute"    />
+        <result property="dosageType"    column="dosage_type"    />
+        <result property="fixedLoss"    column="fixed_loss"    />
+        <result property="changeTheAttritionRate"    column="change_the_attrition_rate"    />
+        <result property="alternativeStrategy"    column="alternative_strategy"    />
+        <result property="alternativeMode"    column="alternative_mode"    />
+        <result property="substituteMaterial"    column="substitute_material"    />
+        <result property="effectiveDate"    column="effective_date"    />
+        <result property="expirationDate"    column="expiration_date"    />
+        <result property="presenceOfCobyproducts"    column="presence_of_cobyproducts"    />
+        <result property="standardSubitemUsage"    column="standard_subitem_usage"    />
+        <result property="actualSubitemUsage"    column="actual_subitem_usage"    />
+        <result property="inventory"    column="inventory"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectBillOfMaterialsVo">
+        select id, fid, material_code, material_name, model_number, specification, dosage_molecular, usage_denominator, skip_or_not, material_property, data_state, bom_version, material_issue_method, job, subitem_type, standard_dosage, actual_quantity, auxiliary_attribute, dosage_type, fixed_loss, change_the_attrition_rate, alternative_strategy, alternative_mode, substitute_material, effective_date, expiration_date, presence_of_cobyproducts, standard_subitem_usage, actual_subitem_usage, inventory, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from fjqydb.bill_of_materials
+    </sql>
+
+    <select id="selectBillOfMaterialsList" parameterType="com.zkqy.amichi.domain.BillOfMaterials" resultMap="BillOfMaterialsResult">
+        <include refid="selectBillOfMaterialsVo"/>
+        <where>  
+            <if test="fid != null  and fid != ''"> and fid = #{fid}</if>
+            <if test="materialCode != null  and materialCode != ''"> and material_code = #{materialCode}</if>
+            <if test="materialName != null  and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
+            <if test="modelNumber != null  and modelNumber != ''"> and model_number = #{modelNumber}</if>
+            <if test="specification != null  and specification != ''"> and specification = #{specification}</if>
+            <if test="dosageMolecular != null  and dosageMolecular != ''"> and dosage_molecular = #{dosageMolecular}</if>
+            <if test="usageDenominator != null  and usageDenominator != ''"> and usage_denominator = #{usageDenominator}</if>
+            <if test="skipOrNot != null  and skipOrNot != ''"> and skip_or_not = #{skipOrNot}</if>
+            <if test="materialProperty != null  and materialProperty != ''"> and material_property = #{materialProperty}</if>
+            <if test="dataState != null  and dataState != ''"> and data_state = #{dataState}</if>
+            <if test="bomVersion != null  and bomVersion != ''"> and bom_version = #{bomVersion}</if>
+            <if test="materialIssueMethod != null  and materialIssueMethod != ''"> and material_issue_method = #{materialIssueMethod}</if>
+            <if test="job != null  and job != ''"> and job = #{job}</if>
+            <if test="subitemType != null  and subitemType != ''"> and subitem_type = #{subitemType}</if>
+            <if test="standardDosage != null  and standardDosage != ''"> and standard_dosage = #{standardDosage}</if>
+            <if test="actualQuantity != null  and actualQuantity != ''"> and actual_quantity = #{actualQuantity}</if>
+            <if test="auxiliaryAttribute != null  and auxiliaryAttribute != ''"> and auxiliary_attribute = #{auxiliaryAttribute}</if>
+            <if test="dosageType != null  and dosageType != ''"> and dosage_type = #{dosageType}</if>
+            <if test="fixedLoss != null  and fixedLoss != ''"> and fixed_loss = #{fixedLoss}</if>
+            <if test="changeTheAttritionRate != null  and changeTheAttritionRate != ''"> and change_the_attrition_rate = #{changeTheAttritionRate}</if>
+            <if test="alternativeStrategy != null  and alternativeStrategy != ''"> and alternative_strategy = #{alternativeStrategy}</if>
+            <if test="alternativeMode != null  and alternativeMode != ''"> and alternative_mode = #{alternativeMode}</if>
+            <if test="substituteMaterial != null  and substituteMaterial != ''"> and substitute_material = #{substituteMaterial}</if>
+            <if test="effectiveDate != null "> and effective_date = #{effectiveDate}</if>
+            <if test="expirationDate != null "> and expiration_date = #{expirationDate}</if>
+            <if test="presenceOfCobyproducts != null  and presenceOfCobyproducts != ''"> and presence_of_cobyproducts = #{presenceOfCobyproducts}</if>
+            <if test="standardSubitemUsage != null  and standardSubitemUsage != ''"> and standard_subitem_usage = #{standardSubitemUsage}</if>
+            <if test="actualSubitemUsage != null  and actualSubitemUsage != ''"> and actual_subitem_usage = #{actualSubitemUsage}</if>
+            <if test="inventory != null  and inventory != ''"> and inventory = #{inventory}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+             <if test="delFlag!=null and delFlag!=''">and del_flag=#{delFlag}</if>
+        </where>
+    </select>
+    
+    <select id="selectBillOfMaterialsById" parameterType="Long" resultMap="BillOfMaterialsResult">
+        <include refid="selectBillOfMaterialsVo"/>
+        where id = #{id} and del_flag=0
+    </select>
+        
+    <insert id="insertBillOfMaterials" parameterType="com.zkqy.amichi.domain.BillOfMaterials" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.bill_of_materials
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="fid != null">fid,</if>
+            <if test="materialCode != null">material_code,</if>
+            <if test="materialName != null">material_name,</if>
+            <if test="modelNumber != null">model_number,</if>
+            <if test="specification != null">specification,</if>
+            <if test="dosageMolecular != null">dosage_molecular,</if>
+            <if test="usageDenominator != null">usage_denominator,</if>
+            <if test="skipOrNot != null">skip_or_not,</if>
+            <if test="materialProperty != null">material_property,</if>
+            <if test="dataState != null">data_state,</if>
+            <if test="bomVersion != null">bom_version,</if>
+            <if test="materialIssueMethod != null">material_issue_method,</if>
+            <if test="job != null">job,</if>
+            <if test="subitemType != null">subitem_type,</if>
+            <if test="standardDosage != null">standard_dosage,</if>
+            <if test="actualQuantity != null">actual_quantity,</if>
+            <if test="auxiliaryAttribute != null">auxiliary_attribute,</if>
+            <if test="dosageType != null">dosage_type,</if>
+            <if test="fixedLoss != null">fixed_loss,</if>
+            <if test="changeTheAttritionRate != null">change_the_attrition_rate,</if>
+            <if test="alternativeStrategy != null">alternative_strategy,</if>
+            <if test="alternativeMode != null">alternative_mode,</if>
+            <if test="substituteMaterial != null">substitute_material,</if>
+            <if test="effectiveDate != null">effective_date,</if>
+            <if test="expirationDate != null">expiration_date,</if>
+            <if test="presenceOfCobyproducts != null">presence_of_cobyproducts,</if>
+            <if test="standardSubitemUsage != null">standard_subitem_usage,</if>
+            <if test="actualSubitemUsage != null">actual_subitem_usage,</if>
+            <if test="inventory != null">inventory,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="fid != null">#{fid},</if>
+            <if test="materialCode != null">#{materialCode},</if>
+            <if test="materialName != null">#{materialName},</if>
+            <if test="modelNumber != null">#{modelNumber},</if>
+            <if test="specification != null">#{specification},</if>
+            <if test="dosageMolecular != null">#{dosageMolecular},</if>
+            <if test="usageDenominator != null">#{usageDenominator},</if>
+            <if test="skipOrNot != null">#{skipOrNot},</if>
+            <if test="materialProperty != null">#{materialProperty},</if>
+            <if test="dataState != null">#{dataState},</if>
+            <if test="bomVersion != null">#{bomVersion},</if>
+            <if test="materialIssueMethod != null">#{materialIssueMethod},</if>
+            <if test="job != null">#{job},</if>
+            <if test="subitemType != null">#{subitemType},</if>
+            <if test="standardDosage != null">#{standardDosage},</if>
+            <if test="actualQuantity != null">#{actualQuantity},</if>
+            <if test="auxiliaryAttribute != null">#{auxiliaryAttribute},</if>
+            <if test="dosageType != null">#{dosageType},</if>
+            <if test="fixedLoss != null">#{fixedLoss},</if>
+            <if test="changeTheAttritionRate != null">#{changeTheAttritionRate},</if>
+            <if test="alternativeStrategy != null">#{alternativeStrategy},</if>
+            <if test="alternativeMode != null">#{alternativeMode},</if>
+            <if test="substituteMaterial != null">#{substituteMaterial},</if>
+            <if test="effectiveDate != null">#{effectiveDate},</if>
+            <if test="expirationDate != null">#{expirationDate},</if>
+            <if test="presenceOfCobyproducts != null">#{presenceOfCobyproducts},</if>
+            <if test="standardSubitemUsage != null">#{standardSubitemUsage},</if>
+            <if test="actualSubitemUsage != null">#{actualSubitemUsage},</if>
+            <if test="inventory != null">#{inventory},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBillOfMaterials" parameterType="com.zkqy.amichi.domain.BillOfMaterials">
+        update {DBNAME}.bill_of_materials
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="fid != null">fid = #{fid},</if>
+            <if test="materialCode != null">material_code = #{materialCode},</if>
+            <if test="materialName != null">material_name = #{materialName},</if>
+            <if test="modelNumber != null">model_number = #{modelNumber},</if>
+            <if test="specification != null">specification = #{specification},</if>
+            <if test="dosageMolecular != null">dosage_molecular = #{dosageMolecular},</if>
+            <if test="usageDenominator != null">usage_denominator = #{usageDenominator},</if>
+            <if test="skipOrNot != null">skip_or_not = #{skipOrNot},</if>
+            <if test="materialProperty != null">material_property = #{materialProperty},</if>
+            <if test="dataState != null">data_state = #{dataState},</if>
+            <if test="bomVersion != null">bom_version = #{bomVersion},</if>
+            <if test="materialIssueMethod != null">material_issue_method = #{materialIssueMethod},</if>
+            <if test="job != null">job = #{job},</if>
+            <if test="subitemType != null">subitem_type = #{subitemType},</if>
+            <if test="standardDosage != null">standard_dosage = #{standardDosage},</if>
+            <if test="actualQuantity != null">actual_quantity = #{actualQuantity},</if>
+            <if test="auxiliaryAttribute != null">auxiliary_attribute = #{auxiliaryAttribute},</if>
+            <if test="dosageType != null">dosage_type = #{dosageType},</if>
+            <if test="fixedLoss != null">fixed_loss = #{fixedLoss},</if>
+            <if test="changeTheAttritionRate != null">change_the_attrition_rate = #{changeTheAttritionRate},</if>
+            <if test="alternativeStrategy != null">alternative_strategy = #{alternativeStrategy},</if>
+            <if test="alternativeMode != null">alternative_mode = #{alternativeMode},</if>
+            <if test="substituteMaterial != null">substitute_material = #{substituteMaterial},</if>
+            <if test="effectiveDate != null">effective_date = #{effectiveDate},</if>
+            <if test="expirationDate != null">expiration_date = #{expirationDate},</if>
+            <if test="presenceOfCobyproducts != null">presence_of_cobyproducts = #{presenceOfCobyproducts},</if>
+            <if test="standardSubitemUsage != null">standard_subitem_usage = #{standardSubitemUsage},</if>
+            <if test="actualSubitemUsage != null">actual_subitem_usage = #{actualSubitemUsage},</if>
+            <if test="inventory != null">inventory = #{inventory},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBillOfMaterialsById" parameterType="Long">
+        delete from {DBNAME}.bill_of_materials where id = #{id}
+    </delete>
+
+    <delete id="deleteBillOfMaterialsByIds" parameterType="String">
+        delete from {DBNAME}.bill_of_materials where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 171 - 0
zkqy-fujian-amichi/src/main/resources/mapper/MaterialInfoMapper.xml

@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.amichi.mapper.MaterialInfoMapper">
+
+    <resultMap type="com.zkqy.amichi.domain.MaterialInfo" id="MaterialInfoResult">
+        <result property="id"    column="id"    />
+        <result property="materialCode"    column="material_code"    />
+        <result property="materialName"    column="material_name"    />
+        <result property="model"    column="model"    />
+        <result property="specification"    column="specification"    />
+        <result property="unit"    column="unit"    />
+        <result property="attribute"    column="attribute"    />
+        <result property="issueMethod"    column="issueMethod"    />
+        <result property="stockQuantity"    column="stockQuantity"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectMaterialInfoVo">
+        select id, material_code, material_name, model, specification, unit, attribute, issueMethod, stockQuantity, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from {DBNAME}.materialInfo
+    </sql>
+
+    <select id="selectMaterialInfoList" parameterType="com.zkqy.amichi.domain.MaterialInfo" resultMap="MaterialInfoResult">
+        <include refid="selectMaterialInfoVo"/>
+        <where>
+            <if test="materialCode != null  and materialCode != ''"> and material_code = #{materialCode}</if>
+            <if test="materialName != null  and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="specification != null  and specification != ''"> and specification = #{specification}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="attribute != null  and attribute != ''"> and attribute = #{attribute}</if>
+            <if test="issueMethod != null  and issueMethod != ''"> and issueMethod = #{issueMethod}</if>
+            <if test="stockQuantity != null "> and stockQuantity = #{stockQuantity}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+
+    <select id="selectMaterialInfoById" parameterType="Long" resultMap="MaterialInfoResult">
+        <include refid="selectMaterialInfoVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertMaterialInfo" parameterType="com.zkqy.amichi.domain.MaterialInfo" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.materialInfo
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null and materialCode != ''">material_code,</if>
+            <if test="materialName != null and materialName != ''">material_name,</if>
+            <if test="model != null">model,</if>
+            <if test="specification != null">specification,</if>
+            <if test="unit != null and unit != ''">unit,</if>
+            <if test="attribute != null and attribute != ''">attribute,</if>
+            <if test="issueMethod != null">issueMethod,</if>
+            <if test="stockQuantity != null">stockQuantity,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null and materialCode != ''">#{materialCode},</if>
+            <if test="materialName != null and materialName != ''">#{materialName},</if>
+            <if test="model != null">#{model},</if>
+            <if test="specification != null">#{specification},</if>
+            <if test="unit != null and unit != ''">#{unit},</if>
+            <if test="attribute != null and attribute != ''">#{attribute},</if>
+            <if test="issueMethod != null">#{issueMethod},</if>
+            <if test="stockQuantity != null">#{stockQuantity},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateMaterialInfo" parameterType="com.zkqy.amichi.domain.MaterialInfo">
+        update {DBNAME}.materialInfo
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialCode != null and materialCode != ''">material_code = #{materialCode},</if>
+            <if test="materialName != null and materialName != ''">material_name = #{materialName},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="specification != null">specification = #{specification},</if>
+            <if test="unit != null and unit != ''">unit = #{unit},</if>
+            <if test="attribute != null and attribute != ''">attribute = #{attribute},</if>
+            <if test="issueMethod != null">issueMethod = #{issueMethod},</if>
+            <if test="stockQuantity != null">stockQuantity = #{stockQuantity},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+    <update id="updateMaterialInfoByCode">
+        update {DBNAME}.materialInfo
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialCode != null and materialCode != ''">material_code = #{materialCode},</if>
+            <if test="materialName != null and materialName != ''">material_name = #{materialName},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="specification != null">specification = #{specification},</if>
+            <if test="unit != null and unit != ''">unit = #{unit},</if>
+            <if test="attribute != null and attribute != ''">`attribute` = #{attribute},</if>
+            <if test="issueMethod != null">issueMethod = #{issueMethod},</if>
+            <if test="stockQuantity != null">stockQuantity = #{stockQuantity},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where material_code = #{materialCode}
+    </update>
+
+    <delete id="deleteMaterialInfoById" parameterType="Long">
+        delete from {DBNAME}.materialInfo where id = #{id}
+    </delete>
+
+    <delete id="deleteMaterialInfoByIds" parameterType="String">
+        delete from {DBNAME}.materialInfo where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 179 - 0
zkqy-fujian-amichi/src/main/resources/mapper/MaterialtransactionlogMapper.xml

@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.amichi.mapper.MaterialtransactionlogMapper">
+    <resultMap type="com.zkqy.amichi.domain.Materialtransactionlog" id="MaterialtransactionlogResult">
+        <result property="id"    column="id"    />
+        <result property="materialCode"    column="materialCode"    />
+        <result property="materialName"    column="material_name"    />
+        <result property="model"    column="model"    />
+        <result property="specification"    column="specification"    />
+        <result property="unit"    column="unit"    />
+        <result property="attribute"    column="attribute"    />
+        <result property="typeOfOperation"    column="type_of_operation"    />
+        <result property="quantity"    column="quantity"    />
+        <result property="transactionDate"    column="transactionDate"    />
+        <result property="warehousingTime"    column="warehousing_time"    />
+
+        <result property="operator"    column="operator"    />
+        <result property="batchNumber"    column="batchNumber"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+        <result property="sparea"    column="sparea"    />
+        <result property="spareb"    column="spareb"    />
+        <result property="sparec"    column="sparec"    />
+    </resultMap>
+
+    <sql id="selectMaterialtransactionlogVo">
+        select id, materialCode, material_name, model, specification, unit, attribute, type_of_operation, quantity, transactionDate,warehousing_time, operator, batchNumber, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key, sparea, spareb, sparec from  {DBNAME}.materialtransactionlog
+    </sql>
+
+    <select id="selectMaterialtransactionlogList" parameterType="com.zkqy.amichi.domain.Materialtransactionlog" resultMap="MaterialtransactionlogResult">
+        <include refid="selectMaterialtransactionlogVo"/>
+        <where>  
+            <if test="materialCode != null  and materialCode != ''"> and materialCode = #{materialCode}</if>
+            <if test="materialName != null  and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="specification != null  and specification != ''"> and specification = #{specification}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="attribute != null  and attribute != ''"> and attribute = #{attribute}</if>
+            <if test="typeOfOperation != null  and typeOfOperation != ''"> and type_of_operation = #{typeOfOperation}</if>
+            <if test="quantity != null "> and quantity = #{quantity}</if>
+            <if test="transactionDate != null "> and transactionDate = #{transactionDate}</if>
+            <if test="warehousingTime != null "> and warehousing_time = #{transactionDate}</if>
+            <if test="operator != null  and operator != ''"> and operator like concat('%', #{operator}, '%')</if>
+            <if test="batchNumber != null  and batchNumber != ''"> and batchNumber = #{batchNumber}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+            <if test="sparea != null  and sparea != ''"> and sparea = #{sparea}</if>
+            <if test="spareb != null  and spareb != ''"> and spareb = #{spareb}</if>
+            <if test="sparec != null  and sparec != ''"> and sparec = #{sparec}</if>
+        </where>
+    </select>
+    
+    <select id="selectMaterialtransactionlogById" parameterType="Long" resultMap="MaterialtransactionlogResult">
+        <include refid="selectMaterialtransactionlogVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertMaterialtransactionlog" parameterType="com.zkqy.amichi.domain.Materialtransactionlog" useGeneratedKeys="true" keyProperty="id">
+        insert into  {DBNAME}.materialtransactionlog
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null and materialCode != ''">materialCode,</if>
+            <if test="materialName != null and materialName != ''">material_name,</if>
+            <if test="model != null">model,</if>
+            <if test="specification != null">specification,</if>
+            <if test="unit != null">unit,</if>
+            <if test="attribute != null and attribute != ''">`attribute`,</if>
+            <if test="typeOfOperation != null">type_of_operation,</if>
+            <if test="quantity != null">quantity,</if>
+            <if test="transactionDate != null">transactionDate,</if>
+            <if test="warehousingTime !=null">warehousing_time,</if>
+            <if test="operator != null and operator != ''">operator,</if>
+            <if test="batchNumber != null">batchNumber,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+            <if test="sparea != null">sparea,</if>
+            <if test="spareb != null">spareb,</if>
+            <if test="sparec != null">sparec,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null and materialCode != ''">#{materialCode},</if>
+            <if test="materialName != null and materialName != ''">#{materialName},</if>
+            <if test="model != null">#{model},</if>
+            <if test="specification != null">#{specification},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="attribute != null and attribute != ''">#{attribute},</if>
+            <if test="typeOfOperation != null">#{typeOfOperation},</if>
+            <if test="quantity != null">#{quantity},</if>
+            <if test="transactionDate != null">#{transactionDate},</if>
+            <if test="warehousingTime !=null">#{warehousingTime},</if>
+            <if test="operator != null and operator != ''">#{operator},</if>
+            <if test="batchNumber != null">#{batchNumber},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+            <if test="sparea != null">#{sparea},</if>
+            <if test="spareb != null">#{spareb},</if>
+            <if test="sparec != null">#{sparec},</if>
+         </trim>
+    </insert>
+
+    <update id="updateMaterialtransactionlog" parameterType="com.zkqy.amichi.domain.Materialtransactionlog">
+        update  {DBNAME}.materialtransactionlog
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialCode != null and materialCode != ''">materialCode = #{materialCode},</if>
+            <if test="materialName != null and materialName != ''">material_name = #{materialName},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="specification != null">specification = #{specification},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="attribute != null and attribute != ''">attribute = #{attribute},</if>
+            <if test="typeOfOperation != null">type_of_operation = #{typeOfOperation},</if>
+            <if test="quantity != null">quantity = #{quantity},</if>
+            <if test="transactionDate != null">transactionDate = #{transactionDate},</if>
+            <if test="operator != null and operator != ''">operator = #{operator},</if>
+            <if test="batchNumber != null">batchNumber = #{batchNumber},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+            <if test="sparea != null">sparea = #{sparea},</if>
+            <if test="spareb != null">spareb = #{spareb},</if>
+            <if test="sparec != null">sparec = #{sparec},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteMaterialtransactionlogById" parameterType="Long">
+        delete from  {DBNAME}.materialtransactionlog where id = #{id}
+    </delete>
+
+    <delete id="deleteMaterialtransactionlogByIds" parameterType="String">
+        delete from {DBNAME}.materialtransactionlog where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 213 - 0
zkqy-fujian-amichi/src/main/resources/mapper/ProductionTasksMapper.xml

@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.amichi.mapper.ProductionTasksMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.ProductionTasks" id="ProductionTasksResult">
+        <result property="id"    column="id"    />
+        <result property="orderNo"    column="order_no"    />
+        <result property="contractNo"    column="contract_no"    />
+        <result property="total"    column="total"    />
+        <result property="requirementDate"    column="requirement_date"    />
+        <result property="shell"    column="shell"    />
+        <result property="switching"    column="switching"    />
+        <result property="colour"    column="colour"    />
+        <result property="nameplate"    column="nameplate"    />
+        <result property="instructions"    column="instructions"    />
+        <result property="certificate"    column="certificate"    />
+        <result property="packingbox"    column="packingbox"    />
+        <result property="special"    column="special"    />
+        <result property="completiontime"    column="completiontime"    />
+        <result property="creator"    column="creator"    />
+        <result property="technology"    column="technology"    />
+        <result property="general"    column="general"    />
+        <result property="state"    column="state"    />
+        <result property="sparea"    column="sparea"    />
+        <result property="spareb"    column="spareb"    />
+        <result property="sparec"    column="sparec"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectProductionTasksVo">
+        select id, order_no, contract_no, total, requirement_date, shell, switching, colour, nameplate, instructions, certificate, packingbox, special, completiontime, creator, technology, general, state, sparea, spareb, sparec, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from {DBNAME}.production_tasks
+    </sql>
+
+    <select id="selectProductionTasksList" parameterType="com.zkqy.amichi.domain.ProductionTasks" resultMap="ProductionTasksResult">
+        <include refid="selectProductionTasksVo"/>
+        <where>  
+            <if test="orderNo != null  and orderNo != ''"> and order_no = #{orderNo}</if>
+            <if test="contractNo != null  and contractNo != ''"> and contract_no = #{contractNo}</if>
+            <if test="total != null  and total != ''"> and total = #{total}</if>
+            <if test="requirementDate != null  and requirementDate != ''"> and requirement_date = #{requirementDate}</if>
+            <if test="shell != null  and shell != ''"> and shell = #{shell}</if>
+            <if test="switching != null  and switch != ''"> and switching = #{switching}</if>
+            <if test="colour != null  and colour != ''"> and colour = #{colour}</if>
+            <if test="nameplate != null  and nameplate != ''"> and nameplate = #{nameplate}</if>
+            <if test="instructions != null  and instructions != ''"> and instructions = #{instructions}</if>
+            <if test="certificate != null  and certificate != ''"> and certificate = #{certificate}</if>
+            <if test="packingbox != null  and packingbox != ''"> and packingbox = #{packingbox}</if>
+            <if test="special != null  and special != ''"> and special = #{special}</if>
+            <if test="completiontime != null  and completiontime != ''"> and completiontime = #{completiontime}</if>
+            <if test="creator != null  and creator != ''"> and creator = #{creator}</if>
+            <if test="technology != null  and technology != ''"> and technology = #{technology}</if>
+            <if test="general != null  and general != ''"> and general = #{general}</if>
+            <if test="state != null  and state != ''"> and state = #{state}</if>
+            <if test="sparea != null  and sparea != ''"> and sparea = #{sparea}</if>
+            <if test="spareb != null  and spareb != ''"> and spareb = #{spareb}</if>
+            <if test="sparec != null  and sparec != ''"> and sparec = #{sparec}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+             and  del_flag!=1
+        </where>
+    </select>
+    
+    <select id="selectProductionTasksById" parameterType="Long" resultMap="ProductionTasksResult">
+        <include refid="selectProductionTasksVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertProductionTasks" parameterType="com.zkqy.amichi.domain.ProductionTasks" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.production_tasks
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderNo != null">order_no,</if>
+            <if test="contractNo != null">contract_no,</if>
+            <if test="total != null">total,</if>
+            <if test="requirementDate != null">requirement_date,</if>
+            <if test="shell != null">shell,</if>
+            <if test="switching != null">switching,</if>
+            <if test="colour != null">colour,</if>
+            <if test="nameplate != null">nameplate,</if>
+            <if test="instructions != null">instructions,</if>
+            <if test="certificate != null">certificate,</if>
+            <if test="packingbox != null">packingbox,</if>
+            <if test="special != null">special,</if>
+            <if test="completiontime != null">completiontime,</if>
+            <if test="creator != null">creator,</if>
+            <if test="technology != null">technology,</if>
+            <if test="general != null">`general`,</if>
+            <if test="state != null">`state`,</if>
+            <if test="sparea != null">sparea,</if>
+            <if test="spareb != null">spareb,</if>
+            <if test="sparec != null">sparec,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orderNo != null">#{orderNo},</if>
+            <if test="contractNo != null">#{contractNo},</if>
+            <if test="total != null">#{total},</if>
+            <if test="requirementDate != null">#{requirementDate},</if>
+            <if test="shell != null">#{shell},</if>
+            <if test="switching != null">#{switching},</if>
+            <if test="colour != null">#{colour},</if>
+            <if test="nameplate != null">#{nameplate},</if>
+            <if test="instructions != null">#{instructions},</if>
+            <if test="certificate != null">#{certificate},</if>
+            <if test="packingbox != null">#{packingbox},</if>
+            <if test="special != null">#{special},</if>
+            <if test="completiontime != null">#{completiontime},</if>
+            <if test="creator != null">#{creator},</if>
+            <if test="technology != null">#{technology},</if>
+            <if test="general != null">#{general},</if>
+            <if test="state != null">#{state},</if>
+            <if test="sparea != null">#{sparea},</if>
+            <if test="spareb != null">#{spareb},</if>
+            <if test="sparec != null">#{sparec},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateProductionTasks" parameterType="com.zkqy.amichi.domain.ProductionTasks">
+        update {DBNAME}.production_tasks
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderNo != null">order_no = #{orderNo},</if>
+            <if test="contractNo != null">contract_no = #{contractNo},</if>
+            <if test="total != null">total = #{total},</if>
+            <if test="requirementDate != null">requirement_date = #{requirementDate},</if>
+            <if test="shell != null">shell = #{shell},</if>
+            <if test="switching != null">switching = #{switching},</if>
+            <if test="colour != null">colour = #{colour},</if>
+            <if test="nameplate != null">nameplate = #{nameplate},</if>
+            <if test="instructions != null">instructions = #{instructions},</if>
+            <if test="certificate != null">certificate = #{certificate},</if>
+            <if test="packingbox != null">packingbox = #{packingbox},</if>
+            <if test="special != null">special = #{special},</if>
+            <if test="completiontime != null">completiontime = #{completiontime},</if>
+            <if test="creator != null">creator = #{creator},</if>
+            <if test="technology != null">technology = #{technology},</if>
+            <if test="general != null">`general` = #{general},</if>
+            <if test="state != null">`state` = #{state},</if>
+            <if test="sparea != null">sparea = #{sparea},</if>
+            <if test="spareb != null">spareb = #{spareb},</if>
+            <if test="sparec != null">sparec = #{sparec},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+    <update id="updateProductionTasksIn" parameterType="long">
+        update {DBNAME}.production_tasks  set del_flag=1
+        where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <delete id="deleteProductionTasksById" parameterType="Long">
+        delete from {DBNAME}.production_tasks where id = #{id}
+    </delete>
+
+    <delete id="deleteProductionTasksByIds" parameterType="String">
+        delete from {DBNAME}.production_tasks where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 180 - 0
zkqy-fujian-amichi/src/main/resources/mapper/TaskDetailsMapper.xml

@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.amichi.mapper.TaskDetailsMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.TaskDetails" id="TaskDetailsResult">
+        <result property="id"    column="id"    />
+        <result property="taskId"    column="task_id"    />
+        <result property="model"    column="model"    />
+        <result property="nameplate"    column="nameplate"    />
+        <result property="capacity"    column="capacity"    />
+        <result property="interfaceDisk"    column="interface_disk"    />
+        <result property="length"    column="length"    />
+        <result property="voltage"    column="voltage"    />
+        <result property="programme"    column="programme"    />
+        <result property="quantity"    column="quantity"    />
+        <result property="sparea"    column="sparea"    />
+        <result property="spareb"    column="spareb"    />
+        <result property="sparec"    column="sparec"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectTaskDetailsVo">
+        select id, task_id, model, nameplate, capacity, interface_disk, length, voltage, programme, quantity, sparea, spareb, sparec, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from {DBNAME}.task_details
+    </sql>
+
+    <select id="selectTaskDetailsList" parameterType="com.zkqy.amichi.domain.TaskDetails" resultMap="TaskDetailsResult">
+        <include refid="selectTaskDetailsVo"/>
+        <where>  
+            <if test="taskId != null  and taskId != ''"> and task_id = #{taskId}</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="nameplate != null  and nameplate != ''"> and nameplate = #{nameplate}</if>
+            <if test="capacity != null  and capacity != ''"> and capacity = #{capacity}</if>
+            <if test="interface != null  and interface != ''"> and interface_disk = #{interface}</if>
+            <if test="length != null  and length != ''"> and length = #{length}</if>
+            <if test="voltage != null  and voltage != ''"> and voltage = #{voltage}</if>
+            <if test="programme != null  and programme != ''"> and programme = #{programme}</if>
+            <if test="quantity != null  and quantity != ''"> and quantity = #{quantity}</if>
+            <if test="sparea != null  and sparea != ''"> and sparea = #{sparea}</if>
+            <if test="spareb != null  and spareb != ''"> and spareb = #{spareb}</if>
+            <if test="sparec != null  and sparec != ''"> and sparec = #{sparec}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+    
+    <select id="selectTaskDetailsById" parameterType="Long" resultMap="TaskDetailsResult">
+        <include refid="selectTaskDetailsVo"/>
+        where id = #{id}
+    </select>
+    <select id="selectTaskDetailsListByTaskId" parameterType="String" resultMap="TaskDetailsResult">
+        <include refid="selectTaskDetailsVo"/>
+        where task_id = #{taskId} and del_flag!=1;
+    </select>
+
+    <insert id="insertTaskDetails" parameterType="com.zkqy.amichi.domain.TaskDetails" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.task_details
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskId != null">task_id,</if>
+            <if test="model != null">model,</if>
+            <if test="nameplate != null">nameplate,</if>
+            <if test="capacity != null">capacity,</if>
+            <if test="interfaceDisk != null">interface_disk,</if>
+            <if test="length != null">`length`,</if>
+            <if test="voltage != null">voltage,</if>
+            <if test="programme != null">programme,</if>
+            <if test="quantity != null">quantity,</if>
+            <if test="sparea != null">sparea,</if>
+            <if test="spareb != null">spareb,</if>
+            <if test="sparec != null">sparec,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskId != null">#{taskId},</if>
+            <if test="model != null">#{model},</if>
+            <if test="nameplate != null">#{nameplate},</if>
+            <if test="capacity != null">#{capacity},</if>
+            <if test="interfaceDisk != null">#{interfaceDisk},</if>
+            <if test="length != null">#{length},</if>
+            <if test="voltage != null">#{voltage},</if>
+            <if test="programme != null">#{programme},</if>
+            <if test="quantity != null">#{quantity},</if>
+            <if test="sparea != null">#{sparea},</if>
+            <if test="spareb != null">#{spareb},</if>
+            <if test="sparec != null">#{sparec},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTaskDetails" parameterType="com.zkqy.amichi.domain.TaskDetails">
+        update {DBNAME}.task_details
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskId != null">task_id = #{taskId},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="nameplate != null">nameplate = #{nameplate},</if>
+            <if test="capacity != null">capacity = #{capacity},</if>
+            <if test="interfaceDisk != null">interface_disk = #{interfaceDisk},</if>
+            <if test="length != null">length = #{length},</if>
+            <if test="voltage != null">voltage = #{voltage},</if>
+            <if test="programme != null">programme = #{programme},</if>
+            <if test="quantity != null">quantity = #{quantity},</if>
+            <if test="sparea != null">sparea = #{sparea},</if>
+            <if test="spareb != null">spareb = #{spareb},</if>
+            <if test="sparec != null">sparec = #{sparec},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+    <update id="updateTaskDetailsInIdDelete">
+        update {DBNAME}.task_details set del_flag = 1
+        where task_id= #{taskId}
+    </update>
+    <update id="updateTaskDetailsInTaskId" parameterType="long">
+        update {DBNAME}.task_details set del_flag = 1
+        where  task_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <delete id="deleteTaskDetailsById" parameterType="Long">
+        delete from {DBNAME}.task_details where id = #{id}
+    </delete>
+
+    <delete id="deleteTaskDetailsByIds" parameterType="String">
+        delete from {DBNAME}.task_details where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 31 - 0
zkqy-laboratory-information/pom.xml

@@ -0,0 +1,31 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zkqy</groupId>
+        <artifactId>zkqy</artifactId>
+        <version>3.8.5</version>
+    </parent>
+
+    <artifactId>zkqy-laboratory-information</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-framework</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.6.2</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>

+ 113 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/CommissionedInspectionController.java

@@ -0,0 +1,113 @@
+package  com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import  com.zkqy.laboratory.domain.CommissionedInspection;
+import  com.zkqy.laboratory.service.ICommissionedInspectionService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 委托检查Controller
+ *
+ * @author zkqy
+ * @date 2024-06-11
+ */
+@RestController
+@RequestMapping("/lims/laboratory/commissionedInspection/inspection")
+@Api(value = "/system/inspection", description = "委托检查-接口")
+public class CommissionedInspectionController extends BaseController
+{
+    @Autowired
+    private ICommissionedInspectionService commissionedInspectionService;
+
+    /**
+     * 查询委托检查列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:inspection:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询委托检查列表")
+    public TableDataInfo list(CommissionedInspection commissionedInspection)
+    {
+        startPage();
+        List<CommissionedInspection> list = commissionedInspectionService.selectCommissionedInspectionList(commissionedInspection);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出委托检查列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:export')")
+    @Log(title = "委托检查", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出委托检查列表")
+    public void export(HttpServletResponse response, CommissionedInspection commissionedInspection)
+    {
+        List<CommissionedInspection> list = commissionedInspectionService.selectCommissionedInspectionList(commissionedInspection);
+        ExcelUtil<CommissionedInspection> util = new ExcelUtil<CommissionedInspection>(CommissionedInspection.class);
+        util.exportExcel(response, list, "委托检查数据");
+    }
+
+    /**
+     * 获取委托检查详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取委托检查详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(commissionedInspectionService.selectCommissionedInspectionById(id));
+    }
+
+    /**
+     * 新增委托检查
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:add')")
+    @Log(title = "委托检查", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增委托检查")
+    public AjaxResult add(@RequestBody CommissionedInspection commissionedInspection)
+    {
+        return toAjax(commissionedInspectionService.insertCommissionedInspection(commissionedInspection));
+    }
+
+    /**
+     * 修改委托检查
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:edit')")
+    @Log(title = "委托检查", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改委托检查")
+    public AjaxResult edit(@RequestBody CommissionedInspection commissionedInspection)
+    {
+        return toAjax(commissionedInspectionService.updateCommissionedInspection(commissionedInspection));
+    }
+
+    /**
+     * 删除委托检查
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:remove')")
+    @Log(title = "委托检查", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除委托检查")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(commissionedInspectionService.deleteCommissionedInspectionByIds(ids));
+    }
+}

+ 114 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/ConsignmentMaterialController.java

@@ -0,0 +1,114 @@
+package  com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import  com.zkqy.laboratory.domain.ConsignmentMaterial;
+import  com.zkqy.laboratory.service.IConsignmentMaterialService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 委托物料信息Controller
+ *
+ * @author zkqy
+ * @date 2024-06-11
+ */
+@RestController
+@RequestMapping("/lims/laboratory/ConsignmentMaterial/material")
+@Api(value = "/system/material", description = "委托物料信息-接口")
+public class ConsignmentMaterialController extends BaseController
+{
+    @Autowired
+    private IConsignmentMaterialService consignmentMaterialService;
+
+    /**
+     * 查询委托物料信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:material:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询委托物料信息列表")
+    public TableDataInfo list(ConsignmentMaterial consignmentMaterial)
+    {
+        startPage();
+        List<ConsignmentMaterial> list = consignmentMaterialService.selectConsignmentMaterialList(consignmentMaterial);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出委托物料信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:material:export')")
+    @Log(title = "委托物料信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出委托物料信息列表")
+    public void export(HttpServletResponse response, ConsignmentMaterial consignmentMaterial)
+    {
+        List<ConsignmentMaterial> list = consignmentMaterialService.selectConsignmentMaterialList(consignmentMaterial);
+        ExcelUtil<ConsignmentMaterial> util = new ExcelUtil<ConsignmentMaterial>(ConsignmentMaterial.class);
+        util.exportExcel(response, list, "委托物料信息数据");
+    }
+
+    /**
+     * 获取委托物料信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:material:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取委托物料信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(consignmentMaterialService.selectConsignmentMaterialById(id));
+    }
+
+    /**
+     * 新增委托物料信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:material:add')")
+    @Log(title = "委托物料信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增委托物料信息")
+    public AjaxResult add(@RequestBody ConsignmentMaterial consignmentMaterial)
+    {
+        return toAjax(consignmentMaterialService.insertConsignmentMaterial(consignmentMaterial));
+    }
+
+    /**
+     * 修改委托物料信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:material:edit')")
+    @Log(title = "委托物料信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改委托物料信息")
+    public AjaxResult edit(@RequestBody ConsignmentMaterial consignmentMaterial)
+    {
+        return toAjax(consignmentMaterialService.updateConsignmentMaterial(consignmentMaterial));
+    }
+
+    /**
+     * 删除委托物料信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:material:remove')")
+    @Log(title = "委托物料信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除委托物料信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(consignmentMaterialService.deleteConsignmentMaterialByIds(ids));
+    }
+
+}

+ 126 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/DetectionInformationController.java

@@ -0,0 +1,126 @@
+package com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.laboratory.domain.DetectionInformation;
+import com.zkqy.laboratory.service.IDetectionInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 检测信息Controller
+ *
+ * @author zkqy
+ * @date 2024-06-05
+ */
+@RestController
+@RequestMapping("/lims/laboratory/DetectionInformation/information")
+@Api(value = "/laboratory/information", description = "检测信息-接口")
+public class DetectionInformationController extends BaseController
+{
+    @Autowired
+    private IDetectionInformationService detectionInformationService;
+
+    /**
+     * 查询检测信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('laboratory:information:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询检测信息列表")
+    public TableDataInfo list(DetectionInformation detectionInformation)
+    {
+        startPage();
+        List<DetectionInformation> list = detectionInformationService.selectDetectionInformationList(detectionInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询检测信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('laboratory:information:list')")
+    @GetMapping("/listin")
+    @ApiOperation(value = "查询检测信息列表")
+    public TableDataInfo listin(DetectionInformation detectionInformation)
+    {
+        startPage();
+        List<DetectionInformation> list = detectionInformationService.selectDetectionInformationList(detectionInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出检测信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:information:export')")
+    @Log(title = "检测信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出检测信息列表")
+    public void export(HttpServletResponse response, DetectionInformation detectionInformation)
+    {
+        List<DetectionInformation> list = detectionInformationService.selectDetectionInformationList(detectionInformation);
+        ExcelUtil<DetectionInformation> util = new ExcelUtil<DetectionInformation>(DetectionInformation.class);
+        util.exportExcel(response, list, "检测信息数据");
+    }
+
+    /**
+     * 获取检测信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:information:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取检测信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(detectionInformationService.selectDetectionInformationById(id));
+    }
+
+    /**
+     * 新增检测信息
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:information:add')")
+    @Log(title = "检测信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增检测信息")
+    public AjaxResult add(@RequestBody DetectionInformation detectionInformation)
+    {
+        return toAjax(detectionInformationService.insertDetectionInformation(detectionInformation));
+    }
+
+    /**
+     * 修改检测信息
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:information:edit')")
+    @Log(title = "检测信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改检测信息")
+    public AjaxResult edit(@RequestBody DetectionInformation detectionInformation)
+    {
+        return toAjax(detectionInformationService.updateDetectionInformation(detectionInformation));
+    }
+
+    /**
+     * 删除检测信息
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:information:remove')")
+    @Log(title = "检测信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除检测信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(detectionInformationService.deleteDetectionInformationByIds(ids));
+    }
+}

+ 126 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/DetectionResultController.java

@@ -0,0 +1,126 @@
+package com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.laboratory.domain.DetectionResult;
+import com.zkqy.laboratory.service.IDetectionResultService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 检测结果Controller
+ *
+ * @author zkqy
+ * @date 2024-06-19
+ */
+@RestController
+@RequestMapping("/lims/laboratory/detectionResult/result")
+@Api(value = "/system/result", description = "检测结果-接口")
+public class DetectionResultController extends BaseController
+{
+    @Autowired
+    private IDetectionResultService detectionResultService;
+
+    /**
+     * 查询检测结果列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:result:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询检测结果列表")
+    public TableDataInfo list(DetectionResult detectionResult)
+    {
+        startPage();
+        List<DetectionResult> list = detectionResultService.selectDetectionResultList(detectionResult);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出检测结果列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:result:export')")
+    @Log(title = "检测结果", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出检测结果列表")
+    public void export(HttpServletResponse response, DetectionResult detectionResult)
+    {
+        List<DetectionResult> list = detectionResultService.selectDetectionResultList(detectionResult);
+        ExcelUtil<DetectionResult> util = new ExcelUtil<DetectionResult>(DetectionResult.class);
+        util.exportExcel(response, list, "检测结果数据");
+    }
+
+    /**
+     * 获取检测结果详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:result:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取检测结果详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(detectionResultService.selectDetectionResultById(id));
+    }
+
+    /**
+     * 新增检测结果
+     */
+    @PreAuthorize("@ss.hasPermi('system:result:add')")
+    @Log(title = "检测结果", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增检测结果")
+    public AjaxResult add(@RequestBody DetectionResult detectionResult)
+    {
+        return toAjax(detectionResultService.insertDetectionResult(detectionResult));
+    }
+
+
+    @PostMapping("/insert")
+    @Anonymous
+    @ApiOperation(value = "新增检测结果")
+    public AjaxResult insert(@RequestBody DetectionResult detectionResult)
+    {
+        return toAjax(detectionResultService.insertDetectionResult(detectionResult));
+    }
+
+
+
+    /**
+     * 修改检测结果
+     */
+    @PreAuthorize("@ss.hasPermi('system:result:edit')")
+    @Log(title = "检测结果", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改检测结果")
+    public AjaxResult edit(@RequestBody DetectionResult detectionResult)
+    {
+        return toAjax(detectionResultService.updateDetectionResult(detectionResult));
+    }
+
+    /**
+     * 删除检测结果
+     */
+    @PreAuthorize("@ss.hasPermi('system:result:remove')")
+    @Log(title = "检测结果", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除检测结果")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(detectionResultService.deleteDetectionResultByIds(ids));
+    }
+}

+ 191 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/EntrustedInformationController.java

@@ -0,0 +1,191 @@
+package com.zkqy.laboratory.controller;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.laboratory.domain.vo.WtRVo;
+import com.zkqy.laboratory.domain.vo.WtVo;
+import com.zkqy.system.mapper.SysDictDataMapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.laboratory.domain.EntrustedInformation;
+import com.zkqy.laboratory.service.IEntrustedInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 委托单信息Controller
+ *
+ * @author zkqy
+ * @date 2024-06-11
+ */
+@RestController
+@RequestMapping("/lims/laboratory/entrustedInformation/information")
+@Api(value = "/system/information", description = "委托单信息-接口")
+public class EntrustedInformationController extends BaseController
+{
+    @Autowired
+    private IEntrustedInformationService entrustedInformationService;
+    @Autowired
+    private SysDictDataMapper dictDataMapper;
+
+    /**
+     * 查询委托单信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:information:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询委托单信息列表")
+    public TableDataInfo list(EntrustedInformation entrustedInformation)
+    {
+        startPage();
+        List<EntrustedInformation> list = entrustedInformationService.selectEntrustedInformationList(entrustedInformation);
+        list.stream().map(item->{
+            //样品分类
+            String sampleClassification = item.getSampleClassification();
+            String sampleType = dictDataMapper.selectDictLabel("sample_type", sampleClassification);
+            item.setSampleClassification(sampleType);
+            //委托单状态
+            String orderStatus = item.getOrderStatus();
+            item.setOrderStatus(dictDataMapper.selectDictLabel("order_status", orderStatus));
+            //委托单处理方式
+            String sampleHandlingMethod = item.getSampleHandlingMethod();
+            item.setSampleHandlingMethod(dictDataMapper.selectDictLabel("sample_handling_method", sampleHandlingMethod));
+            return item;
+        }).collect(Collectors.toList());
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出委托单信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:export')")
+    @Log(title = "委托单信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出委托单信息列表")
+    public void export(HttpServletResponse response, EntrustedInformation entrustedInformation)
+    {
+        List<EntrustedInformation> list = entrustedInformationService.selectEntrustedInformationList(entrustedInformation);
+        ExcelUtil<EntrustedInformation> util = new ExcelUtil<EntrustedInformation>(EntrustedInformation.class);
+        util.exportExcel(response, list, "委托单信息数据");
+    }
+
+    /**
+     * 获取委托单信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取委托单信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(entrustedInformationService.selectEntrustedInformationByIdRVo(id));
+    }
+
+    /**
+     * 获取委托单信息详细信息
+     */
+//    @PreAuthorize("@ss.hasPermi('system:information:query')")
+    @GetMapping(value = "/getOrderInformation/{id}")
+    @ApiOperation(value = "获取委托单信息详细信息")
+    public AjaxResult getOrderInformation(@PathVariable("id") Long id)
+    {
+        return success(entrustedInformationService.selectEntrustedInformationById(id));
+    }
+
+    /**
+     * 新增委托单信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:add')")
+    @Log(title = "委托单信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增委托单信息")
+    public AjaxResult add(@RequestBody EntrustedInformation entrustedInformation)
+    {
+        return toAjax(entrustedInformationService.insertEntrustedInformation(entrustedInformation));
+    }
+
+    /**
+     * 新增委托单信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:add')")
+    @Log(title = "委托单信息", businessType = BusinessType.INSERT)
+    @PostMapping("/addVoWt")
+    @ApiOperation(value = "新增委托单信息")
+    public AjaxResult add(@RequestBody WtVo wtVo)
+    {
+        return AjaxResult.success(entrustedInformationService.insertEntrustedInformationVo(wtVo));
+    }
+
+    /**
+     * 修改委托单信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:edit')")
+    @Log(title = "委托单信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改委托单信息")
+    public AjaxResult edit(@RequestBody WtRVo wtVo)
+    {
+        return AjaxResult.success("修改成功",entrustedInformationService.updateEntrustedInformationVo(wtVo));
+    }
+
+    /**
+     * 修改委托单信息,并记录退回原因及备注
+     *
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:edit')")
+    @Log(title = "委托单信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/entrustedInformationStatus")
+    @ApiOperation(value = "修改委托单信息")
+    public AjaxResult edit(@RequestBody EntrustedInformation entrustedInformation)
+    {
+        return AjaxResult.success("修改成功",entrustedInformationService.updateEntrustedInformation(entrustedInformation));
+    }
+
+    /**
+     * 删除委托单信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:remove')")
+    @Log(title = "委托单信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除委托单信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(entrustedInformationService.deleteEntrustedInformationByIds(ids));
+    }
+
+    /**
+     * 删除委托单信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:remove')")
+    @Log(title = "委托单信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/del/{id}")
+    @ApiOperation(value = "删除委托单信息")
+    public AjaxResult removeOne(@PathVariable Long id)
+    {   EntrustedInformation entrustedInformation=new EntrustedInformation();
+        entrustedInformation.setId(id);
+        return toAjax(entrustedInformationService.updateEntrustedInformationDelStatus(entrustedInformation));
+    }
+
+    /**
+     * 修改委托单状态为以提交
+     * /lims/laboratory/entrustedInformation/information/update/status
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:remove')")
+    @Log(title = "委托单信息", businessType = BusinessType.DELETE)
+    @PutMapping("/update/status")
+    @ApiOperation(value = "修改委托单信息")
+    public AjaxResult updateOrderFromStatus(@RequestParam(name = "id") Long id, @RequestParam(name = "orderStatus") Long statusId)
+    {
+        EntrustedInformation entrustedInformation=new EntrustedInformation();
+        entrustedInformation.setId(id);
+        entrustedInformation.setOrderStatus(statusId.toString());
+        return toAjax(entrustedInformationService.updateEntrustedInformation(entrustedInformation));
+    }
+}

+ 113 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/LaboratorySampleCollectionController.java

@@ -0,0 +1,113 @@
+package com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.laboratory.domain.LaboratorySampleCollection;
+import com.zkqy.laboratory.service.ILaboratorySampleCollectionService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 实验室收样Controller
+ *
+ * @author zkqy
+ * @date 2024-06-17
+ */
+@RestController
+@RequestMapping("/lims/laboratory/LaboratorySample")
+@Api(value = "/laboratory/LaboratorySample", description = "实验室收样-接口")
+public class LaboratorySampleCollectionController extends BaseController
+{
+    @Autowired
+    private ILaboratorySampleCollectionService laboratorySampleCollectionService;
+
+    /**
+     * 查询实验室收样列表
+     */
+    //@PreAuthorize("@ss.hasPermi('laboratory:collection:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询实验室收样列表")
+    public TableDataInfo list(LaboratorySampleCollection laboratorySampleCollection)
+    {
+        startPage();
+        List<LaboratorySampleCollection> list = laboratorySampleCollectionService.selectLaboratorySampleCollectionList(laboratorySampleCollection);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出实验室收样列表
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:collection:export')")
+    @Log(title = "实验室收样", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出实验室收样列表")
+    public void export(HttpServletResponse response, LaboratorySampleCollection laboratorySampleCollection)
+    {
+        List<LaboratorySampleCollection> list = laboratorySampleCollectionService.selectLaboratorySampleCollectionList(laboratorySampleCollection);
+        ExcelUtil<LaboratorySampleCollection> util = new ExcelUtil<LaboratorySampleCollection>(LaboratorySampleCollection.class);
+        util.exportExcel(response, list, "实验室收样数据");
+    }
+
+    /**
+     * 获取实验室收样详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:collection:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取实验室收样详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(laboratorySampleCollectionService.selectLaboratorySampleCollectionById(id));
+    }
+
+    /**
+     * 新增实验室收样
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:collection:add')")
+    @Log(title = "实验室收样", businessType = BusinessType.INSERT)
+    @PostMapping("/addLaboratorySampleCollection")
+    @ApiOperation(value = "新增实验室收样")
+    public AjaxResult add(@RequestBody LaboratorySampleCollection laboratorySampleCollection)
+    {
+        return toAjax(laboratorySampleCollectionService.insertLaboratorySampleCollectionAndUpdateOrderFormStatus(laboratorySampleCollection));
+    }
+
+    /**
+     * 修改实验室收样
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:collection:edit')")
+    @Log(title = "实验室收样", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改实验室收样")
+    public AjaxResult edit(@RequestBody LaboratorySampleCollection laboratorySampleCollection)
+    {
+        return toAjax(laboratorySampleCollectionService.updateLaboratorySampleCollection(laboratorySampleCollection));
+    }
+
+    /**
+     * 删除实验室收样
+     */
+    @PreAuthorize("@ss.hasPermi('laboratory:collection:remove')")
+    @Log(title = "实验室收样", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除实验室收样")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(laboratorySampleCollectionService.deleteLaboratorySampleCollectionByIds(ids));
+    }
+}

+ 143 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/MaterialInformationController.java

@@ -0,0 +1,143 @@
+package com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Anonymous;
+import com.zkqy.laboratory.domain.MaterialInformation;
+import com.zkqy.laboratory.service.IMaterialInformationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 物料信息Controller
+ *
+ * @author zkqy
+ * @date 2024-05-29 /lims/system/materialInformation/list/getMaterial
+ */
+@RestController
+@RequestMapping("/lims/laboratory/materialInformation")
+@Api(value = "/system/information", description = "物料信息-接口")
+public class MaterialInformationController extends BaseController
+{
+    @Autowired
+    private IMaterialInformationService materialInformationService;
+
+    /**
+     * 查询物料信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:information:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询物料信息列表")
+    public TableDataInfo list(MaterialInformation materialInformation)
+    {
+        startPage();
+        List<MaterialInformation> list = materialInformationService.selectMaterialInformationList(materialInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询物料信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:information:list')")
+    @GetMapping("/list/getMaterial/{lot}")
+    @ApiOperation(value = "查询物料信息列表")
+    public AjaxResult list(@PathVariable("lot") String lot)
+    {
+        MaterialInformation materialInformation=new MaterialInformation();
+        materialInformation.setLot(lot);
+        List<MaterialInformation> materialInformations = materialInformationService.selectMaterialInformationList(materialInformation);
+        if(materialInformations.size()>0){
+            materialInformation = materialInformations.get(0);
+        }else {
+            return AjaxResult.success("未有此批号的物料信息");
+        }
+        return AjaxResult.success("已查询到此批号物料",materialInformation);
+    }
+
+    /**
+     * 导出物料信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:export')")
+    @Log(title = "物料信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出物料信息列表")
+    public void export(HttpServletResponse response, MaterialInformation materialInformation)
+    {
+        List<MaterialInformation> list = materialInformationService.selectMaterialInformationList(materialInformation);
+        ExcelUtil<MaterialInformation> util = new ExcelUtil<MaterialInformation>(MaterialInformation.class);
+        util.exportExcel(response, list, "物料信息数据");
+    }
+
+    /**
+     * 获取物料信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取物料信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(materialInformationService.selectMaterialInformationById(id));
+    }
+
+    /**
+     * 新增物料信息
+     */
+//    @PreAuthorize("@ss.hasPermi('system:information:add')")
+    @Anonymous
+    @PostMapping
+    @ApiOperation(value = "新增物料信息")
+    public AjaxResult add(@RequestBody MaterialInformation materialInformation)
+    {
+        return AjaxResult.success(materialInformationService.insertMaterialInformation(materialInformation));
+    }
+
+    @Anonymous
+    @PostMapping("/batchInsert")
+    @ApiOperation(value = "新增物料信息")
+    public AjaxResult add(@RequestBody List<MaterialInformation> materialInformation)
+    {
+        return AjaxResult.success(materialInformationService.insertMaterialInformationBatchInsert(materialInformation));
+    }
+
+    /**
+     * 修改物料信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:edit')")
+    @Log(title = "物料信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改物料信息")
+    public AjaxResult edit(@RequestBody MaterialInformation materialInformation)
+    {
+        return toAjax(materialInformationService.updateMaterialInformation(materialInformation));
+    }
+
+    /**
+     * 删除物料信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:remove')")
+    @Log(title = "物料信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除物料信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(materialInformationService.deleteMaterialInformationByIds(ids));
+    }
+
+}

+ 113 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/ReportInformationController.java

@@ -0,0 +1,113 @@
+package com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.laboratory.domain.ReportInformation;
+import com.zkqy.laboratory.service.IReportInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 报告信息Controller
+ *
+ * @author zkqy
+ * @date 2024-06-24
+ */
+@RestController
+@RequestMapping("/lims/laboratory/reportInformation/")
+@Api(value = "/lims/laboratory/reportInformation/", description = "报告信息-接口")
+public class ReportInformationController extends BaseController
+{
+    @Autowired
+    private IReportInformationService reportInformationService;
+
+    /**
+     * 查询报告信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:information:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询报告信息列表")
+    public TableDataInfo list(ReportInformation reportInformation)
+    {
+        startPage();
+        List<ReportInformation> list = reportInformationService.selectReportInformationList(reportInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出报告信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:export')")
+    @Log(title = "报告信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出报告信息列表")
+    public void export(HttpServletResponse response, ReportInformation reportInformation)
+    {
+        List<ReportInformation> list = reportInformationService.selectReportInformationList(reportInformation);
+        ExcelUtil<ReportInformation> util = new ExcelUtil<ReportInformation>(ReportInformation.class);
+        util.exportExcel(response, list, "报告信息数据");
+    }
+
+    /**
+     * 获取报告信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取报告信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(reportInformationService.selectReportInformationById(id));
+    }
+
+    /**
+     * 新增报告信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:add')")
+    @Log(title = "报告信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增报告信息")
+    public AjaxResult add(@RequestBody ReportInformation reportInformation)
+    {
+        return toAjax(reportInformationService.insertReportInformation(reportInformation));
+    }
+
+    /**
+     * 修改报告信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:edit')")
+    @Log(title = "报告信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改报告信息")
+    public AjaxResult edit(@RequestBody ReportInformation reportInformation)
+    {
+        return toAjax(reportInformationService.updateReportInformation(reportInformation));
+    }
+
+    /**
+     * 删除报告信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:remove')")
+    @Log(title = "报告信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除报告信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(reportInformationService.deleteReportInformationByIds(ids));
+    }
+}

+ 141 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/SamplePrintingController.java

@@ -0,0 +1,141 @@
+package com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.laboratory.domain.SamplePrinting;
+import com.zkqy.laboratory.service.ISamplePrintingService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 样品打印Controller
+ *
+ * @author zkqy
+ * @date 2024-06-12
+ */
+@RestController
+@RequestMapping("/lims/laboratory/printing")
+@Api(value = "/system/printing", description = "样品打印-接口")
+public class SamplePrintingController extends BaseController
+{
+    @Autowired
+    private ISamplePrintingService samplePrintingService;
+
+    /**
+     * 查询样品打印列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:printing:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询样品打印列表")
+    public TableDataInfo list(SamplePrinting samplePrinting)
+    {
+        startPage();
+        List<SamplePrinting> list = samplePrintingService.selectSamplePrintingList(samplePrinting);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询样品打印列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:printing:list')")
+    @GetMapping("/selectSamplePrintingInfo")
+    @ApiOperation(value = "查询样品打印列表")
+    public AjaxResult selectSamplePrintingInfo(SamplePrinting samplePrinting)
+    {
+        List<SamplePrinting> list = samplePrintingService.selectSamplePrintingInfo(samplePrinting);
+        return AjaxResult.success(list);
+    }
+
+
+    /**
+     * 导出样品打印列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:printing:export')")
+    @Log(title = "样品打印", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出样品打印列表")
+    public void export(HttpServletResponse response, SamplePrinting samplePrinting)
+    {
+        List<SamplePrinting> list = samplePrintingService.selectSamplePrintingList(samplePrinting);
+        ExcelUtil<SamplePrinting> util = new ExcelUtil<SamplePrinting>(SamplePrinting.class);
+        util.exportExcel(response, list, "样品打印数据");
+    }
+
+
+
+    /**
+     * 获取样品打印详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:printing:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取样品打印详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(samplePrintingService.selectSamplePrintingById(id));
+    }
+
+    /**
+     * 新增样品打印
+     */
+    @PreAuthorize("@ss.hasPermi('system:printing:add')")
+    @Log(title = "样品打印", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增样品打印")
+    public AjaxResult add(@RequestBody SamplePrinting samplePrinting)
+    {
+        return toAjax(samplePrintingService.insertSamplePrinting(samplePrinting));
+    }
+
+    /**
+     * 新增样品打印
+     */
+    @PreAuthorize("@ss.hasPermi('system:printing:add')")
+    @Log(title = "样品打印", businessType = BusinessType.INSERT)
+    @PostMapping("/addSamplePrintingInfo")
+    @ApiOperation(value = "新增样品打印")
+    public AjaxResult putSamplePrintingInfo(@RequestBody SamplePrinting samplePrinting)
+    {
+
+        return toAjax(samplePrintingService.insertSamplePrintingVo(samplePrinting));
+    }
+
+    /**
+     * 修改样品打印
+     */
+    @PreAuthorize("@ss.hasPermi('system:printing:edit')")
+    @Log(title = "样品打印", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改样品打印")
+    public AjaxResult edit(@RequestBody SamplePrinting samplePrinting)
+    {
+        return toAjax(samplePrintingService.updateSamplePrinting(samplePrinting));
+    }
+
+    /**
+     * 删除样品打印
+     */
+    @PreAuthorize("@ss.hasPermi('system:printing:remove')")
+    @Log(title = "样品打印", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除样品打印")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(samplePrintingService.deleteSamplePrintingByIds(ids));
+    }
+}

+ 126 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/controller/SampleTestingProcessInformationController.java

@@ -0,0 +1,126 @@
+package com.zkqy.laboratory.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.laboratory.domain.SampleTestingProcessInformation;
+import com.zkqy.laboratory.service.ISampleTestingProcessInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 样品检测过程Controller
+ *
+ * @author zkqy
+ * @date 2024-06-19
+ */
+@RestController
+@RequestMapping("/lims/SampleTestingProcessInformation")
+@Api(value = "/system/information", description = "样品检测过程-接口")
+public class SampleTestingProcessInformationController extends BaseController
+{
+    @Autowired
+    private ISampleTestingProcessInformationService sampleTestingProcessInformationService;
+
+    /**
+     * 查询样品检测过程列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:information:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询样品检测过程列表")
+    public TableDataInfo list(SampleTestingProcessInformation sampleTestingProcessInformation)
+    {
+        startPage();
+        List<SampleTestingProcessInformation> list = sampleTestingProcessInformationService.selectSampleTestingProcessInformationList(sampleTestingProcessInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出样品检测过程列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:export')")
+    @Log(title = "样品检测过程", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出样品检测过程列表")
+    public void export(HttpServletResponse response, SampleTestingProcessInformation sampleTestingProcessInformation)
+    {
+        List<SampleTestingProcessInformation> list = sampleTestingProcessInformationService.selectSampleTestingProcessInformationList(sampleTestingProcessInformation);
+        ExcelUtil<SampleTestingProcessInformation> util = new ExcelUtil<SampleTestingProcessInformation>(SampleTestingProcessInformation.class);
+        util.exportExcel(response, list, "样品检测过程数据");
+    }
+
+    /**
+     * 获取样品检测过程详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取样品检测过程详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(sampleTestingProcessInformationService.selectSampleTestingProcessInformationById(id));
+    }
+
+    /**
+     * 新增样品检测过程
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:add')")
+    @Log(title = "样品检测过程", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增样品检测过程")
+    public AjaxResult add(@RequestBody SampleTestingProcessInformation sampleTestingProcessInformation)
+    {
+        return toAjax(sampleTestingProcessInformationService.insertSampleTestingProcessInformation(sampleTestingProcessInformation));
+    }
+
+    /**
+     * 新增样品检测过程
+     */
+    @Anonymous
+    @PostMapping("/insert")
+    @ApiOperation(value = "新增样品检测过程")
+    public AjaxResult insert(@RequestBody SampleTestingProcessInformation sampleTestingProcessInformation)
+    {
+        return toAjax(sampleTestingProcessInformationService.insertSampleTestingProcessInformation(sampleTestingProcessInformation));
+    }
+
+    /**
+     * 修改样品检测过程
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:edit')")
+    @Log(title = "样品检测过程", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改样品检测过程")
+    public AjaxResult edit(@RequestBody SampleTestingProcessInformation sampleTestingProcessInformation)
+    {
+        return toAjax(sampleTestingProcessInformationService.updateSampleTestingProcessInformation(sampleTestingProcessInformation));
+    }
+
+    /**
+     * 删除样品检测过程
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:remove')")
+    @Log(title = "样品检测过程", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除样品检测过程")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(sampleTestingProcessInformationService.deleteSampleTestingProcessInformationByIds(ids));
+    }
+}

+ 167 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/CommissionedInspection.java

@@ -0,0 +1,167 @@
+package  com.zkqy.laboratory.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 委托检查对象 commissioned_inspection
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+public class CommissionedInspection extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 委托id */
+    @Excel(name = "委托id")
+    private String wtid;
+
+    /** 检查项id */
+    @Excel(name = "检查项id")
+    private String checkId;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setWtid(String wtid) 
+    {
+        this.wtid = wtid;
+    }
+
+    public String getWtid() 
+    {
+        return wtid;
+    }
+    public void setCheckId(String checkId) 
+    {
+        this.checkId = checkId;
+    }
+
+    public String getCheckId() 
+    {
+        return checkId;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("wtid", getWtid())
+            .append("checkId", getCheckId())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 375 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/ConsignmentMaterial.java

@@ -0,0 +1,375 @@
+package  com.zkqy.laboratory.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 委托物料信息对象 consignment_material
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+public class ConsignmentMaterial extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 委托单id */
+    @Excel(name = "委托单id")
+    private String wtId;
+
+    public String getWtId() {
+        return wtId;
+    }
+
+    public void setWtId(String wtId) {
+        this.wtId = wtId;
+    }
+
+    /** 实验室 */
+    @Excel(name = "实验室")
+    private String laboratory;
+
+    /** 样品类型 */
+    @Excel(name = "样品类型")
+    private String sampleType;
+
+    /** 样品来源 */
+    @Excel(name = "样品来源")
+    private String sampleSource;
+
+    /** 样品名称 */
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+    /** 样品pn */
+    @Excel(name = "样品pn")
+    private String samplePn;
+
+    /** 批次 */
+    @Excel(name = "批次")
+    private String lot;
+
+    /** 样品描述 */
+    @Excel(name = "样品描述")
+    private String sampleDescription;
+
+    /** 紧急度 */
+    @Excel(name = "紧急度")
+    private String emergencyDegree;
+
+    /** 客户1 */
+    @Excel(name = "客户1")
+    private String khOne;
+
+    /** 客户2 */
+    @Excel(name = "客户2")
+    private String khTwo;
+
+    /** 客户3 */
+    @Excel(name = "客户3")
+    private String khThree;
+
+    /** 客户4 */
+    @Excel(name = "客户4")
+    private String khFour;
+
+    /** 客户5 */
+    @Excel(name = "客户5")
+    private String khFive;
+
+    /** 客户6 */
+    @Excel(name = "客户6")
+    private String khSix;
+
+    /** 客户7 */
+    @Excel(name = "客户7")
+    private String khSeven;
+
+    /** 客户8 */
+    @Excel(name = "客户8")
+    private String khEight;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setLaboratory(String laboratory) 
+    {
+        this.laboratory = laboratory;
+    }
+
+    public String getLaboratory() 
+    {
+        return laboratory;
+    }
+    public void setSampleType(String sampleType) 
+    {
+        this.sampleType = sampleType;
+    }
+
+    public String getSampleType() 
+    {
+        return sampleType;
+    }
+    public void setSampleSource(String sampleSource) 
+    {
+        this.sampleSource = sampleSource;
+    }
+
+    public String getSampleSource() 
+    {
+        return sampleSource;
+    }
+    public void setSampleName(String sampleName) 
+    {
+        this.sampleName = sampleName;
+    }
+
+    public String getSampleName() 
+    {
+        return sampleName;
+    }
+    public void setSamplePn(String samplePn) 
+    {
+        this.samplePn = samplePn;
+    }
+
+    public String getSamplePn() 
+    {
+        return samplePn;
+    }
+    public void setLot(String lot) 
+    {
+        this.lot = lot;
+    }
+
+    public String getLot() 
+    {
+        return lot;
+    }
+    public void setSampleDescription(String sampleDescription) 
+    {
+        this.sampleDescription = sampleDescription;
+    }
+
+    public String getSampleDescription() 
+    {
+        return sampleDescription;
+    }
+    public void setEmergencyDegree(String emergencyDegree) 
+    {
+        this.emergencyDegree = emergencyDegree;
+    }
+
+    public String getEmergencyDegree() 
+    {
+        return emergencyDegree;
+    }
+    public void setKhOne(String khOne) 
+    {
+        this.khOne = khOne;
+    }
+
+    public String getKhOne() 
+    {
+        return khOne;
+    }
+    public void setKhTwo(String khTwo) 
+    {
+        this.khTwo = khTwo;
+    }
+
+    public String getKhTwo() 
+    {
+        return khTwo;
+    }
+    public void setKhThree(String khThree) 
+    {
+        this.khThree = khThree;
+    }
+
+    public String getKhThree() 
+    {
+        return khThree;
+    }
+    public void setKhFour(String khFour) 
+    {
+        this.khFour = khFour;
+    }
+
+    public String getKhFour() 
+    {
+        return khFour;
+    }
+    public void setKhFive(String khFive) 
+    {
+        this.khFive = khFive;
+    }
+
+    public String getKhFive() 
+    {
+        return khFive;
+    }
+    public void setKhSix(String khSix) 
+    {
+        this.khSix = khSix;
+    }
+
+    public String getKhSix() 
+    {
+        return khSix;
+    }
+    public void setKhSeven(String khSeven) 
+    {
+        this.khSeven = khSeven;
+    }
+
+    public String getKhSeven() 
+    {
+        return khSeven;
+    }
+    public void setKhEight(String khEight) 
+    {
+        this.khEight = khEight;
+    }
+
+    public String getKhEight() 
+    {
+        return khEight;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("laboratory", getLaboratory())
+            .append("sampleType", getSampleType())
+            .append("sampleSource", getSampleSource())
+            .append("sampleName", getSampleName())
+            .append("samplePn", getSamplePn())
+            .append("lot", getLot())
+            .append("sampleDescription", getSampleDescription())
+            .append("emergencyDegree", getEmergencyDegree())
+            .append("khOne", getKhOne())
+            .append("khTwo", getKhTwo())
+            .append("khThree", getKhThree())
+            .append("khFour", getKhFour())
+            .append("khFive", getKhFive())
+            .append("khSix", getKhSix())
+            .append("khSeven", getKhSeven())
+            .append("khEight", getKhEight())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 355 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/DetectionInformation.java

@@ -0,0 +1,355 @@
+package com.zkqy.laboratory.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+import java.util.List;
+
+/**
+ * 检测信息对象 detection_information
+ * 
+ * @author zkqy
+ * @date 2024-06-05
+ */
+public class DetectionInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 检测项目 */
+    @Excel(name = "检测项目")
+    private String testItem;
+
+    /** 检测指标 */
+    @Excel(name = "检测指标")
+    private String detectionIndex;
+
+    /** 检测周期 */
+    @Excel(name = "检测周期")
+    private String detectionCycle;
+
+    /** 规格上限 */
+    @Excel(name = "规格上限")
+    private String upperSpecificationLimit;
+
+    /** 规格下限 */
+    @Excel(name = "规格下限")
+    private String lowerSpecificationLimit;
+
+    /** 规格单位 */
+    @Excel(name = "规格单位")
+    private String specificationUnit;
+
+    /** 检测方法名称 */
+    @Excel(name = "检测方法名称")
+    private String detectionMethodName;
+
+    /** 方法编号 */
+    @Excel(name = "方法编号")
+    private String testMethodNumber;
+
+    /** 检测项费用 */
+    @Excel(name = "检测项费用")
+    private String testItemCost;
+
+    /** 内控上限 */
+    @Excel(name = "内控上限")
+    private String upperLimitOfInternalControl;
+
+    /** 内控下限 */
+    @Excel(name = "内控下限")
+    private String lowerLimitOfInternalControl;
+
+    /** 方法版本号 */
+    @Excel(name = "方法版本号")
+    private String methodVersionNumber;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    /** 工序 */
+    @Excel(name = "工序")
+    private String process;
+
+    /** 检测组 */
+    @Excel(name = "检测组")
+    private String detectionGroup;
+
+    /*检测id集合*/
+    private  String idsString;
+
+    /*检测id集合*/
+    private String[] ids;
+
+    public String getIdsString() {
+        return idsString;
+    }
+
+    public void setIdsString(String idsString) {
+        this.idsString = idsString;
+    }
+
+    public String[] getIds() {
+        return ids;
+    }
+
+    public void setIds(String[] ids) {
+        this.ids = ids;
+    }
+
+    public String getProcess() {
+        return process;
+    }
+
+    public String getDetectionGroup() {
+        return detectionGroup;
+    }
+
+    public void setDetectionGroup(String detectionGroup) {
+        this.detectionGroup = detectionGroup;
+    }
+
+    public void setProcess(String process) {
+        this.process = process;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTestItem(String testItem) 
+    {
+        this.testItem = testItem;
+    }
+
+    public String getTestItem() 
+    {
+        return testItem;
+    }
+    public void setDetectionIndex(String detectionIndex) 
+    {
+        this.detectionIndex = detectionIndex;
+    }
+
+    public String getDetectionIndex() 
+    {
+        return detectionIndex;
+    }
+    public void setDetectionCycle(String detectionCycle) 
+    {
+        this.detectionCycle = detectionCycle;
+    }
+
+    public String getDetectionCycle() 
+    {
+        return detectionCycle;
+    }
+    public void setUpperSpecificationLimit(String upperSpecificationLimit) 
+    {
+        this.upperSpecificationLimit = upperSpecificationLimit;
+    }
+
+    public String getUpperSpecificationLimit() 
+    {
+        return upperSpecificationLimit;
+    }
+    public void setLowerSpecificationLimit(String lowerSpecificationLimit) 
+    {
+        this.lowerSpecificationLimit = lowerSpecificationLimit;
+    }
+
+    public String getLowerSpecificationLimit() 
+    {
+        return lowerSpecificationLimit;
+    }
+    public void setSpecificationUnit(String specificationUnit) 
+    {
+        this.specificationUnit = specificationUnit;
+    }
+
+    public String getSpecificationUnit() 
+    {
+        return specificationUnit;
+    }
+    public void setDetectionMethodName(String detectionMethodName) 
+    {
+        this.detectionMethodName = detectionMethodName;
+    }
+
+    public String getDetectionMethodName() 
+    {
+        return detectionMethodName;
+    }
+    public void setTestMethodNumber(String testMethodNumber) 
+    {
+        this.testMethodNumber = testMethodNumber;
+    }
+
+    public String getTestMethodNumber() 
+    {
+        return testMethodNumber;
+    }
+    public void setTestItemCost(String testItemCost) 
+    {
+        this.testItemCost = testItemCost;
+    }
+
+    public String getTestItemCost() 
+    {
+        return testItemCost;
+    }
+    public void setUpperLimitOfInternalControl(String upperLimitOfInternalControl) 
+    {
+        this.upperLimitOfInternalControl = upperLimitOfInternalControl;
+    }
+
+    public String getUpperLimitOfInternalControl() 
+    {
+        return upperLimitOfInternalControl;
+    }
+    public void setLowerLimitOfInternalControl(String lowerLimitOfInternalControl) 
+    {
+        this.lowerLimitOfInternalControl = lowerLimitOfInternalControl;
+    }
+
+    public String getLowerLimitOfInternalControl() 
+    {
+        return lowerLimitOfInternalControl;
+    }
+    public void setMethodVersionNumber(String methodVersionNumber) 
+    {
+        this.methodVersionNumber = methodVersionNumber;
+    }
+
+    public String getMethodVersionNumber() 
+    {
+        return methodVersionNumber;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("testItem", getTestItem())
+            .append("detectionIndex", getDetectionIndex())
+            .append("detectionCycle", getDetectionCycle())
+            .append("upperSpecificationLimit", getUpperSpecificationLimit())
+            .append("lowerSpecificationLimit", getLowerSpecificationLimit())
+            .append("specificationUnit", getSpecificationUnit())
+            .append("detectionMethodName", getDetectionMethodName())
+            .append("testMethodNumber", getTestMethodNumber())
+            .append("testItemCost", getTestItemCost())
+            .append("upperLimitOfInternalControl", getUpperLimitOfInternalControl())
+            .append("lowerLimitOfInternalControl", getLowerLimitOfInternalControl())
+            .append("methodVersionNumber", getMethodVersionNumber())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 319 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/DetectionResult.java

@@ -0,0 +1,319 @@
+package com.zkqy.laboratory.domain;
+
+import java.time.LocalDate;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 检测结果对象 detection_result
+ * 
+ * @author zkqy
+ * @date 2024-06-19
+ */
+public class DetectionResult extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 检测结果 */
+    @Excel(name = "检测结果")
+    private String detectionResultMessage;
+
+    /** 检测单位 */
+    @Excel(name = "检测单位")
+    private String unit;
+
+    /** 规格上限 */
+    @Excel(name = "规格上限")
+    private String upperSpecificationLimit;
+
+    /** 规格下限 */
+    @Excel(name = "规格下限")
+    private String lowerSpecificationLimit;
+
+    /** 结果判定 */
+    @Excel(name = "结果判定")
+    private String resultDetermination;
+
+    /** 检测时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检测时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date detectionTime;
+
+    /** 检测项目 */
+    @Excel(name = "检测项目")
+    private String testItem;
+
+    /** 物料pn */
+    @Excel(name = "物料pn")
+    private String materialPn;
+
+    /** 检测指标 */
+    @Excel(name = "检测指标")
+    private String detectionIndex;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String wtId;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String orderNumber;
+
+    @Excel(name = "开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startTime;
+
+    @Excel(name = "结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endTime;
+
+
+    public LocalDate getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(LocalDate startTime) {
+        this.startTime = startTime;
+    }
+
+    public LocalDate getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(LocalDate endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getWtId() {
+        return wtId;
+    }
+
+    public void setWtId(String wtId) {
+        this.wtId = wtId;
+    }
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setDetectionResultMessage(String detectionResultMessage) 
+    {
+        this.detectionResultMessage = detectionResultMessage;
+    }
+
+    public String getDetectionResultMessage() 
+    {
+        return detectionResultMessage;
+    }
+    public void setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+    public void setUpperSpecificationLimit(String upperSpecificationLimit) 
+    {
+        this.upperSpecificationLimit = upperSpecificationLimit;
+    }
+
+    public String getUpperSpecificationLimit() 
+    {
+        return upperSpecificationLimit;
+    }
+    public void setLowerSpecificationLimit(String lowerSpecificationLimit) 
+    {
+        this.lowerSpecificationLimit = lowerSpecificationLimit;
+    }
+
+    public String getLowerSpecificationLimit() 
+    {
+        return lowerSpecificationLimit;
+    }
+    public void setResultDetermination(String resultDetermination) 
+    {
+        this.resultDetermination = resultDetermination;
+    }
+
+    public String getResultDetermination() 
+    {
+        return resultDetermination;
+    }
+    public void setDetectionTime(Date detectionTime) 
+    {
+        this.detectionTime = detectionTime;
+    }
+
+    public Date getDetectionTime() 
+    {
+        return detectionTime;
+    }
+    public void setTestItem(String testItem) 
+    {
+        this.testItem = testItem;
+    }
+
+    public String getTestItem() 
+    {
+        return testItem;
+    }
+    public void setMaterialPn(String materialPn) 
+    {
+        this.materialPn = materialPn;
+    }
+
+    public String getMaterialPn() 
+    {
+        return materialPn;
+    }
+    public void setDetectionIndex(String detectionIndex) 
+    {
+        this.detectionIndex = detectionIndex;
+    }
+
+    public String getDetectionIndex() 
+    {
+        return detectionIndex;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("detectionResultMessage", getDetectionResultMessage())
+            .append("unit", getUnit())
+            .append("upperSpecificationLimit", getUpperSpecificationLimit())
+            .append("lowerSpecificationLimit", getLowerSpecificationLimit())
+            .append("resultDetermination", getResultDetermination())
+            .append("detectionTime", getDetectionTime())
+            .append("testItem", getTestItem())
+            .append("materialPn", getMaterialPn())
+            .append("detectionIndex", getDetectionIndex())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 444 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/EntrustedInformation.java

@@ -0,0 +1,444 @@
+package com.zkqy.laboratory.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+/**
+ * 委托单信息对象 entrusted_information
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+public class EntrustedInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 委托单编号 */
+    @Excel(name = "委托单编号")
+    private String orderNumber;
+
+    /** 检测地点 */
+    @Excel(name = "检测地点")
+    private String detectionSite;
+
+    /** 送检部门 */
+    @Excel(name = "送检部门")
+    private String submittingDepartment;
+
+    /** 样品分类 */
+    @Excel(name = "样品分类")
+    private String sampleClassification;
+
+    /** 检测类型 */
+    @Excel(name = "检测类型")
+    private String detectionType;
+
+    /** 物料组 */
+    @Excel(name = "物料组")
+    private String materialSection;
+
+    /** 物料号 */
+    @Excel(name = "物料号")
+    private String materialNumber;
+
+    /** 车间工序 */
+    @Excel(name = "车间工序")
+    private String shopProcess;
+
+    /** 送检总数 */
+    @Excel(name = "送检总数")
+    private String totalNumberOfInspection;
+
+    /** 供应商 */
+    @Excel(name = "供应商")
+    private String supplier;
+
+    /** 样品处理方式 */
+    @Excel(name = "样品处理方式")
+    private String sampleHandlingMethod;
+
+    /** 物料批次号 */
+    @Excel(name = "物料批次号")
+    private String lot;
+
+    /** 委托单状态 */
+    @Excel(name = "委托单状态")
+    private String orderStatus;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+
+    @Excel(name = "开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startTime;
+
+    @Excel(name = "结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endTime;
+
+    /** 退回原因 */
+    @Excel(name = "退回原因")
+    private String reasonForReturn;
+
+    /** 退回原因备注 */
+    @Excel(name = "退回原因备注")
+    private String reasonForReturnRemark;
+
+    /** 样品名称 */
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+    /** 样品名称 */
+    @Excel(name = "样品PN")
+    private String samplePn;
+
+    @Excel(name = "样品类型")
+    private String sampleType;
+
+    @Excel(name = "样品来源")
+    private String sampleSource;
+
+    @Excel(name = "委托单id")
+    private String wtId;
+
+    public String getWtId() {
+        return wtId;
+    }
+
+    public void setWtId(String wtId) {
+        this.wtId = wtId;
+    }
+
+    /**
+     * 实验室
+     */
+    @Excel(name = "实验室")
+    private String laboratory;
+
+    public String getSampleName() {
+        return sampleName;
+    }
+
+    public void setSampleName(String sampleName) {
+        this.sampleName = sampleName;
+    }
+
+    public String getSamplePn() {
+        return samplePn;
+    }
+
+    public void setSamplePn(String samplePn) {
+        this.samplePn = samplePn;
+    }
+
+    public String getSampleType() {
+        return sampleType;
+    }
+
+    public void setSampleType(String sampleType) {
+        this.sampleType = sampleType;
+    }
+
+    public String getSampleSource() {
+        return sampleSource;
+    }
+
+    public void setSampleSource(String sampleSource) {
+        this.sampleSource = sampleSource;
+    }
+
+    public String getLaboratory() {
+        return laboratory;
+    }
+
+    public void setLaboratory(String laboratory) {
+        this.laboratory = laboratory;
+    }
+
+    public String getReasonForReturn() {
+        return reasonForReturn;
+    }
+
+    public void setReasonForReturn(String reasonForReturn) {
+        this.reasonForReturn = reasonForReturn;
+    }
+
+    public String getReasonForReturnRemark() {
+        return reasonForReturnRemark;
+    }
+
+    public void setReasonForReturnRemark(String reasonForReturnRemark) {
+        this.reasonForReturnRemark = reasonForReturnRemark;
+    }
+
+    public LocalDate getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(LocalDate startTime) {
+        this.startTime = startTime;
+    }
+
+    public LocalDate getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(LocalDate endTime) {
+        this.endTime = endTime;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setOrderNumber(String orderNumber) 
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getOrderNumber() 
+    {
+        return orderNumber;
+    }
+    public void setDetectionSite(String detectionSite) 
+    {
+        this.detectionSite = detectionSite;
+    }
+
+    public String getDetectionSite() 
+    {
+        return detectionSite;
+    }
+    public void setSubmittingDepartment(String submittingDepartment) 
+    {
+        this.submittingDepartment = submittingDepartment;
+    }
+
+    public String getSubmittingDepartment() 
+    {
+        return submittingDepartment;
+    }
+    public void setSampleClassification(String sampleClassification) 
+    {
+        this.sampleClassification = sampleClassification;
+    }
+
+    public String getSampleClassification() 
+    {
+        return sampleClassification;
+    }
+    public void setDetectionType(String detectionType) 
+    {
+        this.detectionType = detectionType;
+    }
+
+    public String getDetectionType() 
+    {
+        return detectionType;
+    }
+    public void setMaterialSection(String materialSection) 
+    {
+        this.materialSection = materialSection;
+    }
+
+    public String getMaterialSection() 
+    {
+        return materialSection;
+    }
+    public void setMaterialNumber(String materialNumber) 
+    {
+        this.materialNumber = materialNumber;
+    }
+
+    public String getMaterialNumber() 
+    {
+        return materialNumber;
+    }
+    public void setShopProcess(String shopProcess) 
+    {
+        this.shopProcess = shopProcess;
+    }
+
+    public String getShopProcess() 
+    {
+        return shopProcess;
+    }
+    public void setTotalNumberOfInspection(String totalNumberOfInspection) 
+    {
+        this.totalNumberOfInspection = totalNumberOfInspection;
+    }
+
+    public String getTotalNumberOfInspection() 
+    {
+        return totalNumberOfInspection;
+    }
+    public void setSupplier(String supplier) 
+    {
+        this.supplier = supplier;
+    }
+
+    public String getSupplier() 
+    {
+        return supplier;
+    }
+    public void setSampleHandlingMethod(String sampleHandlingMethod) 
+    {
+        this.sampleHandlingMethod = sampleHandlingMethod;
+    }
+
+    public String getSampleHandlingMethod() 
+    {
+        return sampleHandlingMethod;
+    }
+    public void setLot(String lot) 
+    {
+        this.lot = lot;
+    }
+
+    public String getLot() 
+    {
+        return lot;
+    }
+    public void setOrderStatus(String orderStatus) 
+    {
+        this.orderStatus = orderStatus;
+    }
+
+    public String getOrderStatus() 
+    {
+        return orderStatus;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderNumber", getOrderNumber())
+            .append("detectionSite", getDetectionSite())
+            .append("submittingDepartment", getSubmittingDepartment())
+            .append("sampleClassification", getSampleClassification())
+            .append("detectionType", getDetectionType())
+            .append("materialSection", getMaterialSection())
+            .append("materialNumber", getMaterialNumber())
+            .append("shopProcess", getShopProcess())
+            .append("totalNumberOfInspection", getTotalNumberOfInspection())
+            .append("supplier", getSupplier())
+            .append("sampleHandlingMethod", getSampleHandlingMethod())
+            .append("lot", getLot())
+            .append("orderStatus", getOrderStatus())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 328 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/LaboratorySampleCollection.java

@@ -0,0 +1,328 @@
+package com.zkqy.laboratory.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.annotation.DataSource;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 实验室收样对象 laboratory_sample_collection
+ * 
+ * @author zkqy
+ * @date 2024-06-17
+ */
+public class LaboratorySampleCollection extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 委托单号 */
+    @Excel(name = "委托单号")
+    private String orderNumber;
+
+    /** 样品名称 */
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+    /** 样品类型 */
+    @Excel(name = "样品类型")
+    private String sampleType;
+
+    /** 样品pn */
+    @Excel(name = "样品pn")
+    private String samplePn;
+
+    /** 送检部门 */
+    @Excel(name = "送检部门")
+    private String submittingDepartment;
+
+    /** 批次 */
+    @Excel(name = "批次")
+    private String lot;
+
+    /** 检测类型 */
+    @Excel(name = "检测类型")
+    private String detectionType;
+
+    /** 重量 */
+    @Excel(name = "重量")
+    private String weight;
+
+    /** 收样时间 */
+    @Excel(name = "收样时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
+    private LocalDate sampleReceivingTime;
+
+    /** 包装外观 */
+    @Excel(name = "包装外观")
+    private String packageAppearance;
+
+    /** 审核状态 */
+    @Excel(name = "审核状态")
+    private String auditStatus;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    /** 委托单编号 */
+    @Excel(name = "委托单编号")
+    private Long wtId;
+
+    /** 委托单编号 */
+    @Excel(name = "委托单编号")
+    private String sampleStatus;
+
+    public String getSampleStatus() {
+        return sampleStatus;
+    }
+
+    public void setSampleStatus(String sampleStatus) {
+        this.sampleStatus = sampleStatus;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setOrderNumber(String orderNumber)
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getOrderNumber()
+    {
+        return orderNumber;
+    }
+    public void setSampleName(String sampleName) 
+    {
+        this.sampleName = sampleName;
+    }
+
+    public String getSampleName() 
+    {
+        return sampleName;
+    }
+    public void setSampleType(String sampleType) 
+    {
+        this.sampleType = sampleType;
+    }
+
+    public String getSampleType() 
+    {
+        return sampleType;
+    }
+    public void setSamplePn(String samplePn) 
+    {
+        this.samplePn = samplePn;
+    }
+
+    public String getSamplePn() 
+    {
+        return samplePn;
+    }
+    public void setSubmittingDepartment(String submittingDepartment) 
+    {
+        this.submittingDepartment = submittingDepartment;
+    }
+
+    public String getSubmittingDepartment() 
+    {
+        return submittingDepartment;
+    }
+    public void setLot(String lot) 
+    {
+        this.lot = lot;
+    }
+
+    public String getLot() 
+    {
+        return lot;
+    }
+    public void setDetectionType(String detectionType) 
+    {
+        this.detectionType = detectionType;
+    }
+
+    public String getDetectionType() 
+    {
+        return detectionType;
+    }
+    public void setWeight(String weight) 
+    {
+        this.weight = weight;
+    }
+
+    public String getWeight() 
+    {
+        return weight;
+    }
+    public void setSampleReceivingTime(LocalDate sampleReceivingTime)
+    {
+        this.sampleReceivingTime = sampleReceivingTime;
+    }
+
+    public LocalDate getSampleReceivingTime()
+    {
+        return sampleReceivingTime;
+    }
+    public void setPackageAppearance(String packageAppearance) 
+    {
+        this.packageAppearance = packageAppearance;
+    }
+
+    public String getPackageAppearance() 
+    {
+        return packageAppearance;
+    }
+    public void setAuditStatus(String auditStatus) 
+    {
+        this.auditStatus = auditStatus;
+    }
+
+    public String getAuditStatus() 
+    {
+        return auditStatus;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+    public void setWtId(Long wtId) 
+    {
+        this.wtId = wtId;
+    }
+
+    public Long getWtId() 
+    {
+        return wtId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderNumber", getOrderNumber())
+            .append("sampleName", getSampleName())
+            .append("sampleType", getSampleType())
+            .append("samplePn", getSamplePn())
+            .append("submittingDepartment", getSubmittingDepartment())
+            .append("lot", getLot())
+            .append("detectionType", getDetectionType())
+            .append("weight", getWeight())
+            .append("sampleReceivingTime", getSampleReceivingTime())
+            .append("packageAppearance", getPackageAppearance())
+            .append("auditStatus", getAuditStatus())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .append("wtId", getWtId())
+            .toString();
+    }
+}

+ 404 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/MaterialInformation.java

@@ -0,0 +1,404 @@
+package com.zkqy.laboratory.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 物料信息对象 material_information
+ * 
+ * @author zkqy
+ * @date 2024-05-29
+ */
+public class MaterialInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 样品类型 */
+    @Excel(name = "样品类型")
+    private String sampleType;
+
+    /** 样品名称 */
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+    /** 样品pn */
+    @Excel(name = "样品pn")
+    private String samplePn;
+
+    /** 检测项 */
+    @Excel(name = "检测项")
+    private String testItem;
+
+    /** 指标检测 */
+    @Excel(name = "指标检测")
+    private String detectionIndex;
+
+    /** 检测方法编号 */
+    @Excel(name = "检测方法编号")
+    private String testMethodNumber;
+
+    /** 检测方法名称 */
+    @Excel(name = "检测方法名称")
+    private String detectionMethodName;
+
+    /** 规格上限 */
+    @Excel(name = "规格上限")
+    private String upperSpecificationLimit;
+
+    /** 规格下限 */
+    @Excel(name = "规格下限")
+    private String lowerSpecificationLimit;
+
+    /** 规格单位 */
+    @Excel(name = "规格单位")
+    private String specificationUnit;
+
+    /** 内控上限 */
+    @Excel(name = "内控上限")
+    private String upperLimitOfInternalControl;
+
+    /** 内控下限 */
+    @Excel(name = "内控下限")
+    private String lowerLimitOfInternalControl;
+
+    /** 样品来源 */
+    @Excel(name = "样品来源")
+    private String sampleSource;
+
+    /** 批次信息 */
+    @Excel(name = "批次信息")
+    private String lot;
+
+    /** 检测实验室 */
+    @Excel(name = "检测实验室")
+    private String testingLaboratory;
+
+    /** 样品描述 */
+    @Excel(name = "样品描述")
+    private String sampleDescription;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+
+    /** 任务节点编码 */
+    @Excel(name = "客户名称")
+    private String customerName;
+
+    /** 任务节点编码 */
+    @Excel(name = "工序")
+    private String process;
+
+
+
+    /** 委托单id */
+    @Excel(name = "委托单id")
+    private String wtId;
+
+    public String getWtId() {
+        return wtId;
+    }
+
+    public void setWtId(String wtId) {
+        this.wtId = wtId;
+    }
+
+    public String getCustomerName() {
+        return customerName;
+    }
+
+
+
+    public String getProcess() {
+        return process;
+    }
+
+    public void setProcess(String process) {
+        this.process = process;
+    }
+
+    public void setCustomerName(String customerName) {
+        this.customerName = customerName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSampleType(String sampleType) 
+    {
+        this.sampleType = sampleType;
+    }
+
+    public String getSampleType() 
+    {
+        return sampleType;
+    }
+    public void setSampleName(String sampleName) 
+    {
+        this.sampleName = sampleName;
+    }
+
+    public String getSampleName() 
+    {
+        return sampleName;
+    }
+    public void setSamplePn(String samplePn) 
+    {
+        this.samplePn = samplePn;
+    }
+
+    public String getSamplePn() 
+    {
+        return samplePn;
+    }
+    public void setTestItem(String testItem) 
+    {
+        this.testItem = testItem;
+    }
+
+    public String getTestItem() 
+    {
+        return testItem;
+    }
+    public void setDetectionIndex(String detectionIndex) 
+    {
+        this.detectionIndex = detectionIndex;
+    }
+
+    public String getDetectionIndex() 
+    {
+        return detectionIndex;
+    }
+    public void setTestMethodNumber(String testMethodNumber) 
+    {
+        this.testMethodNumber = testMethodNumber;
+    }
+
+    public String getTestMethodNumber() 
+    {
+        return testMethodNumber;
+    }
+    public void setDetectionMethodName(String detectionMethodName) 
+    {
+        this.detectionMethodName = detectionMethodName;
+    }
+
+    public String getDetectionMethodName() 
+    {
+        return detectionMethodName;
+    }
+    public void setUpperSpecificationLimit(String upperSpecificationLimit) 
+    {
+        this.upperSpecificationLimit = upperSpecificationLimit;
+    }
+
+    public String getUpperSpecificationLimit() 
+    {
+        return upperSpecificationLimit;
+    }
+    public void setLowerSpecificationLimit(String lowerSpecificationLimit) 
+    {
+        this.lowerSpecificationLimit = lowerSpecificationLimit;
+    }
+
+    public String getLowerSpecificationLimit() 
+    {
+        return lowerSpecificationLimit;
+    }
+    public void setSpecificationUnit(String specificationUnit) 
+    {
+        this.specificationUnit = specificationUnit;
+    }
+
+    public String getSpecificationUnit() 
+    {
+        return specificationUnit;
+    }
+    public void setUpperLimitOfInternalControl(String upperLimitOfInternalControl) 
+    {
+        this.upperLimitOfInternalControl = upperLimitOfInternalControl;
+    }
+
+    public String getUpperLimitOfInternalControl() 
+    {
+        return upperLimitOfInternalControl;
+    }
+    public void setLowerLimitOfInternalControl(String lowerLimitOfInternalControl) 
+    {
+        this.lowerLimitOfInternalControl = lowerLimitOfInternalControl;
+    }
+
+    public String getLowerLimitOfInternalControl() 
+    {
+        return lowerLimitOfInternalControl;
+    }
+    public void setSampleSource(String sampleSource) 
+    {
+        this.sampleSource = sampleSource;
+    }
+
+    public String getSampleSource() 
+    {
+        return sampleSource;
+    }
+    public void setLot(String lot) 
+    {
+        this.lot = lot;
+    }
+
+    public String getLot() 
+    {
+        return lot;
+    }
+    public void setTestingLaboratory(String testingLaboratory) 
+    {
+        this.testingLaboratory = testingLaboratory;
+    }
+
+    public String getTestingLaboratory() 
+    {
+        return testingLaboratory;
+    }
+    public void setSampleDescription(String sampleDescription) 
+    {
+        this.sampleDescription = sampleDescription;
+    }
+
+    public String getSampleDescription() 
+    {
+        return sampleDescription;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sampleType", getSampleType())
+            .append("sampleName", getSampleName())
+            .append("samplePn", getSamplePn())
+            .append("testItem", getTestItem())
+            .append("detectionIndex", getDetectionIndex())
+            .append("testMethodNumber", getTestMethodNumber())
+            .append("detectionMethodName", getDetectionMethodName())
+            .append("upperSpecificationLimit", getUpperSpecificationLimit())
+            .append("lowerSpecificationLimit", getLowerSpecificationLimit())
+            .append("specificationUnit", getSpecificationUnit())
+            .append("upperLimitOfInternalControl", getUpperLimitOfInternalControl())
+            .append("lowerLimitOfInternalControl", getLowerLimitOfInternalControl())
+            .append("sampleSource", getSampleSource())
+            .append("lot", getLot())
+            .append("testingLaboratory", getTestingLaboratory())
+            .append("sampleDescription", getSampleDescription())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 266 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/ReportInformation.java

@@ -0,0 +1,266 @@
+package com.zkqy.laboratory.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 报告信息对象 report_information
+ * 
+ * @author zkqy
+ * @date 2024-06-24
+ */
+public class ReportInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 样品名称 */
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+    /** 样品PN */
+    @Excel(name = "样品PN")
+    private String samplePn;
+
+    /** 委托单编号 */
+    @Excel(name = "委托单编号")
+    private String orderNumber;
+
+    /** 检测类型 */
+    @Excel(name = "检测类型")
+    private String detectionType;
+
+    /** 总检总数 */
+    @Excel(name = "总检总数")
+    private String totalNumberOfInspection;
+
+    /** 报告时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "报告时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date reportTime;
+
+    /** 报告人 */
+    @Excel(name = "报告人")
+    private String lecturer;
+
+    /** 报告结果 */
+    @Excel(name = "报告结果")
+    private String reportResults;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+
+    @Excel(name = "核验人")
+    private String auditor;
+
+    public String getAuditor() {
+        return auditor;
+    }
+
+    public void setAuditor(String auditor) {
+        this.auditor = auditor;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSampleName(String sampleName) 
+    {
+        this.sampleName = sampleName;
+    }
+
+    public String getSampleName() 
+    {
+        return sampleName;
+    }
+    public void setSamplePn(String samplePn) 
+    {
+        this.samplePn = samplePn;
+    }
+
+    public String getSamplePn() 
+    {
+        return samplePn;
+    }
+    public void setOrderNumber(String orderNumber) 
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getOrderNumber() 
+    {
+        return orderNumber;
+    }
+    public void setDetectionType(String detectionType) 
+    {
+        this.detectionType = detectionType;
+    }
+
+    public String getDetectionType() 
+    {
+        return detectionType;
+    }
+    public void setTotalNumberOfInspection(String totalNumberOfInspection) 
+    {
+        this.totalNumberOfInspection = totalNumberOfInspection;
+    }
+
+    public String getTotalNumberOfInspection() 
+    {
+        return totalNumberOfInspection;
+    }
+    public void setReportTime(Date reportTime) 
+    {
+        this.reportTime = reportTime;
+    }
+
+    public Date getReportTime() 
+    {
+        return reportTime;
+    }
+    public void setLecturer(String lecturer) 
+    {
+        this.lecturer = lecturer;
+    }
+
+    public String getLecturer() 
+    {
+        return lecturer;
+    }
+    public void setReportResults(String reportResults) 
+    {
+        this.reportResults = reportResults;
+    }
+
+    public String getReportResults() 
+    {
+        return reportResults;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sampleName", getSampleName())
+            .append("samplePn", getSamplePn())
+            .append("orderNumber", getOrderNumber())
+            .append("detectionType", getDetectionType())
+            .append("totalNumberOfInspection", getTotalNumberOfInspection())
+            .append("reportTime", getReportTime())
+            .append("lecturer", getLecturer())
+            .append("reportResults", getReportResults())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 305 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/SamplePrinting.java

@@ -0,0 +1,305 @@
+package com.zkqy.laboratory.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 样品打印对象 sample_printing
+ * 
+ * @author zkqy
+ * @date 2024-06-12
+ */
+public class SamplePrinting extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 样品类型 */
+    @Excel(name = "样品类型")
+    private String sampleType;
+
+    /** 委托单编号 */
+    @Excel(name = "委托单编号")
+    private  String orderNumber;
+
+
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+
+    /** 样品pn */
+    @Excel(name = "样品pn")
+    private String samplePn;
+
+    /** 送检部门 */
+    @Excel(name = "送检部门")
+    private String submittingDepartment;
+
+    /** 批次 */
+    @Excel(name = "批次")
+    private String lot;
+
+    /** 检测类型 */
+    @Excel(name = "检测类型")
+    private String detectionType;
+
+    /** 是否打印 */
+    @Excel(name = "是否打印")
+    private String isPrint;
+
+    /** 打印时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "打印时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date printTime;
+
+    /** 打印次数 */
+    @Excel(name = "打印次数")
+    private String printCount;
+
+    /** 打印人 */
+    @Excel(name = "打印人")
+    private String printRen;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    @Excel(name="委托单id")
+    private  String wtId;
+
+
+    public String getWtId() {
+        return wtId;
+    }
+
+    public void setWtId(String wtId) {
+        this.wtId = wtId;
+    }
+
+    public String getSampleName() {
+        return sampleName;
+    }
+
+    public void setSampleName(String sampleName) {
+        this.sampleName = sampleName;
+    }
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSampleType(String sampleType) 
+    {
+        this.sampleType = sampleType;
+    }
+
+    public String getSampleType() 
+    {
+        return sampleType;
+    }
+    public void setSamplePn(String samplePn) 
+    {
+        this.samplePn = samplePn;
+    }
+
+    public String getSamplePn() 
+    {
+        return samplePn;
+    }
+    public void setSubmittingDepartment(String submittingDepartment) 
+    {
+        this.submittingDepartment = submittingDepartment;
+    }
+
+    public String getSubmittingDepartment() 
+    {
+        return submittingDepartment;
+    }
+    public void setLot(String lot) 
+    {
+        this.lot = lot;
+    }
+
+    public String getLot() 
+    {
+        return lot;
+    }
+    public void setDetectionType(String detectionType) 
+    {
+        this.detectionType = detectionType;
+    }
+
+    public String getDetectionType() 
+    {
+        return detectionType;
+    }
+    public void setIsPrint(String isPrint) 
+    {
+        this.isPrint = isPrint;
+    }
+
+    public String getIsPrint() 
+    {
+        return isPrint;
+    }
+    public void setPrintTime(Date printTime) 
+    {
+        this.printTime = printTime;
+    }
+
+    public Date getPrintTime() 
+    {
+        return printTime;
+    }
+    public void setPrintCount(String printCount) 
+    {
+        this.printCount = printCount;
+    }
+
+    public String getPrintCount() 
+    {
+        return printCount;
+    }
+    public void setPrintRen(String printRen) 
+    {
+        this.printRen = printRen;
+    }
+
+    public String getPrintRen() 
+    {
+        return printRen;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sampleType", getSampleType())
+            .append("samplePn", getSamplePn())
+            .append("submittingDepartment", getSubmittingDepartment())
+            .append("lot", getLot())
+            .append("detectionType", getDetectionType())
+            .append("isPrint", getIsPrint())
+            .append("printTime", getPrintTime())
+            .append("printCount", getPrintCount())
+            .append("printRen", getPrintRen())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 248 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/SampleTestingProcessInformation.java

@@ -0,0 +1,248 @@
+package com.zkqy.laboratory.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 样品检测过程对象 sample_testing_process_information
+ * 
+ * @author zkqy
+ * @date 2024-06-19
+ */
+public class SampleTestingProcessInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 环境温度 */
+    @Excel(name = "环境温度")
+    private String ambientTemperature;
+
+    /** 环境湿度 */
+    @Excel(name = "环境湿度")
+    private String ambientHumidity;
+
+    /** 检测设备编号 */
+    @Excel(name = "检测设备编号")
+    private String testEquipmentNumber;
+
+    /** 检测设备 */
+    @Excel(name = "检测设备")
+    private String testingEquipment;
+
+    /** 检测人员 */
+    @Excel(name = "检测人员")
+    private String testingPersonnel;
+
+    /** 检测时间 */
+    @Excel(name = "检测时间")
+    private String detectionTime;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    /** 委托单id */
+    @Excel(name = "委托单id")
+    private String wtId;
+
+    @Excel(name="委托单编号")
+    private  String orderNumber;
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setAmbientTemperature(String ambientTemperature) 
+    {
+        this.ambientTemperature = ambientTemperature;
+    }
+
+    public String getAmbientTemperature() 
+    {
+        return ambientTemperature;
+    }
+    public void setAmbientHumidity(String ambientHumidity) 
+    {
+        this.ambientHumidity = ambientHumidity;
+    }
+
+    public String getAmbientHumidity() 
+    {
+        return ambientHumidity;
+    }
+    public void setTestEquipmentNumber(String testEquipmentNumber) 
+    {
+        this.testEquipmentNumber = testEquipmentNumber;
+    }
+
+    public String getTestEquipmentNumber() 
+    {
+        return testEquipmentNumber;
+    }
+    public void setTestingEquipment(String testingEquipment) 
+    {
+        this.testingEquipment = testingEquipment;
+    }
+
+    public String getTestingEquipment() 
+    {
+        return testingEquipment;
+    }
+    public void setTestingPersonnel(String testingPersonnel) 
+    {
+        this.testingPersonnel = testingPersonnel;
+    }
+
+    public String getTestingPersonnel() 
+    {
+        return testingPersonnel;
+    }
+    public void setDetectionTime(String detectionTime) 
+    {
+        this.detectionTime = detectionTime;
+    }
+
+    public String getDetectionTime() 
+    {
+        return detectionTime;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+    public void setWtId(String wtId) 
+    {
+        this.wtId = wtId;
+    }
+
+    public String getWtId() 
+    {
+        return wtId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("ambientTemperature", getAmbientTemperature())
+            .append("ambientHumidity", getAmbientHumidity())
+            .append("testEquipmentNumber", getTestEquipmentNumber())
+            .append("testingEquipment", getTestingEquipment())
+            .append("testingPersonnel", getTestingPersonnel())
+            .append("detectionTime", getDetectionTime())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .append("wtId", getWtId())
+            .toString();
+    }
+}

+ 68 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/vo/WtRVo.java

@@ -0,0 +1,68 @@
+package com.zkqy.laboratory.domain.vo;
+
+import com.zkqy.laboratory.domain.DetectionInformation;
+
+import java.util.List;
+
+public class WtRVo extends WtVo{
+
+   public  String id;
+
+   public  String orderNumber;
+
+   public  String materialId;
+
+    public String getMaterialId() {
+        return materialId;
+    }
+
+    public void setMaterialId(String materialId) {
+        this.materialId = materialId;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public   List<DetectionInformation> detectionInformations;
+
+    public   List<DetectionInformation> detectionInformationsData;
+
+    public List<DetectionInformation> getDetectionInformationsData() {
+        return detectionInformationsData;
+    }
+
+    public void setDetectionInformationsData(List<DetectionInformation> detectionInformationsData) {
+        this.detectionInformationsData = detectionInformationsData;
+    }
+
+    public   List<String> jcids;
+
+    public List<String> getJcids() {
+        return jcids;
+    }
+
+    public void setJcids(List<String> jcids) {
+        this.jcids = jcids;
+    }
+
+    public List<DetectionInformation> getDetectionInformations() {
+        return detectionInformations;
+    }
+
+    public void setDetectionInformations(List<DetectionInformation> detectionInformations) {
+        this.detectionInformations = detectionInformations;
+    }
+}

+ 318 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/domain/vo/WtVo.java

@@ -0,0 +1,318 @@
+package com.zkqy.laboratory.domain.vo;
+
+import com.zkqy.common.annotation.Excel;
+
+public class WtVo{
+
+   //==================委托信息====================
+    /** 物料批次号 */
+    @Excel(name = "物料批次号")
+    private String wtLot;
+
+    public String getWtLot() {
+        return wtLot;
+    }
+
+    public void setWtLot(String wtLot) {
+        this.wtLot = wtLot;
+    }
+
+    public String getShopProcess() {
+        return shopProcess;
+    }
+
+    public void setShopProcess(String shopProcess) {
+        this.shopProcess = shopProcess;
+    }
+
+    public String getTotalNumberOfInspection() {
+        return totalNumberOfInspection;
+    }
+
+    public void setTotalNumberOfInspection(String totalNumberOfInspection) {
+        this.totalNumberOfInspection = totalNumberOfInspection;
+    }
+
+    public String getSupplier() {
+        return supplier;
+    }
+
+    public void setSupplier(String supplier) {
+        this.supplier = supplier;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getWtSampleType() {
+        return wtSampleType;
+    }
+
+    public void setWtSampleType(String wtSampleType) {
+        this.wtSampleType = wtSampleType;
+    }
+
+    public String getDetectionSite() {
+        return detectionSite;
+    }
+
+    public void setDetectionSite(String detectionSite) {
+        this.detectionSite = detectionSite;
+    }
+
+    public String getSubmittingDepartment() {
+        return submittingDepartment;
+    }
+
+    public void setSubmittingDepartment(String submittingDepartment) {
+        this.submittingDepartment = submittingDepartment;
+    }
+
+    public String getSampleHandlingMethod() {
+        return sampleHandlingMethod;
+    }
+
+    public void setSampleHandlingMethod(String sampleHandlingMethod) {
+        this.sampleHandlingMethod = sampleHandlingMethod;
+    }
+
+    public String getLaboratory() {
+        return laboratory;
+    }
+
+    public void setLaboratory(String laboratory) {
+        this.laboratory = laboratory;
+    }
+
+    public String getSampleType() {
+        return sampleType;
+    }
+
+    public void setSampleType(String sampleType) {
+        this.sampleType = sampleType;
+    }
+
+    public String getSampleSource() {
+        return sampleSource;
+    }
+
+    public void setSampleSource(String sampleSource) {
+        this.sampleSource = sampleSource;
+    }
+
+    public String getSampleName() {
+        return sampleName;
+    }
+
+    public void setSampleName(String sampleName) {
+        this.sampleName = sampleName;
+    }
+
+    public String getSamplePn() {
+        return samplePn;
+    }
+
+    public void setSamplePn(String samplePn) {
+        this.samplePn = samplePn;
+    }
+
+    public String getLot() {
+        return lot;
+    }
+
+    public void setLot(String lot) {
+        this.lot = lot;
+    }
+
+    public String getSampleDescription() {
+        return sampleDescription;
+    }
+
+    public void setSampleDescription(String sampleDescription) {
+        this.sampleDescription = sampleDescription;
+    }
+
+    public String getEmergencyDegree() {
+        return emergencyDegree;
+    }
+
+    public void setEmergencyDegree(String emergencyDegree) {
+        this.emergencyDegree = emergencyDegree;
+    }
+
+    public String getKhOne() {
+        return khOne;
+    }
+
+    public void setKhOne(String khOne) {
+        this.khOne = khOne;
+    }
+
+    public String getKhTwo() {
+        return khTwo;
+    }
+
+    public void setKhTwo(String khTwo) {
+        this.khTwo = khTwo;
+    }
+
+    public String getKhThree() {
+        return khThree;
+    }
+
+    public void setKhThree(String khThree) {
+        this.khThree = khThree;
+    }
+
+    public String getKhFour() {
+        return khFour;
+    }
+
+    public void setKhFour(String khFour) {
+        this.khFour = khFour;
+    }
+
+    public String getKhFive() {
+        return khFive;
+    }
+
+    public void setKhFive(String khFive) {
+        this.khFive = khFive;
+    }
+
+    public String getKhSix() {
+        return khSix;
+    }
+
+    public void setKhSix(String khSix) {
+        this.khSix = khSix;
+    }
+
+    public String getKhSeven() {
+        return khSeven;
+    }
+
+    public void setKhSeven(String khSeven) {
+        this.khSeven = khSeven;
+    }
+
+    public String getKhEight() {
+        return khEight;
+    }
+
+    public void setKhEight(String khEight) {
+        this.khEight = khEight;
+    }
+
+    public String getJcxString() {
+        return jcxString;
+    }
+
+    public void setJcxString(String jcxString) {
+        this.jcxString = jcxString;
+    }
+
+    /** 车间工序 */
+    @Excel(name = "车间工序")
+    private String shopProcess;
+
+
+    /** 送检总数 */
+    @Excel(name = "送检总数")
+    private String totalNumberOfInspection;
+
+
+    /** 供应商 */
+    @Excel(name = "供应商")
+    private String supplier;
+
+
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remark;
+
+    /** 样品类型 */
+    @Excel(name = "样品类型")
+    private String wtSampleType;
+
+    /** 检测地点 */
+    @Excel(name = "检测地点")
+    private String detectionSite;
+
+    /** 送检部门 */
+    @Excel(name = "送检部门")
+    private String submittingDepartment;
+
+    /** 样品处理方式 */
+    @Excel(name = "样品处理方式")
+    private String sampleHandlingMethod;
+
+
+   //==================物料信息====================
+    /** 实验室 */
+    @Excel(name = "实验室")
+    private String laboratory;
+
+    /** 样品类型 */
+    @Excel(name = "样品类型")
+    private String sampleType;
+
+
+    /** 样品来源 */
+    @Excel(name = "样品来源")
+    private String sampleSource;
+
+    /** 样品名称 */
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+
+    /** 样品pn */
+    @Excel(name = "样品pn")
+    private String samplePn;
+
+    /** 样品批次 */
+    @Excel(name = "样品批次")
+    private String lot;
+
+    /** 样品描述 */
+    @Excel(name = "样品描述")
+    private String sampleDescription;
+
+    /** 样品紧急度 */
+    @Excel(name = "样品紧急度")
+    private String emergencyDegree;
+
+    @Excel(name = "客户1")
+    private String khOne;
+
+    @Excel(name = "客户2")
+    private String khTwo;
+
+    @Excel(name = "客户3")
+    private String khThree;
+
+    @Excel(name = "客户4")
+    private String khFour;
+    @Excel(name = "客户5")
+    private String khFive;
+    @Excel(name = "客户6")
+    private String khSix;
+    @Excel(name = "客户7")
+    private String khSeven;
+
+    @Excel(name = "客户8")
+    private String khEight;
+
+    //==================检测项信息====================
+
+    //数组逗号分隔
+    @Excel(name = "检测项")
+    private String jcxString;
+}

+ 83 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/CommissionedInspectionMapper.java

@@ -0,0 +1,83 @@
+package  com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import  com.zkqy.laboratory.domain.CommissionedInspection;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 委托检查Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+@Mapper
+public interface CommissionedInspectionMapper 
+{
+    /**
+     * 查询委托检查
+     * 
+     * @param id 委托检查主键
+     * @return 委托检查
+     */
+    public CommissionedInspection selectCommissionedInspectionById(Long id);
+
+    /**
+     * 查询委托检查列表
+     * 
+     * @param commissionedInspection 委托检查
+     * @return 委托检查集合
+     */
+    public List<CommissionedInspection> selectCommissionedInspectionList(CommissionedInspection commissionedInspection);
+
+    /**
+     * 新增委托检查
+     * 
+     * @param commissionedInspection 委托检查
+     * @return 结果
+     */
+    public int insertCommissionedInspection(CommissionedInspection commissionedInspection);
+
+    /**
+     * 修改委托检查
+     * 
+     * @param commissionedInspection 委托检查
+     * @return 结果
+     */
+    public int updateCommissionedInspection(CommissionedInspection commissionedInspection);
+
+    /**
+     * 修改委托检查
+     *
+     * @param commissionedInspection 委托检查
+     * @return 结果
+     */
+    public int updateCommissionedInspectionByWtId(CommissionedInspection commissionedInspection);
+    /**
+     * 删除委托检查
+     * 
+     * @param id 委托检查主键
+     * @return 结果
+     */
+    public int deleteCommissionedInspectionById(Long id);
+
+    /**
+     * 批量删除委托检查
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCommissionedInspectionByIds(Long[] ids);
+
+    /**
+     * 批量删除委托检查
+     *
+     * @param wtid 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCommissionedInspectionByWtId(Long wtid);
+
+    /**
+     * 通过委托单id查询检测信息
+     */
+    List<CommissionedInspection> selectCommissionedInspectionByWtId(Long wtid);
+}

+ 70 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/ConsignmentMaterialMapper.java

@@ -0,0 +1,70 @@
+package  com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import  com.zkqy.laboratory.domain.ConsignmentMaterial;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 委托物料信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+@Mapper
+public interface ConsignmentMaterialMapper 
+{
+    /**
+     * 查询委托物料信息
+     * 
+     * @param id 委托物料信息主键
+     * @return 委托物料信息
+     */
+    public ConsignmentMaterial selectConsignmentMaterialById(Long id);
+
+    /**
+     * 查询委托物料信息列表
+     * 
+     * @param consignmentMaterial 委托物料信息
+     * @return 委托物料信息集合
+     */
+    public List<ConsignmentMaterial> selectConsignmentMaterialList(ConsignmentMaterial consignmentMaterial);
+
+    /**
+     * 新增委托物料信息
+     * 
+     * @param consignmentMaterial 委托物料信息
+     * @return 结果
+     */
+    public int insertConsignmentMaterial(ConsignmentMaterial consignmentMaterial);
+
+    /**
+     * 修改委托物料信息
+     * 
+     * @param consignmentMaterial 委托物料信息
+     * @return 结果
+     */
+    public int updateConsignmentMaterial(ConsignmentMaterial consignmentMaterial);
+
+    /**
+     * 删除委托物料信息
+     * 
+     * @param id 委托物料信息主键
+     * @return 结果
+     */
+    public int deleteConsignmentMaterialById(Long id);
+
+    /**
+     * 批量删除委托物料信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteConsignmentMaterialByIds(Long[] ids);
+
+    /**
+     * 根据委托单id查询物料信息
+     */
+    ConsignmentMaterial selectConsignmentMaterialByWtId(Long wtId);
+
+    int updateConsignmentMaterialByWtId(ConsignmentMaterial consignmentMaterial);
+}

+ 81 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/DetectionInformationMapper.java

@@ -0,0 +1,81 @@
+package com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.DetectionInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 检测信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-05
+ */
+@Mapper
+public interface DetectionInformationMapper 
+{
+    /**
+     * 查询检测信息
+     * 
+     * @param id 检测信息主键
+     * @return 检测信息
+     */
+    public DetectionInformation selectDetectionInformationById(Long id);
+
+    /**
+     * 查询检测信息
+     *
+     * @param process 检测信息主键
+     * @return 检测信息
+     */
+    public List<DetectionInformation> selectDetectionInformationByProcess(String  process);
+
+
+    /**
+     * 查询检测信息
+     *
+     * @param ids 检测信息主键
+     * @return 检测信息
+     */
+    public List<DetectionInformation> selectDetectionInformationByIdIn(Long[] ids);
+
+
+    /**
+     * 查询检测信息列表
+     * 
+     * @param detectionInformation 检测信息
+     * @return 检测信息集合
+     */
+    public List<DetectionInformation> selectDetectionInformationList(DetectionInformation detectionInformation);
+
+    /**
+     * 新增检测信息
+     * 
+     * @param detectionInformation 检测信息
+     * @return 结果
+     */
+    public int insertDetectionInformation(DetectionInformation detectionInformation);
+
+    /**
+     * 修改检测信息
+     * 
+     * @param detectionInformation 检测信息
+     * @return 结果
+     */
+    public int updateDetectionInformation(DetectionInformation detectionInformation);
+
+    /**
+     * 删除检测信息
+     * 
+     * @param id 检测信息主键
+     * @return 结果
+     */
+    public int deleteDetectionInformationById(Long id);
+
+    /**
+     * 批量删除检测信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDetectionInformationByIds(Long[] ids);
+}

+ 61 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/DetectionResultMapper.java

@@ -0,0 +1,61 @@
+package com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.DetectionResult;
+
+/**
+ * 检测结果Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-19
+ */
+public interface DetectionResultMapper 
+{
+    /**
+     * 查询检测结果
+     * 
+     * @param id 检测结果主键
+     * @return 检测结果
+     */
+    public DetectionResult selectDetectionResultById(Long id);
+
+    /**
+     * 查询检测结果列表
+     * 
+     * @param detectionResult 检测结果
+     * @return 检测结果集合
+     */
+    public List<DetectionResult> selectDetectionResultList(DetectionResult detectionResult);
+
+    /**
+     * 新增检测结果
+     * 
+     * @param detectionResult 检测结果
+     * @return 结果
+     */
+    public int insertDetectionResult(DetectionResult detectionResult);
+
+    /**
+     * 修改检测结果
+     * 
+     * @param detectionResult 检测结果
+     * @return 结果
+     */
+    public int updateDetectionResult(DetectionResult detectionResult);
+
+    /**
+     * 删除检测结果
+     * 
+     * @param id 检测结果主键
+     * @return 结果
+     */
+    public int deleteDetectionResultById(Long id);
+
+    /**
+     * 批量删除检测结果
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDetectionResultByIds(Long[] ids);
+}

+ 63 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/EntrustedInformationMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.EntrustedInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 委托单信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+@Mapper
+public interface EntrustedInformationMapper 
+{
+    /**
+     * 查询委托单信息
+     * 
+     * @param id 委托单信息主键
+     * @return 委托单信息
+     */
+    public EntrustedInformation selectEntrustedInformationById(Long id);
+
+    /**
+     * 查询委托单信息列表
+     * 
+     * @param entrustedInformation 委托单信息
+     * @return 委托单信息集合
+     */
+    public List<EntrustedInformation> selectEntrustedInformationList(EntrustedInformation entrustedInformation);
+
+    /**
+     * 新增委托单信息
+     * 
+     * @param entrustedInformation 委托单信息
+     * @return 结果
+     */
+    public int insertEntrustedInformation(EntrustedInformation entrustedInformation);
+
+    /**
+     * 修改委托单信息
+     * 
+     * @param entrustedInformation 委托单信息
+     * @return 结果
+     */
+    public int updateEntrustedInformation(EntrustedInformation entrustedInformation);
+
+    /**
+     * 删除委托单信息
+     * 
+     * @param id 委托单信息主键
+     * @return 结果
+     */
+    public int deleteEntrustedInformationById(Long id);
+
+    /**
+     * 批量删除委托单信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteEntrustedInformationByIds(Long[] ids);
+}

+ 63 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/LaboratorySampleCollectionMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.LaboratorySampleCollection;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 实验室收样Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-17
+ */
+@Mapper
+public interface LaboratorySampleCollectionMapper 
+{
+    /**
+     * 查询实验室收样
+     * 
+     * @param id 实验室收样主键
+     * @return 实验室收样
+     */
+    public LaboratorySampleCollection selectLaboratorySampleCollectionById(Long id);
+
+    /**
+     * 查询实验室收样列表
+     * 
+     * @param laboratorySampleCollection 实验室收样
+     * @return 实验室收样集合
+     */
+    public List<LaboratorySampleCollection> selectLaboratorySampleCollectionList(LaboratorySampleCollection laboratorySampleCollection);
+
+    /**
+     * 新增实验室收样
+     * 
+     * @param laboratorySampleCollection 实验室收样
+     * @return 结果
+     */
+    public int insertLaboratorySampleCollection(LaboratorySampleCollection laboratorySampleCollection);
+
+    /**
+     * 修改实验室收样
+     * 
+     * @param laboratorySampleCollection 实验室收样
+     * @return 结果
+     */
+    public int updateLaboratorySampleCollection(LaboratorySampleCollection laboratorySampleCollection);
+
+    /**
+     * 删除实验室收样
+     * 
+     * @param id 实验室收样主键
+     * @return 结果
+     */
+    public int deleteLaboratorySampleCollectionById(Long id);
+
+    /**
+     * 批量删除实验室收样
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteLaboratorySampleCollectionByIds(Long[] ids);
+}

+ 71 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/MaterialInformationMapper.java

@@ -0,0 +1,71 @@
+package com.zkqy.laboratory.mapper;
+
+import java.util.List;
+
+import com.zkqy.laboratory.domain.MaterialInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 物料信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-05-29
+ */
+@Mapper
+public interface MaterialInformationMapper 
+{
+    /**
+     * 查询物料信息
+     * 
+     * @param id 物料信息主键
+     * @return 物料信息
+     */
+    public MaterialInformation selectMaterialInformationById(Long id);
+
+    /**
+     * 查询物料信息列表
+     * 
+     * @param materialInformation 物料信息
+     * @return 物料信息集合
+     */
+    public List<MaterialInformation> selectMaterialInformationList(MaterialInformation materialInformation);
+
+    /**
+     * 新增物料信息
+     * 
+     * @param materialInformation 物料信息
+     * @return 结果
+     */
+    public int insertMaterialInformation(MaterialInformation materialInformation);
+
+    /**
+     * 修改物料信息
+     * 
+     * @param materialInformation 物料信息
+     * @return 结果
+     */
+    public int updateMaterialInformation(MaterialInformation materialInformation);
+
+    /**
+     * 删除物料信息
+     * 
+     * @param id 物料信息主键
+     * @return 结果
+     */
+    public int deleteMaterialInformationById(Long id);
+
+    /**
+     * 批量删除物料信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMaterialInformationByIds(Long[] ids);
+
+    /**
+     * 批量新增物料信息
+     * @param materialInformation
+     * @return
+     */
+    int insertMaterialInformationBatchInsert(List<MaterialInformation> materialInformation);
+}

+ 61 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/ReportInformationMapper.java

@@ -0,0 +1,61 @@
+package com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.ReportInformation;
+
+/**
+ * 报告信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-24
+ */
+public interface ReportInformationMapper 
+{
+    /**
+     * 查询报告信息
+     * 
+     * @param id 报告信息主键
+     * @return 报告信息
+     */
+    public ReportInformation selectReportInformationById(Long id);
+
+    /**
+     * 查询报告信息列表
+     * 
+     * @param reportInformation 报告信息
+     * @return 报告信息集合
+     */
+    public List<ReportInformation> selectReportInformationList(ReportInformation reportInformation);
+
+    /**
+     * 新增报告信息
+     * 
+     * @param reportInformation 报告信息
+     * @return 结果
+     */
+    public int insertReportInformation(ReportInformation reportInformation);
+
+    /**
+     * 修改报告信息
+     * 
+     * @param reportInformation 报告信息
+     * @return 结果
+     */
+    public int updateReportInformation(ReportInformation reportInformation);
+
+    /**
+     * 删除报告信息
+     * 
+     * @param id 报告信息主键
+     * @return 结果
+     */
+    public int deleteReportInformationById(Long id);
+
+    /**
+     * 批量删除报告信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteReportInformationByIds(Long[] ids);
+}

+ 73 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/SamplePrintingMapper.java

@@ -0,0 +1,73 @@
+package com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.SamplePrinting;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 样品打印Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-12
+ */
+@Mapper
+public interface SamplePrintingMapper 
+{
+    /**
+     * 查询样品打印
+     * 
+     * @param id 样品打印主键
+     * @return 样品打印
+     */
+    public SamplePrinting selectSamplePrintingById(Long id);
+
+    /**
+     * 查询样品打印列表
+     * 
+     * @param samplePrinting 样品打印
+     * @return 样品打印集合
+     */
+    public List<SamplePrinting> selectSamplePrintingList(SamplePrinting samplePrinting);
+
+    /**
+     * 根据批号和委托单号查询打印信息
+     *
+     * @param lot 样品打印
+     * @Param wtId 委托单id
+     * @return 样品打印集合
+     */
+    public List<SamplePrinting> selectSamplePrintingInfo(@Param("lot")String lot, @Param("wtId") String wtId);
+
+    /**
+     * 新增样品打印
+     * 
+     * @param samplePrinting 样品打印
+     * @return 结果
+     */
+    public int insertSamplePrinting(SamplePrinting samplePrinting);
+
+    /**
+     * 修改样品打印
+     * 
+     * @param samplePrinting 样品打印
+     * @return 结果
+     */
+    public int updateSamplePrinting(SamplePrinting samplePrinting);
+
+    /**
+     * 删除样品打印
+     * 
+     * @param id 样品打印主键
+     * @return 结果
+     */
+    public int deleteSamplePrintingById(Long id);
+
+    /**
+     * 批量删除样品打印
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSamplePrintingByIds(Long[] ids);
+}

+ 61 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/mapper/SampleTestingProcessInformationMapper.java

@@ -0,0 +1,61 @@
+package com.zkqy.laboratory.mapper;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.SampleTestingProcessInformation;
+
+/**
+ * 样品检测过程Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-06-19
+ */
+public interface SampleTestingProcessInformationMapper 
+{
+    /**
+     * 查询样品检测过程
+     * 
+     * @param id 样品检测过程主键
+     * @return 样品检测过程
+     */
+    public SampleTestingProcessInformation selectSampleTestingProcessInformationById(Long id);
+
+    /**
+     * 查询样品检测过程列表
+     * 
+     * @param sampleTestingProcessInformation 样品检测过程
+     * @return 样品检测过程集合
+     */
+    public List<SampleTestingProcessInformation> selectSampleTestingProcessInformationList(SampleTestingProcessInformation sampleTestingProcessInformation);
+
+    /**
+     * 新增样品检测过程
+     * 
+     * @param sampleTestingProcessInformation 样品检测过程
+     * @return 结果
+     */
+    public int insertSampleTestingProcessInformation(SampleTestingProcessInformation sampleTestingProcessInformation);
+
+    /**
+     * 修改样品检测过程
+     * 
+     * @param sampleTestingProcessInformation 样品检测过程
+     * @return 结果
+     */
+    public int updateSampleTestingProcessInformation(SampleTestingProcessInformation sampleTestingProcessInformation);
+
+    /**
+     * 删除样品检测过程
+     * 
+     * @param id 样品检测过程主键
+     * @return 结果
+     */
+    public int deleteSampleTestingProcessInformationById(Long id);
+
+    /**
+     * 批量删除样品检测过程
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSampleTestingProcessInformationByIds(Long[] ids);
+}

+ 69 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/ICommissionedInspectionService.java

@@ -0,0 +1,69 @@
+package  com.zkqy.laboratory.service;
+
+import java.util.List;
+import  com.zkqy.laboratory.domain.CommissionedInspection;
+import com.zkqy.laboratory.domain.vo.WtRVo;
+
+/**
+ * 委托检查Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+public interface ICommissionedInspectionService 
+{
+    /**
+     * 查询委托检查
+     * 
+     * @param id 委托检查主键
+     * @return 委托检查
+     */
+    public CommissionedInspection selectCommissionedInspectionById(Long id);
+
+    /**
+     * 查询委托检查列表
+     * 
+     * @param commissionedInspection 委托检查
+     * @return 委托检查集合
+     */
+    public List<CommissionedInspection> selectCommissionedInspectionList(CommissionedInspection commissionedInspection);
+
+    /**
+     * 新增委托检查
+     * 
+     * @param commissionedInspection 委托检查
+     * @return 结果
+     */
+    public int insertCommissionedInspection(CommissionedInspection commissionedInspection);
+
+    /**
+     * 修改委托检查
+     * 
+     * @param commissionedInspection 委托检查
+     * @return 结果
+     */
+    public int updateCommissionedInspection(CommissionedInspection commissionedInspection);
+
+    /**
+     * 批量删除委托检查
+     * 
+     * @param ids 需要删除的委托检查主键集合
+     * @return 结果
+     */
+    public int deleteCommissionedInspectionByIds(Long[] ids);
+
+    /**
+     * 删除委托检查信息
+     * 
+     * @param id 委托检查主键
+     * @return 结果
+     */
+    public int deleteCommissionedInspectionById(Long id);
+
+    /**
+     * 根据id查询委托信息和物料信息、检测信息
+     * @param id
+     * @return
+     */
+    WtRVo selectCommissionedInspectionByIdRVo(Long id);
+}

+ 61 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IConsignmentMaterialService.java

@@ -0,0 +1,61 @@
+package  com.zkqy.laboratory.service;
+
+import java.util.List;
+import  com.zkqy.laboratory.domain.ConsignmentMaterial;
+
+/**
+ * 委托物料信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+public interface IConsignmentMaterialService 
+{
+    /**
+     * 查询委托物料信息
+     * 
+     * @param id 委托物料信息主键
+     * @return 委托物料信息
+     */
+    public ConsignmentMaterial selectConsignmentMaterialById(Long id);
+
+    /**
+     * 查询委托物料信息列表
+     * 
+     * @param consignmentMaterial 委托物料信息
+     * @return 委托物料信息集合
+     */
+    public List<ConsignmentMaterial> selectConsignmentMaterialList(ConsignmentMaterial consignmentMaterial);
+
+    /**
+     * 新增委托物料信息
+     * 
+     * @param consignmentMaterial 委托物料信息
+     * @return 结果
+     */
+    public int insertConsignmentMaterial(ConsignmentMaterial consignmentMaterial);
+
+    /**
+     * 修改委托物料信息
+     * 
+     * @param consignmentMaterial 委托物料信息
+     * @return 结果
+     */
+    public int updateConsignmentMaterial(ConsignmentMaterial consignmentMaterial);
+
+    /**
+     * 批量删除委托物料信息
+     * 
+     * @param ids 需要删除的委托物料信息主键集合
+     * @return 结果
+     */
+    public int deleteConsignmentMaterialByIds(Long[] ids);
+
+    /**
+     * 删除委托物料信息信息
+     * 
+     * @param id 委托物料信息主键
+     * @return 结果
+     */
+    public int deleteConsignmentMaterialById(Long id);
+}

+ 61 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IDetectionInformationService.java

@@ -0,0 +1,61 @@
+package com.zkqy.laboratory.service;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.DetectionInformation;
+
+/**
+ * 检测信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-05
+ */
+public interface IDetectionInformationService 
+{
+    /**
+     * 查询检测信息
+     * 
+     * @param id 检测信息主键
+     * @return 检测信息
+     */
+    public DetectionInformation selectDetectionInformationById(Long id);
+
+    /**
+     * 查询检测信息列表
+     * 
+     * @param detectionInformation 检测信息
+     * @return 检测信息集合
+     */
+    public List<DetectionInformation> selectDetectionInformationList(DetectionInformation detectionInformation);
+
+    /**
+     * 新增检测信息
+     * 
+     * @param detectionInformation 检测信息
+     * @return 结果
+     */
+    public int insertDetectionInformation(DetectionInformation detectionInformation);
+
+    /**
+     * 修改检测信息
+     * 
+     * @param detectionInformation 检测信息
+     * @return 结果
+     */
+    public int updateDetectionInformation(DetectionInformation detectionInformation);
+
+    /**
+     * 批量删除检测信息
+     * 
+     * @param ids 需要删除的检测信息主键集合
+     * @return 结果
+     */
+    public int deleteDetectionInformationByIds(Long[] ids);
+
+    /**
+     * 删除检测信息信息
+     * 
+     * @param id 检测信息主键
+     * @return 结果
+     */
+    public int deleteDetectionInformationById(Long id);
+}

+ 61 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IDetectionResultService.java

@@ -0,0 +1,61 @@
+package com.zkqy.laboratory.service;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.DetectionResult;
+
+/**
+ * 检测结果Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-19
+ */
+public interface IDetectionResultService 
+{
+    /**
+     * 查询检测结果
+     * 
+     * @param id 检测结果主键
+     * @return 检测结果
+     */
+    public DetectionResult selectDetectionResultById(Long id);
+
+    /**
+     * 查询检测结果列表
+     * 
+     * @param detectionResult 检测结果
+     * @return 检测结果集合
+     */
+    public List<DetectionResult> selectDetectionResultList(DetectionResult detectionResult);
+
+    /**
+     * 新增检测结果
+     * 
+     * @param detectionResult 检测结果
+     * @return 结果
+     */
+    public int insertDetectionResult(DetectionResult detectionResult);
+
+    /**
+     * 修改检测结果
+     * 
+     * @param detectionResult 检测结果
+     * @return 结果
+     */
+    public int updateDetectionResult(DetectionResult detectionResult);
+
+    /**
+     * 批量删除检测结果
+     * 
+     * @param ids 需要删除的检测结果主键集合
+     * @return 结果
+     */
+    public int deleteDetectionResultByIds(Long[] ids);
+
+    /**
+     * 删除检测结果信息
+     * 
+     * @param id 检测结果主键
+     * @return 结果
+     */
+    public int deleteDetectionResultById(Long id);
+}

+ 93 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IEntrustedInformationService.java

@@ -0,0 +1,93 @@
+package com.zkqy.laboratory.service;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.EntrustedInformation;
+import com.zkqy.laboratory.domain.vo.WtRVo;
+import com.zkqy.laboratory.domain.vo.WtVo;
+
+/**
+ * 委托单信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-11
+ */
+public interface IEntrustedInformationService 
+{
+    /**
+     * 查询委托单信息
+     * 
+     * @param id 委托单信息主键
+     * @return 委托单信息
+     */
+    public EntrustedInformation selectEntrustedInformationById(Long id);
+
+    /**
+     * 查询委托单信息列表
+     * 
+     * @param entrustedInformation 委托单信息
+     * @return 委托单信息集合
+     */
+    public List<EntrustedInformation> selectEntrustedInformationList(EntrustedInformation entrustedInformation);
+
+    /**
+     * 新增委托单信息
+     * 
+     * @param entrustedInformation 委托单信息
+     * @return 结果
+     */
+    public int insertEntrustedInformation(EntrustedInformation entrustedInformation);
+
+    /**
+     * 新增委托单信息
+     *
+     * @param wtVo 委托单信息
+     * @return 结果
+     */
+    public int insertEntrustedInformationVo(WtVo wtVo);
+
+    /**
+     * 修改委托单信息
+     * 
+     * @param entrustedInformation 委托单信息
+     * @return 结果
+     */
+    public int updateEntrustedInformation(EntrustedInformation entrustedInformation);
+
+    /**
+     * 逻辑更新删除状态
+     *
+     * @param entrustedInformation 委托单信息
+     * @return 结果
+     */
+    public int updateEntrustedInformationDelStatus(EntrustedInformation entrustedInformation);
+
+    /**
+     * 修改委托单信息
+     *
+     * @param wtVo 委托单信息
+     * @return 结果
+     */
+    public int updateEntrustedInformationVo(WtRVo wtVo);
+
+    /**
+     * 批量删除委托单信息
+     * 
+     * @param ids 需要删除的委托单信息主键集合
+     * @return 结果
+     */
+    public int deleteEntrustedInformationByIds(Long[] ids);
+
+    /**
+     * 删除委托单信息信息
+     * 
+     * @param id 委托单信息主键
+     * @return 结果
+     */
+    public int deleteEntrustedInformationById(Long id);
+    /**
+     * 根据id查询委托信息和物料信息、检测信息
+     * @param id
+     * @return
+     */
+    WtRVo selectEntrustedInformationByIdRVo(String id);
+}

+ 64 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/ILaboratorySampleCollectionService.java

@@ -0,0 +1,64 @@
+package com.zkqy.laboratory.service;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.LaboratorySampleCollection;
+
+/**
+ * 实验室收样Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-17
+ */
+public interface ILaboratorySampleCollectionService 
+{
+    /**
+     * 查询实验室收样
+     * 
+     * @param id 实验室收样主键
+     * @return 实验室收样
+     */
+    public LaboratorySampleCollection selectLaboratorySampleCollectionById(Long id);
+
+    /**
+     * 查询实验室收样列表
+     * 
+     * @param laboratorySampleCollection 实验室收样
+     * @return 实验室收样集合
+     */
+    public List<LaboratorySampleCollection> selectLaboratorySampleCollectionList(LaboratorySampleCollection laboratorySampleCollection);
+
+    /**
+     * 新增实验室收样
+     * 
+     * @param laboratorySampleCollection 实验室收样
+     * @return 结果
+     */
+    public int insertLaboratorySampleCollection(LaboratorySampleCollection laboratorySampleCollection);
+
+    /**
+     * 修改实验室收样
+     * 
+     * @param laboratorySampleCollection 实验室收样
+     * @return 结果
+     */
+    public int updateLaboratorySampleCollection(LaboratorySampleCollection laboratorySampleCollection);
+
+    /**
+     * 批量删除实验室收样
+     * 
+     * @param ids 需要删除的实验室收样主键集合
+     * @return 结果
+     */
+    public int deleteLaboratorySampleCollectionByIds(Long[] ids);
+
+    /**
+     * 删除实验室收样信息
+     * 
+     * @param id 实验室收样主键
+     * @return 结果
+     */
+    public int deleteLaboratorySampleCollectionById(Long id);
+
+
+    int insertLaboratorySampleCollectionAndUpdateOrderFormStatus(LaboratorySampleCollection laboratorySampleCollection);
+}

+ 70 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IMaterialInformationService.java

@@ -0,0 +1,70 @@
+package com.zkqy.laboratory.service;
+
+
+import com.zkqy.laboratory.domain.MaterialInformation;
+
+import java.util.List;
+
+/**
+ * 物料信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-05-29
+ */
+public interface IMaterialInformationService 
+{
+    /**
+     * 查询物料信息
+     * 
+     * @param id 物料信息主键
+     * @return 物料信息
+     */
+    public MaterialInformation selectMaterialInformationById(Long id);
+
+    /**
+     * 查询物料信息列表
+     * 
+     * @param materialInformation 物料信息
+     * @return 物料信息集合
+     */
+    public List<MaterialInformation> selectMaterialInformationList(MaterialInformation materialInformation);
+
+    /**
+     * 新增物料信息
+     * 
+     * @param materialInformation 物料信息
+     * @return 结果
+     */
+    public int insertMaterialInformation(MaterialInformation materialInformation);
+
+    /**
+     * 修改物料信息
+     * 
+     * @param materialInformation 物料信息
+     * @return 结果
+     */
+    public int updateMaterialInformation(MaterialInformation materialInformation);
+
+    /**
+     * 批量删除物料信息
+     * 
+     * @param ids 需要删除的物料信息主键集合
+     * @return 结果
+     */
+    public int deleteMaterialInformationByIds(Long[] ids);
+
+    /**
+     * 删除物料信息信息
+     * 
+     * @param id 物料信息主键
+     * @return 结果
+     */
+    public int deleteMaterialInformationById(Long id);
+
+    /**
+     *
+     * @param materialInformation
+     * @return
+     */
+    int insertMaterialInformationBatchInsert(List<MaterialInformation> materialInformation);
+}

+ 61 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/IReportInformationService.java

@@ -0,0 +1,61 @@
+package com.zkqy.laboratory.service;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.ReportInformation;
+
+/**
+ * 报告信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-24
+ */
+public interface IReportInformationService 
+{
+    /**
+     * 查询报告信息
+     * 
+     * @param id 报告信息主键
+     * @return 报告信息
+     */
+    public ReportInformation selectReportInformationById(Long id);
+
+    /**
+     * 查询报告信息列表
+     * 
+     * @param reportInformation 报告信息
+     * @return 报告信息集合
+     */
+    public List<ReportInformation> selectReportInformationList(ReportInformation reportInformation);
+
+    /**
+     * 新增报告信息
+     * 
+     * @param reportInformation 报告信息
+     * @return 结果
+     */
+    public int insertReportInformation(ReportInformation reportInformation);
+
+    /**
+     * 修改报告信息
+     * 
+     * @param reportInformation 报告信息
+     * @return 结果
+     */
+    public int updateReportInformation(ReportInformation reportInformation);
+
+    /**
+     * 批量删除报告信息
+     * 
+     * @param ids 需要删除的报告信息主键集合
+     * @return 结果
+     */
+    public int deleteReportInformationByIds(Long[] ids);
+
+    /**
+     * 删除报告信息信息
+     * 
+     * @param id 报告信息主键
+     * @return 结果
+     */
+    public int deleteReportInformationById(Long id);
+}

+ 76 - 0
zkqy-laboratory-information/src/main/java/com/zkqy/laboratory/service/ISamplePrintingService.java

@@ -0,0 +1,76 @@
+package com.zkqy.laboratory.service;
+
+import java.util.List;
+import com.zkqy.laboratory.domain.SamplePrinting;
+
+/**
+ * 样品打印Service接口
+ * 
+ * @author zkqy
+ * @date 2024-06-12
+ */
+public interface ISamplePrintingService 
+{
+    /**
+     * 查询样品打印
+     * 
+     * @param id 样品打印主键
+     * @return 样品打印
+     */
+    public SamplePrinting selectSamplePrintingById(Long id);
+
+    /**
+     * 查询样品打印列表
+     * 
+     * @param samplePrinting 样品打印
+     * @return 样品打印集合
+     */
+    public List<SamplePrinting> selectSamplePrintingList(SamplePrinting samplePrinting);
+
+    /**
+     * 查询样品打印列表
+     *
+     * @param samplePrinting 样品打印
+     * @return 样品打印集合
+     */
+    public List<SamplePrinting> selectSamplePrintingInfo(SamplePrinting samplePrinting);
+
+    /**
+     * 新增样品打印
+     * 
+     * @param samplePrinting 样品打印
+     * @return 结果
+     */
+    public int insertSamplePrinting(SamplePrinting samplePrinting);
+
+    /**
+     * 修改样品打印
+     * 
+     * @param samplePrinting 样品打印
+     * @return 结果
+     */
+    public int updateSamplePrinting(SamplePrinting samplePrinting);
+
+    /**
+     * 批量删除样品打印
+     * 
+     * @param ids 需要删除的样品打印主键集合
+     * @return 结果
+     */
+    public int deleteSamplePrintingByIds(Long[] ids);
+
+    /**
+     * 删除样品打印信息
+     * 
+     * @param id 样品打印主键
+     * @return 结果
+     */
+    public int deleteSamplePrintingById(Long id);
+
+    /**
+     * 新增打印日志信息
+     * @param samplePrinting
+     * @return
+     */
+    int insertSamplePrintingVo(SamplePrinting samplePrinting);
+}

部分文件因为文件数量过多而无法显示