Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

阿赫 vor 8 Monaten
Ursprung
Commit
2ecbd69c82
100 geänderte Dateien mit 9317 neuen und 119 gelöschten Zeilen
  1. 6 1
      zkqy-admin/pom.xml
  2. 1 3
      zkqy-admin/src/main/java/com/zkqy/ZkqyServletInitializer.java
  3. 0 1
      zkqy-admin/src/main/java/com/zkqy/web/controller/chemicalFiber/QualityInspectionCertificateController.java
  4. 0 7
      zkqy-admin/src/main/java/com/zkqy/web/controller/common/CommonFileController.java
  5. 37 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysLoginController.java
  6. 7 35
      zkqy-admin/src/main/java/com/zkqy/web/yb.java
  7. 1 1
      zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java
  8. 1 0
      zkqy-common/pom.xml
  9. 2 0
      zkqy-common/src/main/java/com/zkqy/common/core/domain/BaseEntity.java
  10. 38 0
      zkqy-common/src/main/java/com/zkqy/common/utils/DateUtils.java
  11. 1 1
      zkqy-common/src/main/java/com/zkqy/common/utils/PageUtils.java
  12. 1 1
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/MaterielController.java
  13. 0 1
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/SaleProductsController.java
  14. 4 0
      zkqy-framework/pom.xml
  15. 6 5
      zkqy-framework/src/main/java/com/zkqy/framework/aspectj/DataScopeAspect.java
  16. 2 0
      zkqy-framework/src/main/java/com/zkqy/framework/config/SecurityConfig.java
  17. 55 2
      zkqy-framework/src/main/java/com/zkqy/framework/sso_oauth2/controller/ThirdPartLoginController.java
  18. 5 0
      zkqy-fujian-amichi/pom.xml
  19. 106 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/AutomaticSchedulingOnSiteController.java
  20. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ExceptionReportInformationSheetController.java
  21. 0 2
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialInfoController.java
  22. 170 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/OnSiteProgramDetailsController.java
  23. 9 7
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/PlanTaskDetailsController.java
  24. 129 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionCardFlowController.java
  25. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionOrderListController.java
  26. 5 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionPlanningManagementController.java
  27. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ReportInformationSheetController.java
  28. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/SchedulingProcessTimeController.java
  29. 166 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/SemiFinishedMaterialListController.java
  30. 119 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/StationInformationController.java
  31. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TeamInformationController.java
  32. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TeamPersonnelChangeInformationController.java
  33. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TeamPersonnelInformationController.java
  34. 14 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/WarehouseEntryInformationController.java
  35. 345 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/AutomaticSchedulingOnSite.java
  36. 266 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ExceptionReportInformationSheet.java
  37. 197 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/OnSiteProgramDetails.java
  38. 195 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionCardFlow.java
  39. 293 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionOrderList.java
  40. 4 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionPlanningManagement.java
  41. 3 3
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/PurchaseOrder.java
  42. 263 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ReportInformationSheet.java
  43. 195 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/SchedulingProcessTime.java
  44. 599 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/SemiFinishedMaterialList.java
  45. 248 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/StationInformation.java
  46. 176 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TeamInformation.java
  47. 166 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TeamPersonnelChangeInformation.java
  48. 207 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TeamPersonnelInformation.java
  49. 33 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/GenerateProcessFlowCardVo.java
  50. 17 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/OnSiteProgramDetailsSumVo.java
  51. 88 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/OnSiteProgramDetailsVo.java
  52. 32 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/ProcessWarehousingVo.java
  53. 28 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/SemiFinishedMaterialListAndMaterialInventory.java
  54. 17 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/SemiFinishedMaterialListVo.java
  55. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/AutomaticSchedulingOnSiteMapper.java
  56. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ExceptionReportInformationSheetMapper.java
  57. 88 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/OnSiteProgramDetailsMapper.java
  58. 70 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionCardFlowMapper.java
  59. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionOrderListMapper.java
  60. 10 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionPlanningManagementMapper.java
  61. 72 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ReportInformationSheetMapper.java
  62. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/SchedulingProcessTimeMapper.java
  63. 90 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/SemiFinishedMaterialListMapper.java
  64. 81 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/StationInformationMapper.java
  65. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/TeamInformationMapper.java
  66. 64 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/TeamPersonnelChangeInformationMapper.java
  67. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/TeamPersonnelInformationMapper.java
  68. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IAutomaticSchedulingOnSiteService.java
  69. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IExceptionReportInformationSheetService.java
  70. 105 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IOnSiteProgramDetailsService.java
  71. 69 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProductionCardFlowService.java
  72. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProductionOrderListService.java
  73. 62 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IReportInformationSheetService.java
  74. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ISchedulingProcessTimeService.java
  75. 91 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ISemiFinishedMaterialListService.java
  76. 64 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IStationInformationService.java
  77. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ITeamInformationService.java
  78. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ITeamPersonnelChangeInformationService.java
  79. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ITeamPersonnelInformationService.java
  80. 10 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IWarehouseEntryInformationService.java
  81. 97 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/AutomaticSchedulingOnSiteServiceImpl.java
  82. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ExceptionReportInformationSheetServiceImpl.java
  83. 232 44
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ExportproductionschedulingServiceImpl.java
  84. 0 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/MaterialInfoServiceImpl.java
  85. 486 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/OnSiteProgramDetailsServiceImpl.java
  86. 129 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionCardFlowServiceImpl.java
  87. 98 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionOrderListServiceImpl.java
  88. 4 4
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/PurchaseOrderServiceImpl.java
  89. 184 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ReportInformationSheetServiceImpl.java
  90. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/SchedulingProcessTimeServiceImpl.java
  91. 227 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/SemiFinishedMaterialListServiceImpl.java
  92. 357 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java
  93. 97 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TeamInformationServiceImpl.java
  94. 103 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TeamPersonnelChangeInformationServiceImpl.java
  95. 126 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TeamPersonnelInformationServiceImpl.java
  96. 59 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/WarehouseEntryInformationServiceImpl.java
  97. 66 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/AmichiCommissionNumberGenerator.java
  98. 50 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/PurchaseNumberGenerator.java
  99. 49 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/WarehouseEntryNumberGenerator.java
  100. 32 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/a.java

+ 6 - 1
zkqy-admin/pom.xml

@@ -54,6 +54,7 @@
         <dependency>
             <groupId>com.zkqy</groupId>
             <artifactId>zkqy-framework</artifactId>
+            <version>3.8.5</version>
         </dependency>
         <!--业务模块-->
         <dependency>
@@ -67,6 +68,11 @@
             <artifactId>zkqy-custom-business</artifactId>
             <version>3.8.5</version>
         </dependency>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-common</artifactId>
+            <version>3.8.5</version>
+        </dependency>
         <dependency>
             <groupId>com.zkqy</groupId>
             <artifactId>zkqy-laboratory-information</artifactId>
@@ -92,7 +98,6 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
-
     </dependencies>
 
     <build>

+ 1 - 3
zkqy-admin/src/main/java/com/zkqy/ZkqyServletInitializer.java

@@ -19,9 +19,7 @@ public class ZkqyServletInitializer extends SpringBootServletInitializer
 
 
     public static void main(String[] args) {
-        for (int i = 0; i < 10; i++) {
-            System.out.println(i);
-        }
+
     }
 
 }

+ 0 - 1
zkqy-admin/src/main/java/com/zkqy/web/controller/chemicalFiber/QualityInspectionCertificateController.java

@@ -3,7 +3,6 @@ package com.zkqy.web.controller.chemicalFiber;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import com.zkqy.execution.produce.dispersed.service.ICommonService;
-import com.zkqy.execution.produce.dispersed.service.impl.runbpm.chemicalfiber.QualityInspectionCertificate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;

+ 0 - 7
zkqy-admin/src/main/java/com/zkqy/web/controller/common/CommonFileController.java

@@ -13,33 +13,26 @@ import com.zkqy.common.constant.Constants;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.redis.RedisCache;
 import com.zkqy.common.enums.BusinessType;
-import com.zkqy.common.utils.SecurityUtils;
 import com.zkqy.common.utils.StringUtils;
 import com.zkqy.common.utils.file.FileUploadUtils;
 import com.zkqy.common.utils.file.FileUtils;
 import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import com.zkqy.execution.produce.dispersed.entity.TableSql;
-import com.zkqy.execution.produce.dispersed.entity.vo.FileVo;
 import com.zkqy.execution.produce.dispersed.service.ICommonService;
 import com.zkqy.execution.produce.dispersed.service.ITableSqlService;
 import com.zkqy.framework.config.ServerConfig;
 import com.zkqy.business.controller.CommonController;
-import com.zkqy.system.service.sso.RedisService;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.v3.oas.annotations.parameters.RequestBody;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
-
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
 
 import static com.zkqy.common.core.domain.AjaxResult.success;
 

+ 37 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysLoginController.java

@@ -3,6 +3,7 @@ package com.zkqy.web.controller.system;
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
 import com.zkqy.business.entity.MobilePageData;
@@ -198,6 +199,42 @@ public class SysLoginController {
         return ajax;
     }
 
+
+    @GetMapping("/lims/Login/")
+    public AjaxResult LimsOauth2Login(@RequestParam("userName") String userName) {
+        //本身参数就为空
+        if (StringUtils.isEmpty(userName)) {
+            return AjaxResult.error("用户名不能为空");
+        }
+        //处理租户拼接问题(buffer线程安全)
+        StringBuffer tenantIdStringBuffer=new StringBuffer("213");
+        tenantIdStringBuffer.append("¥¥¥");
+        tenantIdStringBuffer.append(userName);
+        //根据用户名查询,lims租户下的用户信息
+        SysUser sysUser = userService.selectUserByUserName(tenantIdStringBuffer.toString());
+        //当前系统中不存在此用户名
+        if (!Optional.ofNullable(sysUser).isPresent()) {
+            return AjaxResult.error("用户名不能为空");
+        }
+        LoginBody loginBody = new LoginBody();
+        loginBody.setTenantID(sysUser.getTenant().getTenantId().toString());
+        loginBody.setUsername(userName);
+        AjaxResult ajax = AjaxResult.success();
+        // 生成令牌(参数1:租户code 参数二:租户用户名称)
+        String token = loginService.loginOauth(sysUser.getTenant().getTenantCode(), sysUser.getUserName());
+        // 校验你当前登录是否是admin,这是不被允许的
+        if (tokenService.getLoginUserIsAdminByToken(token)) {
+            return AjaxResult.error("用户不存在!");
+        }
+        //这种租户永不过期
+        ajax.put(Constants.TOKEN, token);
+        return ajax;
+    }
+
+
+
+
+
     /**
      * 验证租户i是否存在有效
      *

+ 7 - 35
zkqy-admin/src/main/java/com/zkqy/web/yb.java

@@ -6,41 +6,13 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 
 public class yb {
-    public static void main(String[] args) throws InterruptedException, ExecutionException {
 
-
-            long startTime = System.currentTimeMillis();
-
-            //调用用户服务获取用户基本信息
-            CompletableFuture<String> userFuture = CompletableFuture.supplyAsync(() ->
-            //模拟查询商品耗时500毫秒
-            {
-                try {
-                    Thread.sleep(500);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-                return "用户A";
-            });
-
-            //调用商品服务获取商品基本信息
-            CompletableFuture<String> goodsFuture = CompletableFuture.supplyAsync(() ->
-            //模拟查询商品耗时500毫秒
-            {
-                try {
-                    Thread.sleep(400);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-                return "商品A";
-            });
-
-            System.out.println("获取用户信息:" + userFuture.get());
-            System.out.println("获取商品信息:" + goodsFuture.get());
-
-            //模拟主程序耗时时间
-            Thread.sleep(600);
-            System.out.println("总共用时" + (System.currentTimeMillis() - startTime) + "ms");
+    public static void main(String[] args) {
+        int count = 0;
+        for(int i = 0;i < 100;i++)
+        {
+            count = ++count;
         }
-
+        System.out.println("count = "+count);
+    }
 }

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

@@ -10,13 +10,13 @@ import com.zkqy.business.service.IDragFormService;
 import com.zkqy.business.service.IDragTableBtnService;
 import com.zkqy.business.service.IDragTableGroupService;
 import com.zkqy.business.service.impl.DragTableBtnServiceImpl;
+
 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.StringUtils;
 import com.zkqy.common.utils.form.FromUtils;
-import com.zkqy.execution.produce.dispersed.entity.BpmApprovalStatus;
 import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import com.zkqy.execution.produce.dispersed.entity.DragFormGroup;
 import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormDateVo;

+ 1 - 0
zkqy-common/pom.xml

@@ -176,4 +176,5 @@
         </dependency>
     </dependencies>
 
+
 </project>

+ 2 - 0
zkqy-common/src/main/java/com/zkqy/common/core/domain/BaseEntity.java

@@ -3,6 +3,7 @@ package com.zkqy.common.core.domain;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -30,6 +31,7 @@ public class BaseEntity implements Serializable
 
     /** 创建时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /** 更新者 */

+ 38 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/DateUtils.java

@@ -171,6 +171,33 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return day + "天" + hour + "小时" + min + "分钟";
     }
 
+    /**
+     * 计算时间差
+     *
+     * @param endTime 最后时间
+     * @param startTime 开始时间
+     * @return 时间差(天/小时/分钟)
+     */
+    public static String timeDistanceMin(Date endTime, Date startTime)
+    {
+        long nd = 1000 * 24 * 60 * 60;
+        long nh = 1000 * 60 * 60;
+        long nm = 1000 * 60;
+        // long ns = 1000;
+        // 获得两个时间的毫秒时间差异
+        long diff = endTime.getTime() - startTime.getTime();
+        // 计算差多少天
+        long day = diff / nd;
+        // 计算差多少小时
+        long hour = diff % nd / nh;
+        // 计算差多少分钟
+        long min = diff % nd % nh / nm;
+        // 计算差多少秒//输出结果
+        // long sec = diff % nd % nh % nm / ns;
+        return  String.valueOf(min);
+    }
+
+
     /**
      * 增加 LocalDateTime ==> Date
      */
@@ -211,6 +238,17 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return dateStr;
     }
 
+    /**
+     * 日期类型转换 LocalDate 转 String
+     */
+    public static String toLocalDateStr(LocalDate dateTime)
+    {
+        DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String dateStr = dateTime.format(fmt);
+        return dateStr;
+    }
+
+
     /**
      * 日期类型转换 String 转 LocalDateTime
      */

+ 1 - 1
zkqy-common/src/main/java/com/zkqy/common/utils/PageUtils.java

@@ -16,7 +16,7 @@ public class PageUtils extends PageHelper {
      */
     public static void startPage() {
         PageDomain pageDomain = TableSupport.buildPageRequest();
-        if (pageDomain.isEnablePaging()) {
+        if (pageDomain.isEnablePaging()) { //是否启动分页程序
             Integer pageNum = pageDomain.getPageNum();
             Integer pageSize = pageDomain.getPageSize();
             String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());

+ 1 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/controller/MaterielController.java

@@ -144,7 +144,7 @@ public class MaterielController extends BaseController
     /**
      * 领料管理、采购管理  获取所有原材料排序
      */
-    @GetMapping("/queryMaterielAllList")
+    @GetMapping("/lingTuiLiao/queryMaterielAllList")
     public AjaxResult queryMaterielAllList(){
         return AjaxResult.success(materielService.queryMaterielAllList());
     }

+ 0 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/controller/SaleProductsController.java

@@ -50,7 +50,6 @@ public class SaleProductsController extends BaseController {
 //        saleProducts.setStatus("3");
         saleProducts.setProductionLineNo(productionLineNo); //不查在当前产线投产过的产品了
         List<SaleProductsVo> list = saleProductsService.selectSaleProductsListAndCustomerName(saleProducts);
-
         return AjaxResult.success(list);
     }
 

+ 4 - 0
zkqy-framework/pom.xml

@@ -86,6 +86,10 @@
             <artifactId>httpclient</artifactId>
             <version>4.5.5</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-redis</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 6 - 5
zkqy-framework/src/main/java/com/zkqy/framework/aspectj/DataScopeAspect.java

@@ -3,12 +3,9 @@ package com.zkqy.framework.aspectj;
 import java.util.ArrayList;
 import java.util.List;
 
-import com.zkqy.common.core.domain.BaseEntity;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.springframework.stereotype.Component;
+
 import com.zkqy.common.annotation.DataScope;
+import com.zkqy.common.core.domain.BaseEntity;
 import com.zkqy.common.core.domain.entity.SysRole;
 import com.zkqy.common.core.domain.entity.SysUser;
 import com.zkqy.common.core.domain.model.LoginUser;
@@ -16,6 +13,10 @@ import com.zkqy.common.core.text.Convert;
 import com.zkqy.common.utils.SecurityUtils;
 import com.zkqy.common.utils.StringUtils;
 import com.zkqy.framework.security.context.PermissionContextHolder;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.stereotype.Component;
 
 /**
  * 数据过滤处理

+ 2 - 0
zkqy-framework/src/main/java/com/zkqy/framework/config/SecurityConfig.java

@@ -114,6 +114,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                 // 单点授权
                 .antMatchers("/oauth2/**", "/Oauth2Login/**", "/oauth/callback", "/authorize").permitAll()
+                //模拟登录授权
+                .antMatchers("/pageTransfer","/lims/Login/").permitAll()
 
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()

+ 55 - 2
zkqy-framework/src/main/java/com/zkqy/framework/sso_oauth2/controller/ThirdPartLoginController.java

@@ -2,11 +2,15 @@ package com.zkqy.framework.sso_oauth2.controller;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.zkqy.common.annotation.Anonymous;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.domain.entity.SysUser;
+import com.zkqy.common.utils.StringUtils;
 import com.zkqy.common.utils.http.HttpUtilsOauth2;
+import com.zkqy.system.service.ISysUserService;
 import org.apache.http.HttpResponse;
 import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -19,6 +23,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 
 
 /**
@@ -53,8 +58,9 @@ public class ThirdPartLoginController {
             map.put("redirect_uri", CALLBACK);
             map.put("code", code);
 //            map.put("client_id", "mestools");
-            map.put("client_id", "lth");//单点登陆过滤
-//            if(name.equals("")&&name!=null){
+            map.put("client_id", "hmc");
+//            if(name.equals("")&&name!=
+//            null){
 //                map.put("client_id", "mestools");
 //            }else {
 //
@@ -118,5 +124,52 @@ public class ThirdPartLoginController {
         }
         return AjaxResult.success("认证中心", URL + "/authorize?" + "response_type=code" + "&client_id=toolmes" + "&scope=openid" + "&redirect_uri=" + CALLBACK);
     }
+
+    @Autowired
+    private ISysUserService userService;
+
+    @GetMapping("/pageTransferTest")
+    @Anonymous
+    @ResponseBody
+    public String limsCallbackTest(@RequestParam("userName") String userName) {
+
+        return "aa";
+    }
+
+    /**
+     * 空白页跳转
+     * @return
+     */
+    @GetMapping("/pageTransfer")
+    @Anonymous
+    public String limsCallback(@RequestParam("userName") String userName) {
+        //本身参数就为空
+        if (StringUtils.isEmpty(userName)) {
+            // 授权失败处理
+            return "redirect:" + REDIRECT_URL + "/401";
+        }
+        //
+        //处理租户拼接问题(buffer线程安全)
+        StringBuffer tenantIdStringBuffer=new StringBuffer("213");
+        tenantIdStringBuffer.append("¥¥¥");
+        tenantIdStringBuffer.append(userName);
+        //根据用户名查询,lims租户下的用户信息
+        SysUser sysUser = userService.selectUserByUserName(tenantIdStringBuffer.toString());
+        //当前系统中不存在此用户名
+        if (!Optional.ofNullable(sysUser).isPresent()) {
+            // 授权失败处理
+            return "redirect:" + REDIRECT_URL + "/401";
+        }
+        StringBuffer returnTenantInfoBufferString=new StringBuffer("213");
+        returnTenantInfoBufferString.append("#");
+        returnTenantInfoBufferString.append(sysUser.getTenant().getTenantCode());
+        returnTenantInfoBufferString.append("#");
+        returnTenantInfoBufferString.append(userName);
+        System.out.println(returnTenantInfoBufferString);
+        String encodeUserInfo = Base64.getEncoder().encodeToString(returnTenantInfoBufferString.toString().getBytes());
+        // 生成令牌(参数1:租户code 参数二:租户用户名称)
+        return "redirect:" + REDIRECT_URL + "/pageTransferPage?userInfo="+encodeUserInfo;
+    }
+
 }
 

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

@@ -21,6 +21,11 @@
             <groupId>com.zkqy</groupId>
             <artifactId>zkqy-framework</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-process-execution</artifactId>
+            <version>3.8.5</version>
+        </dependency>
         <dependency>
             <groupId>io.swagger</groupId>
             <artifactId>swagger-annotations</artifactId>

+ 106 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/AutomaticSchedulingOnSiteController.java

@@ -0,0 +1,106 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.PageUtils;
+import com.zkqy.common.utils.poi.ExcelUtil;
+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.amichi.domain.AutomaticSchedulingOnSite;
+import com.zkqy.amichi.service.IAutomaticSchedulingOnSiteService;
+
+
+/**
+ * 场内计划排产信息Controller
+ * @author ruoyi
+ * @date 2024-08-18
+ */
+@RestController
+@RequestMapping("/automaticSchedulingOnSite/site")
+public class AutomaticSchedulingOnSiteController extends BaseController
+{
+    @Autowired
+    private IAutomaticSchedulingOnSiteService automaticSchedulingOnSiteService;
+
+    /**
+     * 查询场内计划排产信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('automaticSchedulingOnSite:site:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(AutomaticSchedulingOnSite automaticSchedulingOnSite)
+    {
+        startPage();
+        List<AutomaticSchedulingOnSite> list = automaticSchedulingOnSiteService.selectAutomaticSchedulingOnSiteList(automaticSchedulingOnSite);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出场内计划排产信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('automaticSchedulingOnSite:site:export')")
+    @Log(title = "场内计划排产信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, AutomaticSchedulingOnSite automaticSchedulingOnSite)
+    {
+        List<AutomaticSchedulingOnSite> list = automaticSchedulingOnSiteService.selectAutomaticSchedulingOnSiteList(automaticSchedulingOnSite);
+        ExcelUtil<AutomaticSchedulingOnSite> util = new ExcelUtil<AutomaticSchedulingOnSite>(AutomaticSchedulingOnSite.class);
+        util.exportExcel(response, list, "场内计划排产信息数据");
+    }
+
+    /**
+     * 获取场内计划排产信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('automaticSchedulingOnSite:site:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(automaticSchedulingOnSiteService.selectAutomaticSchedulingOnSiteById(id));
+    }
+
+    /**
+     * 新增场内计划排产信息
+     */
+    @PreAuthorize("@ss.hasPermi('automaticSchedulingOnSite:site:add')")
+    @Log(title = "场内计划排产信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody AutomaticSchedulingOnSite automaticSchedulingOnSite)
+    {
+        return toAjax(automaticSchedulingOnSiteService.insertAutomaticSchedulingOnSite(automaticSchedulingOnSite));
+    }
+
+    /**
+     * 修改场内计划排产信息
+     */
+    @PreAuthorize("@ss.hasPermi('automaticSchedulingOnSite:site:edit')")
+    @Log(title = "场内计划排产信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody AutomaticSchedulingOnSite automaticSchedulingOnSite)
+    {
+        return toAjax(automaticSchedulingOnSiteService.updateAutomaticSchedulingOnSite(automaticSchedulingOnSite));
+    }
+
+    /**
+     * 删除场内计划排产信息
+     */
+    @PreAuthorize("@ss.hasPermi('automaticSchedulingOnSite:site:remove')")
+    @Log(title = "场内计划排产信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(automaticSchedulingOnSiteService.deleteAutomaticSchedulingOnSiteByIds(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ExceptionReportInformationSheetController.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.ExceptionReportInformationSheet;
+import com.zkqy.amichi.service.IExceptionReportInformationSheetService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 异常报工日志Controller
+ *
+ * @author zkqy
+ * @date 2024-09-11
+ */
+@RestController
+@RequestMapping("/amichi/exceptionReportSheet")
+@Api(value = "/amichi/exceptionReportSheet", description = "异常报工日志-接口")
+public class ExceptionReportInformationSheetController extends BaseController
+{
+    @Autowired
+    private IExceptionReportInformationSheetService exceptionReportInformationSheetService;
+
+    /**
+     * 查询异常报工日志列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:exceptionReportSheet:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询异常报工日志列表")
+    public TableDataInfo list(ExceptionReportInformationSheet exceptionReportInformationSheet)
+    {
+        startPage();
+        List<ExceptionReportInformationSheet> list = exceptionReportInformationSheetService.selectExceptionReportInformationSheetList(exceptionReportInformationSheet);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出异常报工日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:exceptionReportSheet:export')")
+    @Log(title = "异常报工日志", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出异常报工日志列表")
+    public void export(HttpServletResponse response, ExceptionReportInformationSheet exceptionReportInformationSheet)
+    {
+        List<ExceptionReportInformationSheet> list = exceptionReportInformationSheetService.selectExceptionReportInformationSheetList(exceptionReportInformationSheet);
+        ExcelUtil<ExceptionReportInformationSheet> util = new ExcelUtil<ExceptionReportInformationSheet>(ExceptionReportInformationSheet.class);
+        util.exportExcel(response, list, "异常报工日志数据");
+    }
+
+    /**
+     * 获取异常报工日志详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:exceptionReportSheet:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取异常报工日志详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(exceptionReportInformationSheetService.selectExceptionReportInformationSheetById(id));
+    }
+
+    /**
+     * 新增异常报工日志
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:exceptionReportSheet:add')")
+    @Log(title = "异常报工日志", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增异常报工日志")
+    public AjaxResult add(@RequestBody ExceptionReportInformationSheet exceptionReportInformationSheet)
+    {
+        return toAjax(exceptionReportInformationSheetService.insertExceptionReportInformationSheet(exceptionReportInformationSheet));
+    }
+
+    /**
+     * 修改异常报工日志
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:exceptionReportSheet:edit')")
+    @Log(title = "异常报工日志", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改异常报工日志")
+    public AjaxResult edit(@RequestBody ExceptionReportInformationSheet exceptionReportInformationSheet)
+    {
+        return toAjax(exceptionReportInformationSheetService.updateExceptionReportInformationSheet(exceptionReportInformationSheet));
+    }
+
+    /**
+     * 删除异常报工日志
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:exceptionReportSheet:remove')")
+    @Log(title = "异常报工日志", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除异常报工日志")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(exceptionReportInformationSheetService.deleteExceptionReportInformationSheetByIds(ids));
+    }
+}

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

@@ -43,8 +43,6 @@ public class MaterialInfoController extends BaseController
     private IMaterialInfoService materialInfoService;
 
 
-
-
     /**
      * 查询所有计划的物料信息并合并
      * @RequestParam("specification") String specification,

+ 170 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/OnSiteProgramDetailsController.java

@@ -0,0 +1,170 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.domain.vo.OnSiteProgramDetailsVo;
+import com.zkqy.amichi.domain.vo.ProductionPlanningManagementVo;
+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.OnSiteProgramDetails;
+import com.zkqy.amichi.service.IOnSiteProgramDetailsService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 场内计划详情crudController
+ *
+ * @author zkqy
+ * @date 2024-08-06
+ *
+ */
+@RestController
+@RequestMapping("/amichi/onSiteProgramDetails")
+@Api(value = "/amichi/onSiteProgramDetails", description = "场内计划详情crud-接口")
+public class OnSiteProgramDetailsController extends BaseController {
+
+    @Autowired
+    private IOnSiteProgramDetailsService onSiteProgramDetailsService;
+
+    /**
+     * 查询场内计划详情crud列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询场内计划详情crud列表")
+    public TableDataInfo list(OnSiteProgramDetails onSiteProgramDetails)
+    {
+        startPage();
+        List<OnSiteProgramDetails> list = onSiteProgramDetailsService.selectOnSiteProgramDetailsList(onSiteProgramDetails);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出场内计划详情crud列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:export')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出场内计划详情crud列表")
+    public void export(HttpServletResponse response, OnSiteProgramDetails onSiteProgramDetails)
+    {
+        List<OnSiteProgramDetails> list = onSiteProgramDetailsService.selectOnSiteProgramDetailsList(onSiteProgramDetails);
+        ExcelUtil<OnSiteProgramDetails> util = new ExcelUtil<OnSiteProgramDetails>(OnSiteProgramDetails.class);
+        util.exportExcel(response, list, "场内计划详情crud数据");
+    }
+
+    /**
+     * 获取场内计划详情crud详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取场内计划详情crud详细信息")
+    public AjaxResult selectOnSiteProgramDetailsVoById(@PathVariable("id") Long id)
+    {
+        return success(onSiteProgramDetailsService.selectOnSiteProgramDetailsVoById(id));
+    }
+
+    /**
+     * 新增场内计划详情crud
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:add')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增场内计划详情crud")
+    public AjaxResult add(@RequestBody OnSiteProgramDetails onSiteProgramDetails)
+    {
+        return toAjax(onSiteProgramDetailsService.insertOnSiteProgramDetails(onSiteProgramDetails));
+    }
+
+    /**
+     * 新增场内计划详情crud
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:add')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.INSERT)
+    @PostMapping("/addOnSiteProgramDetails")
+    @ApiOperation(value = "新增场内计划详情crud")
+    public AjaxResult addOnSiteProgramDetails(@RequestBody OnSiteProgramDetailsVo onSiteProgramDetailsVo)
+    {
+        return toAjax(onSiteProgramDetailsService.insertOnSiteProgramDetailsVo(onSiteProgramDetailsVo));
+    }
+
+    /**
+     * 查询场内计划详情
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:add')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.INSERT)
+    @PostMapping("/getOnSiteProgramDetailsInfoVo")
+    @ApiOperation(value = "新增场内计划详情crud")
+    public TableDataInfo getOnSiteProgramDetailsInfoVo(@RequestBody ProductionPlanningManagementVo productionPlanningManagementVo)
+    {
+        startPage();
+        List<OnSiteProgramDetailsVo> onSiteProgramDetailsInfoVo = onSiteProgramDetailsService.getOnSiteProgramDetailsInfoVo(productionPlanningManagementVo);
+        return getDataTable(onSiteProgramDetailsInfoVo);
+    }
+
+    /**
+     * 修改场内计划详情crud
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:edit')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.UPDATE)
+    @PutMapping("/updateOnSiteProgramDetails")
+    @ApiOperation(value = "修改场内计划详情crud")
+    public AjaxResult editOnSiteProgramDetailsAndProductionPlanning(@RequestBody OnSiteProgramDetailsVo onSiteProgramDetails)
+    {
+        return toAjax(onSiteProgramDetailsService.editOnSiteProgramDetailsAndProductionPlanning(onSiteProgramDetails));
+    }
+
+
+    /**
+     * 修改场内计划详情crud
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:edit')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改场内计划详情crud")
+    public AjaxResult edit(@RequestBody OnSiteProgramDetails onSiteProgramDetails)
+    {
+        return toAjax(onSiteProgramDetailsService.updateOnSiteProgramDetails(onSiteProgramDetails));
+    }
+
+    /**
+     * 删除场内计划详情crud
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:remove')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除场内计划详情crud")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(onSiteProgramDetailsService.deleteOnSiteProgramDetailsByIds(ids));
+    }
+
+    /**
+     * 场内计划自动排产
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:remove')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.DELETE)
+    @PostMapping("/inPlanAutomaticScheduling")
+    @ApiOperation(value = "删除场内计划详情crud")
+    public AjaxResult inPlanAutomaticScheduling(@RequestBody List<String> ids)
+    {
+        return toAjax(onSiteProgramDetailsService.inPlanAutomaticScheduling(ids));
+    }
+
+
+}

+ 9 - 7
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/PlanTaskDetailsController.java

@@ -30,19 +30,19 @@ import com.zkqy.common.core.page.TableDataInfo;
  * @date 2024-07-23
  */
 @RestController
-@RequestMapping("/plan_task_details/计划详细信息表")
+@RequestMapping("/planTaskDetails/Details")
 @Api(value = "/plan_task_details/计划详细信息表", description = "生产任务单明细-接口")
 public class PlanTaskDetailsController extends BaseController
 {
     @Autowired
     private IPlanTaskDetailsService planTaskDetailsService;
 
-/**
- * 查询生产任务单明细列表
- */
-//@PreAuthorize("@ss.hasPermi('plan_task_details:计划详细信息表:list')")
-@GetMapping("/list")
-@ApiOperation(value = "查询生产任务单明细列表")
+    /**
+     * 查询生产任务单明细列表
+     */
+    //@PreAuthorize("@ss.hasPermi('plan_task_details:计划详细信息表:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询生产任务单明细列表")
     public TableDataInfo list(PlanTaskDetails planTaskDetails)
     {
         startPage();
@@ -50,6 +50,8 @@ public class PlanTaskDetailsController extends BaseController
         return getDataTable(list);
     }
 
+
+
     /**
      * 导出生产任务单明细列表
      */

+ 129 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionCardFlowController.java

@@ -0,0 +1,129 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.domain.vo.GenerateProcessFlowCardVo;
+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.ProductionCardFlow;
+import com.zkqy.amichi.service.IProductionCardFlowService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 工序流转卡流水Controller
+ *
+ * @author zkqy
+ * @date 2024-09-19
+ */
+@RestController
+@RequestMapping("/amichi/productionCardFlow")
+@Api(value = "/amichi/productionCardFlow", description = "工序流转卡流水-接口")
+public class ProductionCardFlowController extends BaseController
+{
+    @Autowired
+    private IProductionCardFlowService productionCardFlowService;
+
+/**
+ * 查询工序流转卡流水列表
+ */
+//@PreAuthorize("@ss.hasPermi('amichi:productionCardFlow:list')")
+@GetMapping("/list")
+@ApiOperation(value = "查询工序流转卡流水列表")
+    public TableDataInfo list(ProductionCardFlow productionCardFlow)
+    {
+        startPage();
+        List<ProductionCardFlow> list = productionCardFlowService.selectProductionCardFlowList(productionCardFlow);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 导出工序流转卡流水列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionCardFlow:export')")
+    @Log(title = "工序流转卡流水", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出工序流转卡流水列表")
+    public void export(HttpServletResponse response, ProductionCardFlow productionCardFlow)
+    {
+        List<ProductionCardFlow> list = productionCardFlowService.selectProductionCardFlowList(productionCardFlow);
+        ExcelUtil<ProductionCardFlow> util = new ExcelUtil<ProductionCardFlow>(ProductionCardFlow.class);
+        util.exportExcel(response, list, "工序流转卡流水数据");
+    }
+
+    /**
+     * 获取工序流转卡流水详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionCardFlow:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取工序流转卡流水详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productionCardFlowService.selectProductionCardFlowById(id));
+    }
+
+    /**
+     * 新增工序流转卡流水
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionCardFlow:add')")
+    @Log(title = "工序流转卡流水", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增工序流转卡流水")
+    public AjaxResult add(@RequestBody ProductionCardFlow productionCardFlow)
+    {
+        return toAjax(productionCardFlowService.insertProductionCardFlow(productionCardFlow));
+    }
+
+
+    /**
+     * 生成流转卡信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionCardFlow:add')")
+    @Log(title = "工序流转卡流水", businessType = BusinessType.INSERT)
+    @PostMapping("/generateProcessFlowCard")
+    @ApiOperation(value = "生成流转卡信息")
+    public AjaxResult generateProcessFlowCard(@RequestBody GenerateProcessFlowCardVo  generateProcessFlowCardVo)
+    {
+        return toAjax(productionCardFlowService.generateProcessFlowCard(generateProcessFlowCardVo));
+    }
+    /**
+     * 修改工序流转卡流水
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionCardFlow:edit')")
+    @Log(title = "工序流转卡流水", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改工序流转卡流水")
+    public AjaxResult edit(@RequestBody ProductionCardFlow productionCardFlow)
+    {
+        return toAjax(productionCardFlowService.updateProductionCardFlow(productionCardFlow));
+    }
+
+    /**
+     * 删除工序流转卡流水
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionCardFlow:remove')")
+    @Log(title = "工序流转卡流水", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除工序流转卡流水")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productionCardFlowService.deleteProductionCardFlowByIds(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionOrderListController.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.ProductionOrderList;
+import com.zkqy.amichi.service.IProductionOrderListService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 生产订单列Controller
+ *
+ * @author zkqy
+ * @date 2024-09-19
+ */
+@RestController
+@RequestMapping("/amichi/productionOrderList")
+@Api(value = "/amichi/productionOrderList", description = "生产订单列-接口")
+public class ProductionOrderListController extends BaseController
+{
+    @Autowired
+    private IProductionOrderListService productionOrderListService;
+
+    /**
+     * 查询生产订单列列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:productionOrderList:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询生产订单列列表")
+    public TableDataInfo list(ProductionOrderList productionOrderList)
+    {
+        startPage();
+        List<ProductionOrderList> list = productionOrderListService.selectProductionOrderListList(productionOrderList);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出生产订单列列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionOrderList:export')")
+    @Log(title = "生产订单列", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出生产订单列列表")
+    public void export(HttpServletResponse response, ProductionOrderList productionOrderList)
+    {
+        List<ProductionOrderList> list = productionOrderListService.selectProductionOrderListList(productionOrderList);
+        ExcelUtil<ProductionOrderList> util = new ExcelUtil<ProductionOrderList>(ProductionOrderList.class);
+        util.exportExcel(response, list, "生产订单列数据");
+    }
+
+    /**
+     * 获取生产订单列详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionOrderList:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取生产订单列详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productionOrderListService.selectProductionOrderListById(id));
+    }
+
+    /**
+     * 新增生产订单列
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionOrderList:add')")
+    @Log(title = "生产订单列", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增生产订单列")
+    public AjaxResult add(@RequestBody ProductionOrderList productionOrderList)
+    {
+        return toAjax(productionOrderListService.insertProductionOrderList(productionOrderList));
+    }
+
+    /**
+     * 修改生产订单列
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionOrderList:edit')")
+    @Log(title = "生产订单列", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改生产订单列")
+    public AjaxResult edit(@RequestBody ProductionOrderList productionOrderList)
+    {
+        return toAjax(productionOrderListService.updateProductionOrderList(productionOrderList));
+    }
+
+    /**
+     * 删除生产订单列
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:productionOrderList:remove')")
+    @Log(title = "生产订单列", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除生产订单列")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productionOrderListService.deleteProductionOrderListByIds(ids));
+    }
+}

+ 5 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionPlanningManagementController.java

@@ -126,4 +126,9 @@ public class ProductionPlanningManagementController extends BaseController
         startPage();
         return  getDataTable(productionPlanningManagementService.selectProductionPlanningManagementListVo(productionPlanningManagement));
     }
+
+    /**
+     * 新增厂内生成计划
+     */
+
 }

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ReportInformationSheetController.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.ReportInformationSheet;
+import com.zkqy.amichi.service.IReportInformationSheetService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 报工日志Controller
+ *
+ * @author zkqy
+ * @date 2024-08-19
+ */
+@RestController
+@RequestMapping("/reportInformationsheet/reportInformationsheet")
+@Api(value = "/reportInformationsheet/reportInformationsheet", description = "报工日志-接口")
+public class ReportInformationSheetController extends BaseController
+{
+    @Autowired
+    private IReportInformationSheetService reportInformationSheetService;
+
+    /**
+     * 查询报工日志列表
+     */
+    //@PreAuthorize("@ss.hasPermi('reportInformationsheet:reportInformationsheet:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询报工日志列表")
+    public TableDataInfo list(ReportInformationSheet reportInformationSheet)
+    {
+        startPage();
+        List<ReportInformationSheet> list = reportInformationSheetService.selectReportInformationSheetList(reportInformationSheet);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出报工日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('reportInformationsheet:reportInformationsheet:export')")
+    @Log(title = "报工日志", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出报工日志列表")
+    public void export(HttpServletResponse response, ReportInformationSheet reportInformationSheet)
+    {
+        List<ReportInformationSheet> list = reportInformationSheetService.selectReportInformationSheetList(reportInformationSheet);
+        ExcelUtil<ReportInformationSheet> util = new ExcelUtil<ReportInformationSheet>(ReportInformationSheet.class);
+        util.exportExcel(response, list, "报工日志数据");
+    }
+
+    /**
+     * 获取报工日志详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('reportInformationsheet:reportInformationsheet:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取报工日志详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(reportInformationSheetService.selectReportInformationSheetById(id));
+    }
+
+    /**
+     * 新增报工日志
+     */
+    @PreAuthorize("@ss.hasPermi('reportInformationsheet:reportInformationsheet:add')")
+    @Log(title = "报工日志", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增报工日志")
+    public AjaxResult add(@RequestBody ReportInformationSheet reportInformationSheet)
+    {
+        return reportInformationSheetService.insertReportInformationSheet(reportInformationSheet);
+    }
+
+    /**
+     * 修改报工日志
+     */
+    @PreAuthorize("@ss.hasPermi('reportInformationsheet:reportInformationsheet:edit')")
+    @Log(title = "报工日志", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改报工日志")
+    public AjaxResult edit(@RequestBody ReportInformationSheet reportInformationSheet)
+    {
+        return toAjax(reportInformationSheetService.updateReportInformationSheet(reportInformationSheet));
+    }
+
+    /**
+     * 删除报工日志
+     */
+    @PreAuthorize("@ss.hasPermi('reportInformationsheet:reportInformationsheet:remove')")
+    @Log(title = "报工日志", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除报工日志")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(reportInformationSheetService.deleteReportInformationSheetByIds(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/SchedulingProcessTimeController.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.SchedulingProcessTime;
+import com.zkqy.amichi.service.ISchedulingProcessTimeService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 排产工序工时Controller
+ *
+ * @author zkqy
+ * @date 2024-08-26
+ */
+@RestController
+@RequestMapping("/amichi/schedulingProcessTime")
+@Api(value = "/amichi/schedulingProcessTime", description = "排产工序工时-接口")
+public class SchedulingProcessTimeController extends BaseController
+{
+    @Autowired
+    private ISchedulingProcessTimeService schedulingProcessTimeService;
+
+    /**
+     * 查询排产工序工时列表
+     */
+    //@PreAuthorize("@ss.hasPermi('scheduling_process_time:schedulingProcessTime:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询排产工序工时列表")
+    public TableDataInfo list(SchedulingProcessTime schedulingProcessTime)
+    {
+        startPage();
+        List<SchedulingProcessTime> list = schedulingProcessTimeService.selectSchedulingProcessTimeList(schedulingProcessTime);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出排产工序工时列表
+     */
+    @PreAuthorize("@ss.hasPermi('scheduling_process_time:schedulingProcessTime:export')")
+    @Log(title = "排产工序工时", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出排产工序工时列表")
+    public void export(HttpServletResponse response, SchedulingProcessTime schedulingProcessTime)
+    {
+        List<SchedulingProcessTime> list = schedulingProcessTimeService.selectSchedulingProcessTimeList(schedulingProcessTime);
+        ExcelUtil<SchedulingProcessTime> util = new ExcelUtil<SchedulingProcessTime>(SchedulingProcessTime.class);
+        util.exportExcel(response, list, "排产工序工时数据");
+    }
+
+    /**
+     * 获取排产工序工时详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('scheduling_process_time:schedulingProcessTime:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取排产工序工时详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(schedulingProcessTimeService.selectSchedulingProcessTimeById(id));
+    }
+
+    /**
+     * 新增排产工序工时
+     */
+    @PreAuthorize("@ss.hasPermi('scheduling_process_time:schedulingProcessTime:add')")
+    @Log(title = "排产工序工时", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增排产工序工时")
+    public AjaxResult add(@RequestBody SchedulingProcessTime schedulingProcessTime)
+    {
+        return toAjax(schedulingProcessTimeService.insertSchedulingProcessTime(schedulingProcessTime));
+    }
+
+    /**
+     * 修改排产工序工时
+     */
+    @PreAuthorize("@ss.hasPermi('scheduling_process_time:schedulingProcessTime:edit')")
+    @Log(title = "排产工序工时", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改排产工序工时")
+    public AjaxResult edit(@RequestBody SchedulingProcessTime schedulingProcessTime)
+    {
+        return toAjax(schedulingProcessTimeService.updateSchedulingProcessTime(schedulingProcessTime));
+    }
+
+    /**
+     * 删除排产工序工时
+     */
+    @PreAuthorize("@ss.hasPermi('scheduling_process_time:schedulingProcessTime:remove')")
+    @Log(title = "排产工序工时", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除排产工序工时")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(schedulingProcessTimeService.deleteSchedulingProcessTimeByIds(ids));
+    }
+}

+ 166 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/SemiFinishedMaterialListController.java

@@ -0,0 +1,166 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.domain.vo.SemiFinishedMaterialListVo;
+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.transaction.annotation.Transactional;
+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.SemiFinishedMaterialList;
+import com.zkqy.amichi.service.ISemiFinishedMaterialListService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 半成品物料清单Controller
+ *
+ * @author zkqy
+ * @date 2024-07-29
+ */
+@RestController
+@RequestMapping("/semiFinished/list")
+@Api(value = "/semiFinished/list", description = "半成品物料清单-接口")
+public class SemiFinishedMaterialListController extends BaseController
+{
+
+    @Autowired
+    private ISemiFinishedMaterialListService semiFinishedMaterialListService;
+
+    /**
+     * 查询半成品物料清单列表
+     */
+    //@PreAuthorize("@ss.hasPermi('semiFinished:list:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询半成品物料清单列表")
+    public TableDataInfo list(SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        startPage();
+        List<SemiFinishedMaterialList> list = semiFinishedMaterialListService.selectSemiFinishedMaterialListList(semiFinishedMaterialList);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询半成品物料清单列表
+     *
+     */
+    //@PreAuthorize("@ss.hasPermi('semiFinished:list:list')")
+    @PostMapping("/selectSemiFinishedMaterialListByIdsAndInventory")
+    @ApiOperation(value = "查询半成品物料清单列表")
+    public AjaxResult selectSemiFinishedMaterialListByIdsAndInventory(@RequestBody List<String> ids)
+    {
+        return semiFinishedMaterialListService.selectSemiFinishedMaterialListByIdsAndInventory(ids);
+    }
+
+    /**
+     * 查询数形状数据
+     */
+    @GetMapping("/tree/list")
+    @ApiOperation(value = "查询半成品物料清单列表")
+    public AjaxResult treeList(SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        startPage();
+        List<SemiFinishedMaterialListVo> list = semiFinishedMaterialListService.selectTreeList(semiFinishedMaterialList);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 排除半成品查询数形状数据
+     */
+    @GetMapping("/tree/excludeTreeList")
+    @ApiOperation(value = "查询半成品物料清单列表")
+    public AjaxResult excludeTreeList(SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        startPage();
+        List<SemiFinishedMaterialListVo> list = semiFinishedMaterialListService.excludeTreeList(semiFinishedMaterialList);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 参与树形展示但是,但是不是菜单的数据=产品数据
+     */
+    @GetMapping("/tree/productDataList")
+    @ApiOperation(value = "查询半成品物料清单列表")
+    public AjaxResult productData(SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        startPage();
+        List<SemiFinishedMaterialListVo> list = semiFinishedMaterialListService.productData(semiFinishedMaterialList);
+        return AjaxResult.success(list);
+    }
+
+
+    /**
+     * 导出半成品物料清单列表
+     */
+    @PreAuthorize("@ss.hasPermi('semiFinished:list:export')")
+    @Log(title = "半成品物料清单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出半成品物料清单列表")
+    public void export(HttpServletResponse response, SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        List<SemiFinishedMaterialList> list = semiFinishedMaterialListService.selectSemiFinishedMaterialListList(semiFinishedMaterialList);
+        ExcelUtil<SemiFinishedMaterialList> util = new ExcelUtil<SemiFinishedMaterialList>(SemiFinishedMaterialList.class);
+        util.exportExcel(response, list, "半成品物料清单数据");
+    }
+
+    /**
+     * 获取半成品物料清单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('semiFinished:list:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取半成品物料清单详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(semiFinishedMaterialListService.selectSemiFinishedMaterialListById(id));
+    }
+
+    /**
+     * 新增半成品物料清单
+     */
+    @PreAuthorize("@ss.hasPermi('semiFinished:list:add')")
+    @Log(title = "半成品物料清单", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增半成品物料清单")
+    public AjaxResult add(@RequestBody SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        return toAjax(semiFinishedMaterialListService.insertSemiFinishedMaterialList(semiFinishedMaterialList));
+    }
+
+    /**
+     * 修改半成品物料清单
+     */
+    @PreAuthorize("@ss.hasPermi('semiFinished:list:edit')")
+    @Log(title = "半成品物料清单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改半成品物料清单")
+    public AjaxResult edit(@RequestBody SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        return toAjax(semiFinishedMaterialListService.updateSemiFinishedMaterialList(semiFinishedMaterialList));
+    }
+
+    /**
+     * 删除半成品物料清单
+     */
+    @PreAuthorize("@ss.hasPermi('semiFinished:list:remove')")
+    @Log(title = "半成品物料清单", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除半成品物料清单")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(semiFinishedMaterialListService.deleteSemiFinishedMaterialListByIds(ids));
+    }
+}

+ 119 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/StationInformationController.java

@@ -0,0 +1,119 @@
+package com.zkqy.amichi.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.*;
+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.StationInformation;
+import com.zkqy.amichi.service.IStationInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 工位信息Controller
+ *
+ * @author zkqy
+ * @date 2024-08-20
+ */
+@RestController
+@RequestMapping("/amichi/stationInformation")
+@Api(value = "/amichi/stationInformation", description = "工位信息-接口")
+public class StationInformationController extends BaseController
+{
+    @Autowired
+    private IStationInformationService stationInformationService;
+
+    /**
+     * 查询工位信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:stationInformation:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询工位信息列表")
+    public TableDataInfo list(StationInformation stationInformation)
+    {
+        startPage();
+        List<StationInformation> list = stationInformationService.selectStationInformationList(stationInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出工位信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:stationInformation:export')")
+    @Log(title = "工位信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出工位信息列表")
+    public void export(HttpServletResponse response, StationInformation stationInformation)
+    {
+        List<StationInformation> list = stationInformationService.selectStationInformationList(stationInformation);
+        ExcelUtil<StationInformation> util = new ExcelUtil<StationInformation>(StationInformation.class);
+        util.exportExcel(response, list, "工位信息数据");
+    }
+
+    /**
+     * 导出工位信息列表
+     */
+    @Anonymous
+    @PostMapping("/stationProductScanning")
+    @ApiOperation(value = "导出工位信息列表")
+    public String stationProductScanning(@RequestParam("contentString") String contentString)
+    {
+      return stationInformationService.stationProductScanning(contentString);
+    }
+
+    /**
+     * 获取工位信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:stationInformation:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取工位信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(stationInformationService.selectStationInformationById(id));
+    }
+
+    /**
+     * 新增工位信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:stationInformation:add')")
+    @Log(title = "工位信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增工位信息")
+    public AjaxResult add(@RequestBody StationInformation stationInformation)
+    {
+        return toAjax(stationInformationService.insertStationInformation(stationInformation));
+    }
+
+    /**
+     * 修改工位信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:stationInformation:edit')")
+    @Log(title = "工位信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改工位信息")
+    public AjaxResult edit(@RequestBody StationInformation stationInformation)
+    {
+        return toAjax(stationInformationService.updateStationInformation(stationInformation));
+    }
+
+    /**
+     * 删除工位信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:stationInformation:remove')")
+    @Log(title = "工位信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除工位信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(stationInformationService.deleteStationInformationByIds(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TeamInformationController.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.TeamInformation;
+import com.zkqy.amichi.service.ITeamInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 班组信息Controller
+ *
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@RestController
+@RequestMapping("/amichi/teaminformation")
+@Api(value = "/amichi/teaminformation", description = "班组信息-接口")
+public class TeamInformationController extends BaseController
+{
+    @Autowired
+    private ITeamInformationService teamInformationService;
+
+/**
+ * 查询班组信息列表
+ */
+//@PreAuthorize("@ss.hasPermi('amichi:teaminformation:list')")
+@GetMapping("/list")
+@ApiOperation(value = "查询班组信息列表")
+    public TableDataInfo list(TeamInformation teamInformation)
+    {
+        startPage();
+        List<TeamInformation> list = teamInformationService.selectTeamInformationList(teamInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出班组信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teaminformation:export')")
+    @Log(title = "班组信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出班组信息列表")
+    public void export(HttpServletResponse response, TeamInformation teamInformation)
+    {
+        List<TeamInformation> list = teamInformationService.selectTeamInformationList(teamInformation);
+        ExcelUtil<TeamInformation> util = new ExcelUtil<TeamInformation>(TeamInformation.class);
+        util.exportExcel(response, list, "班组信息数据");
+    }
+
+    /**
+     * 获取班组信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teaminformation:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取班组信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(teamInformationService.selectTeamInformationById(id));
+    }
+
+    /**
+     * 新增班组信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teaminformation:add')")
+    @Log(title = "班组信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增班组信息")
+    public AjaxResult add(@RequestBody TeamInformation teamInformation)
+    {
+        return toAjax(teamInformationService.insertTeamInformation(teamInformation));
+    }
+
+    /**
+     * 修改班组信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teaminformation:edit')")
+    @Log(title = "班组信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改班组信息")
+    public AjaxResult edit(@RequestBody TeamInformation teamInformation)
+    {
+        return toAjax(teamInformationService.updateTeamInformation(teamInformation));
+    }
+
+    /**
+     * 删除班组信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teaminformation:remove')")
+    @Log(title = "班组信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除班组信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(teamInformationService.deleteTeamInformationByIds(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TeamPersonnelChangeInformationController.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.TeamPersonnelChangeInformation;
+import com.zkqy.amichi.service.ITeamPersonnelChangeInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 班组人员变动信息Controller
+ *
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@RestController
+@RequestMapping("/amichi/teamPersonnelChangeInformation")
+@Api(value = "/amichi/teamPersonnelChangeInformation", description = "班组人员变动信息-接口")
+public class TeamPersonnelChangeInformationController extends BaseController
+{
+    @Autowired
+    private ITeamPersonnelChangeInformationService teamPersonnelChangeInformationService;
+
+    /**
+     * 查询班组人员变动信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:teamPersonnelChangeInformation:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询班组人员变动信息列表")
+    public TableDataInfo list(TeamPersonnelChangeInformation teamPersonnelChangeInformation)
+    {
+        startPage();
+        List<TeamPersonnelChangeInformation> list = teamPersonnelChangeInformationService.selectTeamPersonnelChangeInformationList(teamPersonnelChangeInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出班组人员变动信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelChangeInformation:export')")
+    @Log(title = "班组人员变动信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出班组人员变动信息列表")
+    public void export(HttpServletResponse response, TeamPersonnelChangeInformation teamPersonnelChangeInformation)
+    {
+        List<TeamPersonnelChangeInformation> list = teamPersonnelChangeInformationService.selectTeamPersonnelChangeInformationList(teamPersonnelChangeInformation);
+        ExcelUtil<TeamPersonnelChangeInformation> util = new ExcelUtil<TeamPersonnelChangeInformation>(TeamPersonnelChangeInformation.class);
+        util.exportExcel(response, list, "班组人员变动信息数据");
+    }
+
+    /**
+     * 获取班组人员变动信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelChangeInformation:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取班组人员变动信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(teamPersonnelChangeInformationService.selectTeamPersonnelChangeInformationById(id));
+    }
+
+    /**
+     * 新增班组人员变动信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelChangeInformation:add')")
+    @Log(title = "班组人员变动信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增班组人员变动信息")
+    public AjaxResult add(@RequestBody TeamPersonnelChangeInformation teamPersonnelChangeInformation)
+    {
+        return toAjax(teamPersonnelChangeInformationService.insertTeamPersonnelChangeInformation(teamPersonnelChangeInformation));
+    }
+
+    /**
+     * 修改班组人员变动信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelChangeInformation:edit')")
+    @Log(title = "班组人员变动信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改班组人员变动信息")
+    public AjaxResult edit(@RequestBody TeamPersonnelChangeInformation teamPersonnelChangeInformation)
+    {
+        return toAjax(teamPersonnelChangeInformationService.updateTeamPersonnelChangeInformation(teamPersonnelChangeInformation));
+    }
+
+    /**
+     * 删除班组人员变动信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelChangeInformation:remove')")
+    @Log(title = "班组人员变动信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除班组人员变动信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(teamPersonnelChangeInformationService.deleteTeamPersonnelChangeInformationByIds(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TeamPersonnelInformationController.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.TeamPersonnelInformation;
+import com.zkqy.amichi.service.ITeamPersonnelInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 班组人员信息Controller
+ *
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@RestController
+@RequestMapping("/amichi/teamPersonnelInformation")
+@Api(value = "/amichi/teamPersonnelInformation", description = "班组人员信息-接口")
+public class TeamPersonnelInformationController extends BaseController
+{
+    @Autowired
+    private ITeamPersonnelInformationService teamPersonnelInformationService;
+
+    /**
+     * 查询班组人员信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:teamPersonnelInformation:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询班组人员信息列表")
+    public TableDataInfo list(TeamPersonnelInformation teamPersonnelInformation)
+    {
+        startPage();
+        List<TeamPersonnelInformation> list = teamPersonnelInformationService.selectTeamPersonnelInformationList(teamPersonnelInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出班组人员信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelInformation:export')")
+    @Log(title = "班组人员信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出班组人员信息列表")
+    public void export(HttpServletResponse response, TeamPersonnelInformation teamPersonnelInformation)
+    {
+        List<TeamPersonnelInformation> list = teamPersonnelInformationService.selectTeamPersonnelInformationList(teamPersonnelInformation);
+        ExcelUtil<TeamPersonnelInformation> util = new ExcelUtil<TeamPersonnelInformation>(TeamPersonnelInformation.class);
+        util.exportExcel(response, list, "班组人员信息数据");
+    }
+
+    /**
+     * 获取班组人员信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelInformation:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取班组人员信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(teamPersonnelInformationService.selectTeamPersonnelInformationById(id));
+    }
+
+    /**
+     * 新增班组人员信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelInformation:add')")
+    @Log(title = "班组人员信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增班组人员信息")
+    public AjaxResult add(@RequestBody TeamPersonnelInformation teamPersonnelInformation)
+    {
+        return toAjax(teamPersonnelInformationService.insertTeamPersonnelInformation(teamPersonnelInformation));
+    }
+
+    /**
+     * 修改班组人员信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelInformation:edit')")
+    @Log(title = "班组人员信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改班组人员信息")
+    public AjaxResult edit(@RequestBody TeamPersonnelInformation teamPersonnelInformation)
+    {
+        return toAjax(teamPersonnelInformationService.updateTeamPersonnelInformation(teamPersonnelInformation));
+    }
+
+    /**
+     * 删除班组人员信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:teamPersonnelInformation:remove')")
+    @Log(title = "班组人员信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除班组人员信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(teamPersonnelInformationService.deleteTeamPersonnelInformationByIds(ids));
+    }
+}

+ 14 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/WarehouseEntryInformationController.java

@@ -3,6 +3,7 @@ package com.zkqy.amichi.controller;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import com.zkqy.amichi.domain.vo.ProcessWarehousingVo;
 import com.zkqy.amichi.domain.vo.WarehouseEntryInformationVo;
 import com.zkqy.common.utils.SecurityUtils;
 import io.swagger.annotations.Api;
@@ -53,6 +54,19 @@ public class WarehouseEntryInformationController extends BaseController
         return getDataTable(list);
     }
 
+
+    /**
+     * 工序节点入库
+     * @param processWarehousingVos
+     * @return
+     */
+    @PostMapping("/processWarehousing")
+    @ApiOperation(value = "工序节点入库")
+    public AjaxResult processWarehousing(@RequestBody List<ProcessWarehousingVo> processWarehousingVos)
+    {
+         return toAjax(warehouseEntryInformationService.processWarehousing(processWarehousingVos));
+    }
+
     /**
      * 导出入库单信息列表
      */

+ 345 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/AutomaticSchedulingOnSite.java

@@ -0,0 +1,345 @@
+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;
+
+/**
+ * 场内计划排产信息对象 automatic_scheduling_on_site
+ *
+ * @author zkqy
+ * @date 2024-08-29
+ */
+public class AutomaticSchedulingOnSite extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+    /** 主键 */
+    private Long id;
+
+    /** 计划编号 */
+    @Excel(name = "计划编号")
+    private String workmanship;
+
+    /** 计划完成时间 */
+    @Excel(name = "计划完成时间")
+    private String completiontime;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    public String getReminder() {
+        return reminder;
+    }
+
+    public void setReminder(String reminder) {
+        this.reminder = reminder;
+    }
+
+    /** 更新者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;
+
+    /** 物料是否齐全 0全 1不全 */
+    @Excel(name = "物料是否齐全 0全 1不全")
+    private String materialNo;
+
+    /** 工时信息 */
+    @Excel(name = "工时信息")
+    private String manHour;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private String quantity;
+
+    /** 计划开始时间 */
+    @Excel(name = "计划开始时间")
+    private String planstarttime;
+
+    /** 焊接 */
+    @Excel(name = "焊接")
+    private String weld;
+
+    /** 线嵌 */
+    @Excel(name = "线嵌")
+    private String lineEmbedding;
+
+    /** 线头绑扎 */
+    @Excel(name = "线头绑扎")
+    private String wireBinding;
+
+    /** 浸漆 */
+    @Excel(name = "浸漆")
+    private String varnish;
+
+    /** 压装平衡 */
+    @Excel(name = "压装平衡")
+    private String pressFitBalance;
+
+    /** 总装 */
+    @Excel(name = "总装")
+    private String finalAssembly;
+
+    /** 试机开关箱 */
+    @Excel(name = "试机开关箱")
+    private String switching;
+
+    /** 包装 */
+    @Excel(name = "包装")
+    private String packageIng;
+
+
+    @Excel(name="到期提醒")
+    private String reminder;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setWorkmanship(String workmanship)
+    {
+        this.workmanship = workmanship;
+    }
+
+    public String getWorkmanship()
+    {
+        return workmanship;
+    }
+    public void setCompletiontime(String completiontime)
+    {
+        this.completiontime = completiontime;
+    }
+
+    public String getCompletiontime()
+    {
+        return completiontime;
+    }
+    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 setMaterialNo(String materialNo)
+    {
+        this.materialNo = materialNo;
+    }
+
+    public String getMaterialNo()
+    {
+        return materialNo;
+    }
+    public void setManHour(String manHour)
+    {
+        this.manHour = manHour;
+    }
+
+    public String getManHour()
+    {
+        return manHour;
+    }
+    public void setQuantity(String quantity)
+    {
+        this.quantity = quantity;
+    }
+
+    public String getQuantity()
+    {
+        return quantity;
+    }
+    public void setPlanstarttime(String planstarttime)
+    {
+        this.planstarttime = planstarttime;
+    }
+
+    public String getPlanstarttime()
+    {
+        return planstarttime;
+    }
+    public void setWeld(String weld)
+    {
+        this.weld = weld;
+    }
+
+    public String getWeld()
+    {
+        return weld;
+    }
+    public void setLineEmbedding(String lineEmbedding)
+    {
+        this.lineEmbedding = lineEmbedding;
+    }
+
+    public String getLineEmbedding()
+    {
+        return lineEmbedding;
+    }
+    public void setWireBinding(String wireBinding)
+    {
+        this.wireBinding = wireBinding;
+    }
+
+    public String getWireBinding()
+    {
+        return wireBinding;
+    }
+    public void setVarnish(String varnish)
+    {
+        this.varnish = varnish;
+    }
+
+    public String getVarnish()
+    {
+        return varnish;
+    }
+    public void setPressFitBalance(String pressFitBalance)
+    {
+        this.pressFitBalance = pressFitBalance;
+    }
+
+    public String getPressFitBalance()
+    {
+        return pressFitBalance;
+    }
+    public void setFinalAssembly(String finalAssembly)
+    {
+        this.finalAssembly = finalAssembly;
+    }
+
+    public String getFinalAssembly()
+    {
+        return finalAssembly;
+    }
+    public void setSwitching(String switching)
+    {
+        this.switching = switching;
+    }
+
+    public String getSwitching()
+    {
+        return switching;
+    }
+
+    public String getPackageIng() {
+        return packageIng;
+    }
+
+    public void setPackageIng(String packageIng) {
+        this.packageIng = packageIng;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("workmanship", getWorkmanship())
+                .append("completiontime", getCompletiontime())
+                .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("materialNo", getMaterialNo())
+                .append("manHour", getManHour())
+                .append("quantity", getQuantity())
+                .append("planstarttime", getPlanstarttime())
+                .append("weld", getWeld())
+                .append("lineEmbedding", getLineEmbedding())
+                .append("wireBinding", getWireBinding())
+                .append("varnish", getVarnish())
+                .append("pressFitBalance", getPressFitBalance())
+                .append("finalAssembly", getFinalAssembly())
+                .append("switching", getSwitching())
+                .append("package", getPackageIng())
+                .toString();
+    }
+}

+ 266 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ExceptionReportInformationSheet.java

@@ -0,0 +1,266 @@
+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;
+
+/**
+ * 异常报工日志对象 exception_report_information_sheet
+ * 
+ * @author zkqy
+ * @date 2024-09-11
+ */
+public class ExceptionReportInformationSheet extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 产品id */
+    @Excel(name = "产品id")
+    private String productId;
+
+    /** 产品code */
+    @Excel(name = "产品code")
+    private String productCode;
+
+    /** 工位码 */
+    @Excel(name = "工位码")
+    private String stationCode;
+
+    /** 当前工位人 */
+    @Excel(name = "当前工位人")
+    private String currentStationStationPeople;
+
+    /** 创建者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 orderNumber;
+
+    /** 工序名称 */
+    @Excel(name = "工序名称")
+    private String process;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private String quantityInstorage;
+
+    /** 异常信息 */
+    @Excel(name = "异常信息")
+    private String exceptionMessage;
+
+    /**
+     *  手持机
+     * @return
+     */
+    @Excel(name = "手持机")
+    private String handheldDevice;
+
+    public String getHandheldDevice() {
+        return handheldDevice;
+    }
+
+    public void setHandheldDevice(String handheldDevice) {
+        this.handheldDevice = handheldDevice;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setProductId(String productId) 
+    {
+        this.productId = productId;
+    }
+
+    public String getProductId() 
+    {
+        return productId;
+    }
+    public void setProductCode(String productCode) 
+    {
+        this.productCode = productCode;
+    }
+
+    public String getProductCode() 
+    {
+        return productCode;
+    }
+    public void setStationCode(String stationCode) 
+    {
+        this.stationCode = stationCode;
+    }
+
+    public String getStationCode() 
+    {
+        return stationCode;
+    }
+    public void setCurrentStationStationPeople(String currentStationStationPeople) 
+    {
+        this.currentStationStationPeople = currentStationStationPeople;
+    }
+
+    public String getCurrentStationStationPeople() 
+    {
+        return currentStationStationPeople;
+    }
+    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 setOrderNumber(String orderNumber) 
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getOrderNumber() 
+    {
+        return orderNumber;
+    }
+    public void setProcess(String process) 
+    {
+        this.process = process;
+    }
+
+    public String getProcess() 
+    {
+        return process;
+    }
+    public void setQuantityInstorage(String quantityInstorage) 
+    {
+        this.quantityInstorage = quantityInstorage;
+    }
+
+    public String getQuantityInstorage() 
+    {
+        return quantityInstorage;
+    }
+    public void setExceptionMessage(String exceptionMessage) 
+    {
+        this.exceptionMessage = exceptionMessage;
+    }
+
+    public String getExceptionMessage() 
+    {
+        return exceptionMessage;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("productId", getProductId())
+            .append("productCode", getProductCode())
+            .append("stationCode", getStationCode())
+            .append("currentStationStationPeople", getCurrentStationStationPeople())
+            .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("orderNumber", getOrderNumber())
+            .append("process", getProcess())
+            .append("quantityInstorage", getQuantityInstorage())
+            .append("exceptionMessage", getExceptionMessage())
+            .toString();
+    }
+}

+ 197 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/OnSiteProgramDetails.java

@@ -0,0 +1,197 @@
+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;
+
+/**
+ * 场内计划详情crud对象 on_site_program_details
+ * 
+ * @author zkqy
+ * @date 2024-08-06
+ */
+public class OnSiteProgramDetails extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+    private String itemCode;
+
+    public String getItemCode() {
+        return itemCode;
+    }
+
+    public void setItemCode(String itemCode) {
+        this.itemCode = itemCode;
+    }
+
+    /** 主键 */
+    private Integer itemId;
+
+    private String planId;
+
+    public String getPlanId() {
+        return planId;
+    }
+
+    public void setPlanId(String planId) {
+        this.planId = planId;
+    }
+
+    public Integer getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(Integer itemId) {
+        this.itemId = itemId;
+    }
+
+    /** 物品名称 */
+    @Excel(name = "物品名称")
+    private String itemName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String modelMumber;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    private String specification;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private Integer quantity;
+
+    /** 工时 */
+    @Excel(name = "工时")
+    private String manHour;
+
+    /** 物料是否齐全 */
+    @Excel(name = "物料是否齐全")
+    private String isCompleteMaterials;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 逻辑删除字段(0:正产 1删除) */
+    private String delFlag;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setItemName(String itemName) 
+    {
+        this.itemName = itemName;
+    }
+
+    public String getItemName() 
+    {
+        return itemName;
+    }
+    public void setModelMumber(String modelMumber) 
+    {
+        this.modelMumber = modelMumber;
+    }
+
+    public String getModelMumber() 
+    {
+        return modelMumber;
+    }
+    public void setSpecification(String specification) 
+    {
+        this.specification = specification;
+    }
+
+    public String getSpecification() 
+    {
+        return specification;
+    }
+    public void setQuantity(Integer quantity)
+    {
+        this.quantity = quantity;
+    }
+
+    public Integer getQuantity()
+    {
+        return quantity;
+    }
+    public void setManHour(String manHour) 
+    {
+        this.manHour = manHour;
+    }
+
+    public String getManHour() 
+    {
+        return manHour;
+    }
+    public void setIsCompleteMaterials(String isCompleteMaterials) 
+    {
+        this.isCompleteMaterials = isCompleteMaterials;
+    }
+
+    public String getIsCompleteMaterials() 
+    {
+        return isCompleteMaterials;
+    }
+    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;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("itemName", getItemName())
+            .append("modelMumber", getModelMumber())
+            .append("specification", getSpecification())
+            .append("quantity", getQuantity())
+            .append("manHour", getManHour())
+            .append("isCompleteMaterials", getIsCompleteMaterials())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .toString();
+    }
+}

+ 195 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionCardFlow.java

@@ -0,0 +1,195 @@
+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_card_flow
+ * 
+ * @author zkqy
+ * @date 2024-09-19
+ */
+public class ProductionCardFlow extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 产品订单id */
+    @Excel(name = "产品订单id")
+    private String productionOrderListId;
+
+    /** 序列号 */
+    @Excel(name = "序列号")
+    private String serialNumber;
+
+    /** 需求单据 */
+    @Excel(name = "需求单据")
+    private String demandDocumentNumber;
+
+    /** 打印数量 */
+    @Excel(name = "打印数量")
+    private String printQuantity;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 1代表删除) */
+    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 setProductionOrderListId(String productionOrderListId) 
+    {
+        this.productionOrderListId = productionOrderListId;
+    }
+
+    public String getProductionOrderListId() 
+    {
+        return productionOrderListId;
+    }
+    public void setSerialNumber(String serialNumber) 
+    {
+        this.serialNumber = serialNumber;
+    }
+
+    public String getSerialNumber() 
+    {
+        return serialNumber;
+    }
+    public void setDemandDocumentNumber(String demandDocumentNumber) 
+    {
+        this.demandDocumentNumber = demandDocumentNumber;
+    }
+
+    public String getDemandDocumentNumber() 
+    {
+        return demandDocumentNumber;
+    }
+    public void setPrintQuantity(String printQuantity) 
+    {
+        this.printQuantity = printQuantity;
+    }
+
+    public String getPrintQuantity() 
+    {
+        return printQuantity;
+    }
+    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("productionOrderListId", getProductionOrderListId())
+            .append("serialNumber", getSerialNumber())
+            .append("demandDocumentNumber", getDemandDocumentNumber())
+            .append("printQuantity", getPrintQuantity())
+            .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();
+    }
+}

+ 293 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionOrderList.java

@@ -0,0 +1,293 @@
+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_order_list
+ * 
+ * @author zkqy
+ * @date 2024-09-19
+ */
+public class ProductionOrderList extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 单据编号 */
+    @Excel(name = "单据编号")
+    private String documentNumber;
+
+    /** 单据类型 */
+    @Excel(name = "单据类型")
+    private String documentType;
+
+    /** 单据日期 */
+    @Excel(name = "单据日期")
+    private String documentDate;
+
+    /** 单据状态 */
+    @Excel(name = "单据状态")
+    private String documentStatus;
+
+    /** 需求单据 */
+    @Excel(name = "需求单据")
+    private String demandDocument;
+
+    /** 需求单据行号 */
+    @Excel(name = "需求单据行号")
+    private String demandDocumentLineNumber;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    private String materialCode;
+
+    /** 物料名称 */
+    @Excel(name = "物料名称")
+    private String materialName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String modelNumber;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    private String specification;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private String quantity;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 1代表删除) */
+    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 setDocumentNumber(String documentNumber) 
+    {
+        this.documentNumber = documentNumber;
+    }
+
+    public String getDocumentNumber() 
+    {
+        return documentNumber;
+    }
+    public void setDocumentType(String documentType) 
+    {
+        this.documentType = documentType;
+    }
+
+    public String getDocumentType() 
+    {
+        return documentType;
+    }
+    public void setDocumentDate(String documentDate) 
+    {
+        this.documentDate = documentDate;
+    }
+
+    public String getDocumentDate() 
+    {
+        return documentDate;
+    }
+    public void setDocumentStatus(String documentStatus) 
+    {
+        this.documentStatus = documentStatus;
+    }
+
+    public String getDocumentStatus() 
+    {
+        return documentStatus;
+    }
+    public void setDemandDocument(String demandDocument) 
+    {
+        this.demandDocument = demandDocument;
+    }
+
+    public String getDemandDocument() 
+    {
+        return demandDocument;
+    }
+    public void setDemandDocumentLineNumber(String demandDocumentLineNumber) 
+    {
+        this.demandDocumentLineNumber = demandDocumentLineNumber;
+    }
+
+    public String getDemandDocumentLineNumber() 
+    {
+        return demandDocumentLineNumber;
+    }
+    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 setQuantity(String quantity) 
+    {
+        this.quantity = quantity;
+    }
+
+    public String getQuantity() 
+    {
+        return quantity;
+    }
+    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("documentNumber", getDocumentNumber())
+            .append("documentType", getDocumentType())
+            .append("documentDate", getDocumentDate())
+            .append("documentStatus", getDocumentStatus())
+            .append("demandDocument", getDemandDocument())
+            .append("demandDocumentLineNumber", getDemandDocumentLineNumber())
+            .append("materialCode", getMaterialCode())
+            .append("materialName", getMaterialName())
+            .append("modelNumber", getModelNumber())
+            .append("specification", getSpecification())
+            .append("quantity", getQuantity())
+            .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();
+    }
+}

+ 4 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionPlanningManagement.java

@@ -1,9 +1,13 @@
 package com.zkqy.amichi.domain;
 
+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;
+
+import java.util.Date;
 
 /**
  * 生产计划对象 production_planning_management

+ 3 - 3
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/PurchaseOrder.java

@@ -55,7 +55,7 @@ public class PurchaseOrder extends BaseEntity
 
     /** 合计金额 */
     @Excel(name = "合计金额")
-    private Long total;
+    private Double total;
 
     /** 申请人 */
     @Excel(name = "申请人")
@@ -159,12 +159,12 @@ public class PurchaseOrder extends BaseEntity
     {
         return department;
     }
-    public void setTotal(Long total) 
+    public void setTotal(Double total)
     {
         this.total = total;
     }
 
-    public Long getTotal() 
+    public Double getTotal()
     {
         return total;
     }

+ 263 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ReportInformationSheet.java

@@ -0,0 +1,263 @@
+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;
+
+import java.time.LocalDateTime;
+
+/**
+ * 报工日志对象 report_information_sheet
+ * 
+ * @author zkqy
+ * @date 2024-08-19
+ */
+public class ReportInformationSheet extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 产品id */
+    @Excel(name = "产品id")
+    private String productId;
+
+    /** 产品code */
+    @Excel(name = "产品code")
+    private String productCode;
+
+    /** 工位码 */
+    @Excel(name = "工位码")
+    private String stationCode;
+
+    /** 当前工位人 */
+    @Excel(name = "当前工位人")
+    private String currentStationStationPeople;
+
+    /** 创建者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 orderNumber;
+
+    /** 工序名称*/
+    @Excel(name = "工序名称")
+    private String process;
+
+    public String getQuantityInstorage() {
+        return quantityInstorage;
+    }
+
+    public void setQuantityInstorage(String quantityInstorage) {
+        this.quantityInstorage = quantityInstorage;
+    }
+
+    /** 处理数量*/
+    @Excel(name = "数量")
+    private String quantityInstorage;
+
+    /**
+     *  手持机
+     * @return
+     */
+    @Excel(name = "手持机")
+    private String handheldDevice;
+
+    /**
+     *  上次扫码时间
+     * @return
+     */
+    @Excel(name = "上次扫码时间")
+    private LocalDateTime lastScanTime;
+
+    public LocalDateTime getLastScanTime() {
+        return lastScanTime;
+    }
+
+    public void setLastScanTime(LocalDateTime lastScanTime) {
+        this.lastScanTime = lastScanTime;
+    }
+
+    public String getHandheldDevice() {
+        return handheldDevice;
+    }
+
+    public void setHandheldDevice(String handheldDevice) {
+        this.handheldDevice = handheldDevice;
+    }
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getProcess() {
+        return process;
+    }
+
+    public void setProcess(String process) {
+        this.process = process;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setProductId(String productId) 
+    {
+        this.productId = productId;
+    }
+
+    public String getProductId() 
+    {
+        return productId;
+    }
+    public void setProductCode(String productCode) 
+    {
+        this.productCode = productCode;
+    }
+
+    public String getProductCode() 
+    {
+        return productCode;
+    }
+    public void setStationCode(String stationCode) 
+    {
+        this.stationCode = stationCode;
+    }
+
+    public String getStationCode() 
+    {
+        return stationCode;
+    }
+    public void setCurrentStationStationPeople(String currentStationStationPeople) 
+    {
+        this.currentStationStationPeople = currentStationStationPeople;
+    }
+
+    public String getCurrentStationStationPeople() 
+    {
+        return currentStationStationPeople;
+    }
+    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("productId", getProductId())
+            .append("productCode", getProductCode())
+            .append("stationCode", getStationCode())
+            .append("currentStationStationPeople", getCurrentStationStationPeople())
+            .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();
+    }
+}

+ 195 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/SchedulingProcessTime.java

@@ -0,0 +1,195 @@
+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;
+
+/**
+ * 排产工序工时对象 scheduling_process_time
+ *
+ * @author zkqy
+ * @date 2024-08-26
+ */
+public class SchedulingProcessTime extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 排产工序编号 */
+    @Excel(name = "排产工序编号")
+    private String processNumber;
+
+    /** 排产工序名称 */
+    @Excel(name = "排产工序名称")
+    private String schedulingProcessName;
+
+    /** 排产工序工时 */
+    @Excel(name = "排产工序工时")
+    private String schedulingProcessTime;
+
+    /** 排产类型 0.内销排产 1.外销排产 2.高压机排产 3.场内计划排产 */
+    @Excel(name = "排产类型 0.内销排产 1.外销排产 2.高压机排产 3.场内计划排产")
+    private String schedulingType;
+
+    /** 创建者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 setProcessNumber(String processNumber)
+    {
+        this.processNumber = processNumber;
+    }
+
+    public String getProcessNumber()
+    {
+        return processNumber;
+    }
+    public void setSchedulingProcessName(String schedulingProcessName)
+    {
+        this.schedulingProcessName = schedulingProcessName;
+    }
+
+    public String getSchedulingProcessName()
+    {
+        return schedulingProcessName;
+    }
+    public void setSchedulingProcessTime(String schedulingProcessTime)
+    {
+        this.schedulingProcessTime = schedulingProcessTime;
+    }
+
+    public String getSchedulingProcessTime()
+    {
+        return schedulingProcessTime;
+    }
+    public void setSchedulingType(String schedulingType)
+    {
+        this.schedulingType = schedulingType;
+    }
+
+    public String getSchedulingType()
+    {
+        return schedulingType;
+    }
+    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("processNumber", getProcessNumber())
+                .append("schedulingProcessName", getSchedulingProcessName())
+                .append("schedulingProcessTime", getSchedulingProcessTime())
+                .append("schedulingType", getSchedulingType())
+                .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();
+    }
+}

+ 599 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/SemiFinishedMaterialList.java

@@ -0,0 +1,599 @@
+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;
+
+/**
+ * 半成品物料清单对象 semi_finished_material_list
+ * 
+ * @author zkqy
+ * @date 2024-07-29
+ */
+public class SemiFinishedMaterialList extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 父级别id */
+    @Excel(name = "父级别id")
+    private String fid;
+
+    @Excel(name = "是否参数树形菜单展示")
+    private String isTreeShow;
+
+    public String getIsTreeShow() {
+        return isTreeShow;
+    }
+
+    public void setIsTreeShow(String isTreeShow) {
+        this.isTreeShow = isTreeShow;
+    }
+
+    /** 是否是点击行 */
+    @Excel(name = "是否是点击行")
+    private String isClickLine;
+
+    /** 是否是纯菜单 */
+    @Excel(name = "是否是纯菜单")
+    private String isOnlyMenu;
+
+    /** 物料编码 */
+    @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;
+
+    /** 创建者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 unit;
+
+    @Excel(name="用料数量")
+    private  String amountOfMateria;
+
+    public String getAmountOfMateria() {
+        return amountOfMateria;
+    }
+
+    public void setAmountOfMateria(String amountOfMateria) {
+        this.amountOfMateria = amountOfMateria;
+    }
+
+    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 setIsClickLine(String isClickLine) 
+    {
+        this.isClickLine = isClickLine;
+    }
+
+    public String getIsClickLine() 
+    {
+        return isClickLine;
+    }
+    public void setIsOnlyMenu(String isOnlyMenu) 
+    {
+        this.isOnlyMenu = isOnlyMenu;
+    }
+
+    public String getIsOnlyMenu() 
+    {
+        return isOnlyMenu;
+    }
+    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 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 setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("fid", getFid())
+            .append("isClickLine", getIsClickLine())
+            .append("isOnlyMenu", getIsOnlyMenu())
+            .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("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("unit", getUnit())
+            .toString();
+    }
+}

+ 248 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/StationInformation.java

@@ -0,0 +1,248 @@
+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;
+
+/**
+ * 工位信息对象 station_information
+ * 
+ * @author zkqy
+ * @date 2024-08-20
+ */
+public class StationInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 工位码信息 */
+    @Excel(name = "工位码信息")
+    private String stationCode;
+
+    /** 工位名称 */
+    @Excel(name = "工位名称")
+    private String stationName;
+
+    /** 人员id */
+    @Excel(name = "人员id")
+    private String personnelId;
+
+    /** 人员姓名 */
+    @Excel(name = "人员姓名")
+    private String personnelName;
+
+    /** 设备id */
+    @Excel(name = "设备id")
+    private String deviceId;
+
+    /** 设备名称 */
+    @Excel(name = "设备名称")
+    private String deviceName;
+
+    /** 创建者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 teamName;
+
+
+    /** 班组编码 */
+    @Excel(name = "班组编码")
+    private String teamCode;
+
+    public String getTeamCode() {
+        return teamCode;
+    }
+
+    public void setTeamCode(String teamCode) {
+        this.teamCode = teamCode;
+    }
+
+    public String getTeamName() {
+        return teamName;
+    }
+
+    public void setTeamName(String teamName) {
+        this.teamName = teamName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setStationCode(String stationCode) 
+    {
+        this.stationCode = stationCode;
+    }
+
+    public String getStationCode() 
+    {
+        return stationCode;
+    }
+    public void setStationName(String stationName) 
+    {
+        this.stationName = stationName;
+    }
+
+    public String getStationName() 
+    {
+        return stationName;
+    }
+    public void setPersonnelId(String personnelId) 
+    {
+        this.personnelId = personnelId;
+    }
+
+    public String getPersonnelId() 
+    {
+        return personnelId;
+    }
+    public void setPersonnelName(String personnelName) 
+    {
+        this.personnelName = personnelName;
+    }
+
+    public String getPersonnelName() 
+    {
+        return personnelName;
+    }
+    public void setDeviceId(String deviceId) 
+    {
+        this.deviceId = deviceId;
+    }
+
+    public String getDeviceId() 
+    {
+        return deviceId;
+    }
+    public void setDeviceName(String deviceName) 
+    {
+        this.deviceName = deviceName;
+    }
+
+    public String getDeviceName() 
+    {
+        return deviceName;
+    }
+    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("stationCode", getStationCode())
+            .append("stationName", getStationName())
+            .append("personnelId", getPersonnelId())
+            .append("personnelName", getPersonnelName())
+            .append("deviceId", getDeviceId())
+            .append("deviceName", getDeviceName())
+            .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();
+    }
+}

+ 176 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TeamInformation.java

@@ -0,0 +1,176 @@
+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;
+
+/**
+ * 班组信息对象 team_information
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+public class TeamInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 班组编号 */
+    @Excel(name = "班组编号")
+    private String teamCode;
+
+    /** 班组名称 */
+    @Excel(name = "班组名称")
+    private String teamName;
+
+    /** 创建者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 teamType;
+
+    public String getTeamType() {
+        return teamType;
+    }
+
+    public void setTeamType(String teamType) {
+        this.teamType = teamType;
+    }
+
+    public String getTeamCode() {
+        return teamCode;
+    }
+
+    public void setTeamCode(String teamCode) {
+        this.teamCode = teamCode;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public String getTeamName() {
+        return teamName;
+    }
+
+    public void setTeamName(String teamName) {
+        this.teamName = teamName;
+    }
+
+    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("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();
+    }
+}

+ 166 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TeamPersonnelChangeInformation.java

@@ -0,0 +1,166 @@
+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;
+
+/**
+ * 班组人员变动信息对象 team_personnel_change_information_copy1
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+public class TeamPersonnelChangeInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 人员姓名 */
+    @Excel(name = "人员姓名")
+    private String teamPersonnelName;
+
+    /** 班组id */
+    @Excel(name = "班组id")
+    private String teamId;
+
+    /** 创建者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 setTeamId(String teamId) 
+    {
+        this.teamId = teamId;
+    }
+
+    public String getTeamId() 
+    {
+        return teamId;
+    }
+    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 String getTeamPersonnelName() {
+        return teamPersonnelName;
+    }
+
+    public void setTeamPersonnelName(String teamPersonnelName) {
+        this.teamPersonnelName = teamPersonnelName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("teamId", getTeamId())
+            .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();
+    }
+}

+ 207 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TeamPersonnelInformation.java

@@ -0,0 +1,207 @@
+package com.zkqy.amichi.domain;
+
+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;
+
+import java.util.Date;
+
+/**
+ * 班组人员信息对象 team_personnel_information_copy1
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+public class TeamPersonnelInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @Override
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    @Override
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /** 人员姓名 */
+    @Excel(name = "人员姓名")
+    private String teamPersonnelName;
+
+
+    /** 班组id */
+    @Excel(name = "班组id")
+    private String teamId;
+
+    /** 创建者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;
+
+    /** 创建事件 Vo类属性 */
+    @Excel(name = "创建事件")
+    private String cjDateTime;
+
+    private String isRoutine;
+
+    public String getCjDateTime() {
+        return cjDateTime;
+    }
+
+    public void setCjDateTime(String cjDateTime) {
+        this.cjDateTime = cjDateTime;
+    }
+
+    public String getIsRoutine() {
+        return isRoutine;
+    }
+
+    public void setIsRoutine(String isRoutine) {
+        this.isRoutine = isRoutine;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public String getTeamPersonnelName() {
+        return teamPersonnelName;
+    }
+
+    public void setTeamPersonnelName(String teamPersonnelName) {
+        this.teamPersonnelName = teamPersonnelName;
+    }
+
+    public void setTeamId(String teamId)
+    {
+        this.teamId = teamId;
+    }
+
+    public String getTeamId() 
+    {
+        return teamId;
+    }
+    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("teamId", getTeamId())
+            .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();
+    }
+}

+ 33 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/GenerateProcessFlowCardVo.java

@@ -0,0 +1,33 @@
+package com.zkqy.amichi.domain.vo;
+
+public class GenerateProcessFlowCardVo {
+    private  String demandDocumentNumber;
+
+    private  String quantity;
+
+    private  String productionOrderListId;
+
+    public String getProductionOrderListId() {
+        return productionOrderListId;
+    }
+
+    public void setProductionOrderListId(String productionOrderListId) {
+        this.productionOrderListId = productionOrderListId;
+    }
+
+    public String getDemandDocumentNumber() {
+        return demandDocumentNumber;
+    }
+
+    public void setDemandDocumentNumber(String demandDocumentNumber) {
+        this.demandDocumentNumber = demandDocumentNumber;
+    }
+
+    public String getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(String quantity) {
+        this.quantity = quantity;
+    }
+}

+ 17 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/OnSiteProgramDetailsSumVo.java

@@ -0,0 +1,17 @@
+package com.zkqy.amichi.domain.vo;
+
+import com.zkqy.amichi.domain.OnSiteProgramDetails;
+
+public class OnSiteProgramDetailsSumVo extends OnSiteProgramDetails {
+
+    private  String quantitySum;
+
+    public String getQuantitySum() {
+        return quantitySum;
+    }
+
+    public void setQuantitySum(String quantitySum) {
+        this.quantitySum = quantitySum;
+    }
+
+}

+ 88 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/OnSiteProgramDetailsVo.java

@@ -0,0 +1,88 @@
+package com.zkqy.amichi.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.amichi.domain.OnSiteProgramDetails;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+public class OnSiteProgramDetailsVo {
+
+
+    //id
+    private  String id;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+    //计划编号
+    private  String planNumber;
+
+    //投产状态
+    private  String taskStatus;
+
+    public String getTaskStatus() {
+        return taskStatus;
+    }
+
+    public void setTaskStatus(String taskStatus) {
+        this.taskStatus = taskStatus;
+    }
+
+    //计划总数量
+    private  Integer quantity;
+    //完成时间
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate completionTime;
+    //备注
+    private  String remark;
+
+    //场内计划详情
+    private List<OnSiteProgramDetails> onSiteProgramDetails;
+
+    public Integer getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(Integer quantity) {
+        this.quantity = quantity;
+    }
+
+    public LocalDate getCompletionTime() {
+        return completionTime;
+    }
+
+    public void setCompletionTime(LocalDate completionTime) {
+        this.completionTime = completionTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getPlanNumber() {
+        return planNumber;
+    }
+
+    public void setPlanNumber(String planNumber) {
+        this.planNumber = planNumber;
+    }
+    public List<OnSiteProgramDetails> getOnSiteProgramDetails() {
+        return onSiteProgramDetails;
+    }
+
+    public void setOnSiteProgramDetails(List<OnSiteProgramDetails> onSiteProgramDetails) {
+        this.onSiteProgramDetails = onSiteProgramDetails;
+    }
+}

+ 32 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/ProcessWarehousingVo.java

@@ -0,0 +1,32 @@
+package com.zkqy.amichi.domain.vo;
+
+public class ProcessWarehousingVo {
+    private  String productName;
+    private  String quantity;
+
+    private  String orderNumber;
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(String quantity) {
+        this.quantity = quantity;
+    }
+}

+ 28 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/SemiFinishedMaterialListAndMaterialInventory.java

@@ -0,0 +1,28 @@
+package com.zkqy.amichi.domain.vo;
+
+import com.zkqy.amichi.domain.SemiFinishedMaterialList;
+
+public class SemiFinishedMaterialListAndMaterialInventory extends SemiFinishedMaterialList {
+
+    //总库存量
+    private  Integer stockQuantity;
+
+    //plan
+    private  String planId;
+
+    public String getPlanId() {
+        return planId;
+    }
+
+    public void setPlanId(String planId) {
+        this.planId = planId;
+    }
+
+    public Integer getStockQuantity() {
+        return stockQuantity;
+    }
+
+    public void setStockQuantity(Integer stockQuantity) {
+        this.stockQuantity = stockQuantity;
+    }
+}

+ 17 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/SemiFinishedMaterialListVo.java

@@ -0,0 +1,17 @@
+package com.zkqy.amichi.domain.vo;
+
+import com.zkqy.amichi.domain.SemiFinishedMaterialList;
+
+import java.util.List;
+
+public class SemiFinishedMaterialListVo  extends SemiFinishedMaterialList {
+    private List<SemiFinishedMaterialListVo> childerns;
+
+    public List<SemiFinishedMaterialListVo> getChilderns() {
+        return childerns;
+    }
+
+    public void setChilderns(List<SemiFinishedMaterialListVo> childerns) {
+        this.childerns = childerns;
+    }
+}

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.AutomaticSchedulingOnSite;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 场内计划排产信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-08-18
+ */
+@Mapper
+public interface AutomaticSchedulingOnSiteMapper 
+{
+    /**
+     * 查询场内计划排产信息
+     * 
+     * @param id 场内计划排产信息主键
+     * @return 场内计划排产信息
+     */
+    public AutomaticSchedulingOnSite selectAutomaticSchedulingOnSiteById(Long id);
+
+    /**
+     * 查询场内计划排产信息列表
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 场内计划排产信息集合
+     */
+    public List<AutomaticSchedulingOnSite> selectAutomaticSchedulingOnSiteList(AutomaticSchedulingOnSite automaticSchedulingOnSite);
+
+    /**
+     * 新增场内计划排产信息
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 结果
+     */
+    public int insertAutomaticSchedulingOnSite(AutomaticSchedulingOnSite automaticSchedulingOnSite);
+
+    /**
+     * 修改场内计划排产信息
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 结果
+     */
+    public int updateAutomaticSchedulingOnSite(AutomaticSchedulingOnSite automaticSchedulingOnSite);
+
+    /**
+     * 删除场内计划排产信息
+     * 
+     * @param id 场内计划排产信息主键
+     * @return 结果
+     */
+    public int deleteAutomaticSchedulingOnSiteById(Long id);
+
+    /**
+     * 批量删除场内计划排产信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteAutomaticSchedulingOnSiteByIds(Long[] ids);
+}

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ExceptionReportInformationSheet;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 异常报工日志Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-09-11
+ */
+@Mapper
+public interface ExceptionReportInformationSheetMapper 
+{
+    /**
+     * 查询异常报工日志
+     * 
+     * @param id 异常报工日志主键
+     * @return 异常报工日志
+     */
+    public ExceptionReportInformationSheet selectExceptionReportInformationSheetById(Long id);
+
+    /**
+     * 查询异常报工日志列表
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 异常报工日志集合
+     */
+    public List<ExceptionReportInformationSheet> selectExceptionReportInformationSheetList(ExceptionReportInformationSheet exceptionReportInformationSheet);
+
+    /**
+     * 新增异常报工日志
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 结果
+     */
+    public int insertExceptionReportInformationSheet(ExceptionReportInformationSheet exceptionReportInformationSheet);
+
+    /**
+     * 修改异常报工日志
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 结果
+     */
+    public int updateExceptionReportInformationSheet(ExceptionReportInformationSheet exceptionReportInformationSheet);
+
+    /**
+     * 删除异常报工日志
+     * 
+     * @param id 异常报工日志主键
+     * @return 结果
+     */
+    public int deleteExceptionReportInformationSheetById(Long id);
+
+    /**
+     * 批量删除异常报工日志
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteExceptionReportInformationSheetByIds(Long[] ids);
+}

+ 88 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/OnSiteProgramDetailsMapper.java

@@ -0,0 +1,88 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.OnSiteProgramDetails;
+import com.zkqy.amichi.domain.vo.OnSiteProgramDetailsSumVo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 场内计划详情crudMapper接口
+ * 
+ * @author zkqy
+ * @date 2024-08-06
+ */
+@Mapper
+public interface OnSiteProgramDetailsMapper 
+{
+    /**
+     * 查询场内计划详情crud
+     * 
+     * @param id 场内计划详情crud主键
+     * @return 场内计划详情crud
+     */
+    public OnSiteProgramDetails selectOnSiteProgramDetailsById(Long id);
+
+    /**
+     * 查询场内计划详情crud列表
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 场内计划详情crud集合
+     */
+    public List<OnSiteProgramDetails> selectOnSiteProgramDetailsList(OnSiteProgramDetails onSiteProgramDetails);
+
+    /**
+     * 查询场内计划详情crud列表
+     *
+     * @param ids 场内计划详情crud
+     * @return 场内计划详情crud集合
+     */
+    public List<OnSiteProgramDetails> selectOnSiteProgramDetailsListInPlanId(List<String> ids);
+
+    /**
+     * 查询所有计划需要的产品,如果产品相同就合并数量
+     * @param ids
+     * @return
+     */
+    public List<OnSiteProgramDetailsSumVo> selectOnSiteProgramDetailsListInPlanIdPacketCalculationSum(List<String> ids);
+
+
+    /**
+     * 新增场内计划详情crud
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 结果
+     */
+    public int insertOnSiteProgramDetails(OnSiteProgramDetails onSiteProgramDetails);
+
+    /**
+     * 修改场内计划详情crud
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 结果
+     */
+    public int updateOnSiteProgramDetails(OnSiteProgramDetails onSiteProgramDetails);
+
+    /**
+     * 删除场内计划详情crud
+     * 
+     * @param id 场内计划详情crud主键
+     * @return 结果
+     */
+    public int deleteOnSiteProgramDetailsById(Long id);
+
+    /**
+     * 批量删除场内计划详情crud
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteOnSiteProgramDetailsByIds(Long[] ids);
+
+    /**
+     * 删除某个厂外计划的详情
+     * @return
+     */
+    public int deleteOnSiteProgramDetailsByPlanid(String id);
+
+
+}

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

@@ -0,0 +1,70 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ProductionCardFlow;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工序流转卡流水Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-09-19
+ */
+@Mapper
+public interface ProductionCardFlowMapper 
+{
+    /**
+     * 查询工序流转卡流水
+     * 
+     * @param id 工序流转卡流水主键
+     * @return 工序流转卡流水
+     */
+    public ProductionCardFlow selectProductionCardFlowById(Long id);
+
+    /**
+     * 查询工序流转卡流水列表
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 工序流转卡流水集合
+     */
+    public List<ProductionCardFlow> selectProductionCardFlowList(ProductionCardFlow productionCardFlow);
+
+    /**
+     * 新增工序流转卡流水
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 结果
+     */
+    public int insertProductionCardFlow(ProductionCardFlow productionCardFlow);
+
+    /**
+     * 修改工序流转卡流水
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 结果
+     */
+    public int updateProductionCardFlow(ProductionCardFlow productionCardFlow);
+
+    /**
+     * 删除工序流转卡流水
+     * 
+     * @param id 工序流转卡流水主键
+     * @return 结果
+     */
+    public int deleteProductionCardFlowById(Long id);
+
+    /**
+     * 批量删除工序流转卡流水
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductionCardFlowByIds(Long[] ids);
+
+    /**
+     * 批量插入流转卡数据
+     * @param productionCardFlows
+     * @return
+     */
+    public int insertProductionCardFlowBatch(List<ProductionCardFlow> productionCardFlows);
+}

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ProductionOrderList;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 生产订单列Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-09-19
+ */
+@Mapper
+public interface ProductionOrderListMapper 
+{
+    /**
+     * 查询生产订单列
+     * 
+     * @param id 生产订单列主键
+     * @return 生产订单列
+     */
+    public ProductionOrderList selectProductionOrderListById(Long id);
+
+    /**
+     * 查询生产订单列列表
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 生产订单列集合
+     */
+    public List<ProductionOrderList> selectProductionOrderListList(ProductionOrderList productionOrderList);
+
+    /**
+     * 新增生产订单列
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 结果
+     */
+    public int insertProductionOrderList(ProductionOrderList productionOrderList);
+
+    /**
+     * 修改生产订单列
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 结果
+     */
+    public int updateProductionOrderList(ProductionOrderList productionOrderList);
+
+    /**
+     * 删除生产订单列
+     * 
+     * @param id 生产订单列主键
+     * @return 结果
+     */
+    public int deleteProductionOrderListById(Long id);
+
+    /**
+     * 批量删除生产订单列
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductionOrderListByIds(Long[] ids);
+}

+ 10 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionPlanningManagementMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 import com.zkqy.amichi.domain.ProductionPlanningManagement;
 import com.zkqy.amichi.domain.vo.ProductionPlanningManagementVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 生产计划Mapper接口
@@ -30,6 +31,15 @@ public interface ProductionPlanningManagementMapper
      */
     public List<ProductionPlanningManagement> selectProductionPlanningManagementList(ProductionPlanningManagement productionPlanningManagement);
 
+    /**
+     * 查询生产计划列表
+     *
+     * @param  orderNumber, planNumber 生产计划
+     * @return 生产计划集合
+     */
+    public List<ProductionPlanningManagement> selectProductionPlanningManagementByOrderNumebrOrPlanNumber(@Param("orderNumber")  String orderNumber, @Param("planNumber") String planNumber);
+
+
     /**
      * 新增生产计划
      * 

+ 72 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ReportInformationSheetMapper.java

@@ -0,0 +1,72 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ReportInformationSheet;
+import org.apache.ibatis.annotations.Mapper;
+
+import javax.annotation.ManagedBean;
+
+/**
+ * 报工日志Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-08-19
+ */
+@Mapper
+public interface ReportInformationSheetMapper 
+{
+    /**
+     * 查询报工日志
+     * 
+     * @param id 报工日志主键
+     * @return 报工日志
+     */
+    public ReportInformationSheet selectReportInformationSheetById(Long id);
+
+    /**
+     * 查询报工日志列表
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 报工日志集合
+     */
+    public List<ReportInformationSheet> selectReportInformationSheetList(ReportInformationSheet reportInformationSheet);
+
+    /**
+     * 新增报工日志
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 结果
+     */
+    public int insertReportInformationSheet(ReportInformationSheet reportInformationSheet);
+
+    /**
+     * 修改报工日志
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 结果
+     */
+    public int updateReportInformationSheet(ReportInformationSheet reportInformationSheet);
+
+    /**
+     * 删除报工日志
+     * 
+     * @param id 报工日志主键
+     * @return 结果
+     */
+    public int deleteReportInformationSheetById(Long id);
+
+    /**
+     * 批量删除报工日志
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteReportInformationSheetByIds(Long[] ids);
+
+    /**
+     * 检查下
+     * @param sheetsjjg
+     * @return
+     */
+    ReportInformationSheet selectReportInformationSheetListOrderBy(ReportInformationSheet sheetsjjg);
+}

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.SchedulingProcessTime;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 排产工序工时Mapper接口
+ *
+ * @author zkqy
+ * @date 2024-08-26
+ */
+@Mapper
+public interface SchedulingProcessTimeMapper
+{
+    /**
+     * 查询排产工序工时
+     *
+     * @param id 排产工序工时主键
+     * @return 排产工序工时
+     */
+    public SchedulingProcessTime selectSchedulingProcessTimeById(Long id);
+
+    /**
+     * 查询排产工序工时列表
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 排产工序工时集合
+     */
+    public List<SchedulingProcessTime> selectSchedulingProcessTimeList(SchedulingProcessTime schedulingProcessTime);
+
+    /**
+     * 新增排产工序工时
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 结果
+     */
+    public int insertSchedulingProcessTime(SchedulingProcessTime schedulingProcessTime);
+
+    /**
+     * 修改排产工序工时
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 结果
+     */
+    public int updateSchedulingProcessTime(SchedulingProcessTime schedulingProcessTime);
+
+    /**
+     * 删除排产工序工时
+     *
+     * @param id 排产工序工时主键
+     * @return 结果
+     */
+    public int deleteSchedulingProcessTimeById(Long id);
+
+    /**
+     * 批量删除排产工序工时
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSchedulingProcessTimeByIds(Long[] ids);
+}

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

@@ -0,0 +1,90 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.SemiFinishedMaterialList;
+import com.zkqy.amichi.domain.vo.SemiFinishedMaterialListAndMaterialInventory;
+import com.zkqy.amichi.domain.vo.SemiFinishedMaterialListVo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 半成品物料清单Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-07-29
+ */
+@Mapper
+public interface SemiFinishedMaterialListMapper 
+{
+    /**
+     * 查询半成品物料清单
+     * 
+     * @param id 半成品物料清单主键
+     * @return 半成品物料清单
+     */
+    public SemiFinishedMaterialList selectSemiFinishedMaterialListById(Long id);
+
+    /**
+     * 查询半成品物料清单列表
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 半成品物料清单集合
+     */
+    public List<SemiFinishedMaterialList> selectSemiFinishedMaterialListList(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 查询半成品物料清单列表
+     *
+     * @param semiFinishedMaterialListvo 半成品物料清单
+     *                                   is_tree_show
+     * @return 半成品物料清单集合
+     */
+    public List<SemiFinishedMaterialListVo> selectSemiFinishedMaterialListListVo(SemiFinishedMaterialListVo semiFinishedMaterialListvo);
+
+    /**
+     * 新增半成品物料清单
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 结果
+     */
+    public int insertSemiFinishedMaterialList(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 修改半成品物料清单
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 结果
+     */
+    public int updateSemiFinishedMaterialList(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 删除半成品物料清单
+     * 
+     * @param id 半成品物料清单主键
+     * @return 结果
+     */
+    public int deleteSemiFinishedMaterialListById(Long id);
+
+    /**
+     * 批量删除半成品物料清单
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSemiFinishedMaterialListByIds(Long[] ids);
+
+    /**
+     * 查询物料信息关联的库存信息
+     * @param semiFinishedMaterialList
+     * @return
+     */
+    List<SemiFinishedMaterialListAndMaterialInventory> selectSemiFinishedMaterialListListJoinMaterialInventory(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 查询物料信息关联的库存信息
+     * @param ids
+     * @return
+     */
+    List<SemiFinishedMaterialListAndMaterialInventory> selectSemiFinishedMaterialListListJoinMaterialInventoryInFid(List<String> ids);
+
+
+}

+ 81 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/StationInformationMapper.java

@@ -0,0 +1,81 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.StationInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工位信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-08-20
+ */
+@Mapper
+public interface StationInformationMapper 
+{
+    /**
+     * 查询工位信息
+     * 
+     * @param id 工位信息主键
+     * @return 工位信息
+     */
+    public StationInformation selectStationInformationById(Long id);
+
+    /**
+     * 查询工位信息列表
+     * 
+     * @param stationInformation 工位信息
+     * @return 工位信息集合
+     */
+    public List<StationInformation> selectStationInformationList(StationInformation stationInformation);
+
+    /**
+     * 新增工位信息
+     * 
+     * @param stationInformation 工位信息
+     * @return 结果
+     */
+    public int insertStationInformation(StationInformation stationInformation);
+
+    /**
+     * 修改工位信息
+     * 
+     * @param stationInformation 工位信息
+     * @return 结果
+     */
+    public int updateStationInformation(StationInformation stationInformation);
+
+    /**
+     * 修改工位设备信息
+     *
+     * @param stationInformation 工位信息
+     * @return 结果
+     */
+    public int updateStationInformationByStationUpdateEquipment(StationInformation stationInformation);
+
+
+    /**
+     * 修改工位设备信息
+     *
+     * @param stationInformation 手持机
+     * @return 结果
+     */
+    public int updateStationInformationByStationUpdateByDeviceName(StationInformation stationInformation);
+
+
+    /**
+     * 删除工位信息
+     * 
+     * @param id 工位信息主键
+     * @return 结果
+     */
+    public int deleteStationInformationById(Long id);
+
+    /**
+     * 批量删除工位信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteStationInformationByIds(Long[] ids);
+}

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TeamInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 班组信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@Mapper
+public interface TeamInformationMapper 
+{
+    /**
+     * 查询班组信息
+     * 
+     * @param id 班组信息主键
+     * @return 班组信息
+     */
+    public TeamInformation selectTeamInformationById(Long id);
+
+    /**
+     * 查询班组信息列表
+     * 
+     * @param teamInformation 班组信息
+     * @return 班组信息集合
+     */
+    public List<TeamInformation> selectTeamInformationList(TeamInformation teamInformation);
+
+    /**
+     * 新增班组信息
+     * 
+     * @param teamInformation 班组信息
+     * @return 结果
+     */
+    public int insertTeamInformation(TeamInformation teamInformation);
+
+    /**
+     * 修改班组信息
+     * 
+     * @param teamInformation 班组信息
+     * @return 结果
+     */
+    public int updateTeamInformation(TeamInformation teamInformation);
+
+    /**
+     * 删除班组信息
+     * 
+     * @param id 班组信息主键
+     * @return 结果
+     */
+    public int deleteTeamInformationById(Long id);
+
+    /**
+     * 批量删除班组信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTeamInformationByIds(Long[] ids);
+}

+ 64 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/TeamPersonnelChangeInformationMapper.java

@@ -0,0 +1,64 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+
+import com.zkqy.amichi.domain.TeamPersonnelChangeInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 班组人员变动信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@Mapper
+public interface TeamPersonnelChangeInformationMapper
+{
+    /**
+     * 查询班组人员变动信息
+     * 
+     * @param id 班组人员变动信息主键
+     * @return 班组人员变动信息
+     */
+    public TeamPersonnelChangeInformation selectTeamPersonnelChangeInformationById(Long id);
+
+    /**
+     * 查询班组人员变动信息列表
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 班组人员变动信息集合
+     */
+    public List<TeamPersonnelChangeInformation> selectTeamPersonnelChangeInformationList(TeamPersonnelChangeInformation teamPersonnelChangeInformation);
+
+    /**
+     * 新增班组人员变动信息
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 结果
+     */
+    public int insertTeamPersonnelChangeInformation(TeamPersonnelChangeInformation teamPersonnelChangeInformation);
+
+    /**
+     * 修改班组人员变动信息
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 结果
+     */
+    public int updateTeamPersonnelChangeInformation(TeamPersonnelChangeInformation teamPersonnelChangeInformation);
+
+    /**
+     * 删除班组人员变动信息
+     * 
+     * @param id 班组人员变动信息主键
+     * @return 结果
+     */
+    public int deleteTeamPersonnelChangeInformationById(Long id);
+
+    /**
+     * 批量删除班组人员变动信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTeamPersonnelChangeInformationByIds(Long[] ids);
+}

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TeamPersonnelInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 班组人员信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@Mapper
+public interface TeamPersonnelInformationMapper
+{
+    /**
+     * 查询班组人员信息
+     * 
+     * @param id 班组人员信息主键
+     * @return 班组人员信息
+     */
+    public TeamPersonnelInformation selectTeamPersonnelInformationById(Long id);
+
+    /**
+     * 查询班组人员信息列表
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 班组人员信息集合
+     */
+    public List<TeamPersonnelInformation> selectTeamPersonnelInformationList(TeamPersonnelInformation teamPersonnelInformation);
+
+    /**
+     * 新增班组人员信息
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 结果
+     */
+    public int insertTeamPersonnelInformation(TeamPersonnelInformation teamPersonnelInformation);
+
+    /**
+     * 修改班组人员信息
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 结果
+     */
+    public int updateTeamPersonnelInformation(TeamPersonnelInformation teamPersonnelInformation);
+
+    /**
+     * 删除班组人员信息
+     * 
+     * @param id 班组人员信息主键
+     * @return 结果
+     */
+    public int deleteTeamPersonnelInformationById(Long id);
+
+    /**
+     * 批量删除班组人员信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTeamPersonnelInformationByIds(Long[] ids);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.AutomaticSchedulingOnSite;
+
+/**
+ * 场内计划排产信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-08-18
+ */
+public interface IAutomaticSchedulingOnSiteService 
+{
+    /**
+     * 查询场内计划排产信息
+     * 
+     * @param id 场内计划排产信息主键
+     * @return 场内计划排产信息
+     */
+    public AutomaticSchedulingOnSite selectAutomaticSchedulingOnSiteById(Long id);
+
+    /**
+     * 查询场内计划排产信息列表
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 场内计划排产信息集合
+     */
+    public List<AutomaticSchedulingOnSite> selectAutomaticSchedulingOnSiteList(AutomaticSchedulingOnSite automaticSchedulingOnSite);
+
+    /**
+     * 新增场内计划排产信息
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 结果
+     */
+    public int insertAutomaticSchedulingOnSite(AutomaticSchedulingOnSite automaticSchedulingOnSite);
+
+    /**
+     * 修改场内计划排产信息
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 结果
+     */
+    public int updateAutomaticSchedulingOnSite(AutomaticSchedulingOnSite automaticSchedulingOnSite);
+
+    /**
+     * 批量删除场内计划排产信息
+     * 
+     * @param ids 需要删除的场内计划排产信息主键集合
+     * @return 结果
+     */
+    public int deleteAutomaticSchedulingOnSiteByIds(Long[] ids);
+
+    /**
+     * 删除场内计划排产信息信息
+     * 
+     * @param id 场内计划排产信息主键
+     * @return 结果
+     */
+    public int deleteAutomaticSchedulingOnSiteById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ExceptionReportInformationSheet;
+
+/**
+ * 异常报工日志Service接口
+ * 
+ * @author zkqy
+ * @date 2024-09-11
+ */
+public interface IExceptionReportInformationSheetService 
+{
+    /**
+     * 查询异常报工日志
+     * 
+     * @param id 异常报工日志主键
+     * @return 异常报工日志
+     */
+    public ExceptionReportInformationSheet selectExceptionReportInformationSheetById(Long id);
+
+    /**
+     * 查询异常报工日志列表
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 异常报工日志集合
+     */
+    public List<ExceptionReportInformationSheet> selectExceptionReportInformationSheetList(ExceptionReportInformationSheet exceptionReportInformationSheet);
+
+    /**
+     * 新增异常报工日志
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 结果
+     */
+    public int insertExceptionReportInformationSheet(ExceptionReportInformationSheet exceptionReportInformationSheet);
+
+    /**
+     * 修改异常报工日志
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 结果
+     */
+    public int updateExceptionReportInformationSheet(ExceptionReportInformationSheet exceptionReportInformationSheet);
+
+    /**
+     * 批量删除异常报工日志
+     * 
+     * @param ids 需要删除的异常报工日志主键集合
+     * @return 结果
+     */
+    public int deleteExceptionReportInformationSheetByIds(Long[] ids);
+
+    /**
+     * 删除异常报工日志信息
+     * 
+     * @param id 异常报工日志主键
+     * @return 结果
+     */
+    public int deleteExceptionReportInformationSheetById(Long id);
+}

+ 105 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IOnSiteProgramDetailsService.java

@@ -0,0 +1,105 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.OnSiteProgramDetails;
+import com.zkqy.amichi.domain.vo.OnSiteProgramDetailsVo;
+import com.zkqy.amichi.domain.vo.ProductionPlanningManagementVo;
+
+/**
+ * 场内计划详情crudService接口
+ * 
+ * @author zkqy
+ * @date 2024-08-06
+ */
+public interface IOnSiteProgramDetailsService 
+{
+    /**
+     * 查询场内计划详情crud
+     * 
+     * @param id 场内计划详情crud主键
+     * @return 场内计划详情crud
+     */
+    public OnSiteProgramDetails selectOnSiteProgramDetailsById(Long id);
+
+    /**
+     * 查询场内计划详情crud列表
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 场内计划详情crud集合
+     */
+    public List<OnSiteProgramDetails> selectOnSiteProgramDetailsList(OnSiteProgramDetails onSiteProgramDetails);
+
+    /**
+     * 新增场内计划详情crud
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 结果
+     */
+    public int insertOnSiteProgramDetails(OnSiteProgramDetails onSiteProgramDetails);
+
+    /**
+     * 修改场内计划详情crud
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 结果
+     */
+    public int updateOnSiteProgramDetails(OnSiteProgramDetails onSiteProgramDetails);
+
+    /**
+     * 批量删除场内计划详情crud
+     * 
+     * @param ids 需要删除的场内计划详情crud主键集合
+     * @return 结果
+     */
+    public int deleteOnSiteProgramDetailsByIds(Long[] ids);
+
+    /**
+     * 删除场内计划详情crud信息
+     * 
+     * @param id 场内计划详情crud主键
+     * @return 结果
+     */
+    public int deleteOnSiteProgramDetailsById(Long id);
+
+    /**
+     * 插入场内计划和计划详情
+     * @param onSiteProgramDetailsVo
+     * @return
+     */
+    int insertOnSiteProgramDetailsVo(OnSiteProgramDetailsVo onSiteProgramDetailsVo);
+
+    /**
+     * 查询场内计划详情
+     * @param productionPlanningManagementVo
+     * @return
+     */
+    List<OnSiteProgramDetailsVo> getOnSiteProgramDetailsInfoVo(ProductionPlanningManagementVo productionPlanningManagementVo);
+
+    /**
+     * 修改场内计划的查询回显
+     * @param id
+     * @return
+     */
+    OnSiteProgramDetailsVo selectOnSiteProgramDetailsVoById(Long id);
+
+    /**
+     * 修改场内计划信息
+     * @param onSiteProgramDetails
+     * @return
+     */
+    int editOnSiteProgramDetailsAndProductionPlanning(OnSiteProgramDetailsVo onSiteProgramDetails);
+
+    /**
+     * 查询当前计划的所有产品信息
+     * @param ids
+     * @return
+     */
+    List<OnSiteProgramDetails> selectOnSiteProgramDetailsListInPlanId(List<String> ids);
+
+    /**
+     * 厂内计划自动排产
+     * @param ids
+     * @return
+     */
+    int inPlanAutomaticScheduling(List<String> ids);
+}

+ 69 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProductionCardFlowService.java

@@ -0,0 +1,69 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ProductionCardFlow;
+import com.zkqy.amichi.domain.vo.GenerateProcessFlowCardVo;
+
+/**
+ * 工序流转卡流水Service接口
+ * 
+ * @author zkqy
+ * @date 2024-09-19
+ */
+public interface IProductionCardFlowService 
+{
+    /**
+     * 查询工序流转卡流水
+     * 
+     * @param id 工序流转卡流水主键
+     * @return 工序流转卡流水
+     */
+    public ProductionCardFlow selectProductionCardFlowById(Long id);
+
+    /**
+     * 查询工序流转卡流水列表
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 工序流转卡流水集合
+     */
+    public List<ProductionCardFlow> selectProductionCardFlowList(ProductionCardFlow productionCardFlow);
+
+    /**
+     * 新增工序流转卡流水
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 结果
+     */
+    public int insertProductionCardFlow(ProductionCardFlow productionCardFlow);
+
+    /**
+     * 修改工序流转卡流水
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 结果
+     */
+    public int updateProductionCardFlow(ProductionCardFlow productionCardFlow);
+
+    /**
+     * 批量删除工序流转卡流水
+     * 
+     * @param ids 需要删除的工序流转卡流水主键集合
+     * @return 结果
+     */
+    public int deleteProductionCardFlowByIds(Long[] ids);
+
+    /**
+     * 删除工序流转卡流水信息
+     * 
+     * @param id 工序流转卡流水主键
+     * @return 结果
+     */
+    public int deleteProductionCardFlowById(Long id);
+
+    /**
+     * 生成工序流转卡信息
+     * @param generateProcessFlowCardVo
+     * @return
+     */
+    int generateProcessFlowCard(GenerateProcessFlowCardVo generateProcessFlowCardVo);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ProductionOrderList;
+
+/**
+ * 生产订单列Service接口
+ * 
+ * @author zkqy
+ * @date 2024-09-19
+ */
+public interface IProductionOrderListService 
+{
+    /**
+     * 查询生产订单列
+     * 
+     * @param id 生产订单列主键
+     * @return 生产订单列
+     */
+    public ProductionOrderList selectProductionOrderListById(Long id);
+
+    /**
+     * 查询生产订单列列表
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 生产订单列集合
+     */
+    public List<ProductionOrderList> selectProductionOrderListList(ProductionOrderList productionOrderList);
+
+    /**
+     * 新增生产订单列
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 结果
+     */
+    public int insertProductionOrderList(ProductionOrderList productionOrderList);
+
+    /**
+     * 修改生产订单列
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 结果
+     */
+    public int updateProductionOrderList(ProductionOrderList productionOrderList);
+
+    /**
+     * 批量删除生产订单列
+     * 
+     * @param ids 需要删除的生产订单列主键集合
+     * @return 结果
+     */
+    public int deleteProductionOrderListByIds(Long[] ids);
+
+    /**
+     * 删除生产订单列信息
+     * 
+     * @param id 生产订单列主键
+     * @return 结果
+     */
+    public int deleteProductionOrderListById(Long id);
+}

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

@@ -0,0 +1,62 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ReportInformationSheet;
+import com.zkqy.common.core.domain.AjaxResult;
+
+/**
+ * 报工日志Service接口
+ * 
+ * @author zkqy
+ * @date 2024-08-19
+ */
+public interface IReportInformationSheetService 
+{
+    /**
+     * 查询报工日志
+     * 
+     * @param id 报工日志主键
+     * @return 报工日志
+     */
+    public ReportInformationSheet selectReportInformationSheetById(Long id);
+
+    /**
+     * 查询报工日志列表
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 报工日志集合
+     */
+    public List<ReportInformationSheet> selectReportInformationSheetList(ReportInformationSheet reportInformationSheet);
+
+    /**
+     * 新增报工日志
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 结果
+     */
+    public AjaxResult insertReportInformationSheet(ReportInformationSheet reportInformationSheet);
+
+    /**
+     * 修改报工日志
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 结果
+     */
+    public int updateReportInformationSheet(ReportInformationSheet reportInformationSheet);
+
+    /**
+     * 批量删除报工日志
+     * 
+     * @param ids 需要删除的报工日志主键集合
+     * @return 结果
+     */
+    public int deleteReportInformationSheetByIds(Long[] ids);
+
+    /**
+     * 删除报工日志信息
+     * 
+     * @param id 报工日志主键
+     * @return 结果
+     */
+    public int deleteReportInformationSheetById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.SchedulingProcessTime;
+
+/**
+ * 排产工序工时Service接口
+ *
+ * @author zkqy
+ * @date 2024-08-26
+ */
+public interface ISchedulingProcessTimeService
+{
+    /**
+     * 查询排产工序工时
+     *
+     * @param id 排产工序工时主键
+     * @return 排产工序工时
+     */
+    public SchedulingProcessTime selectSchedulingProcessTimeById(Long id);
+
+    /**
+     * 查询排产工序工时列表
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 排产工序工时集合
+     */
+    public List<SchedulingProcessTime> selectSchedulingProcessTimeList(SchedulingProcessTime schedulingProcessTime);
+
+    /**
+     * 新增排产工序工时
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 结果
+     */
+    public int insertSchedulingProcessTime(SchedulingProcessTime schedulingProcessTime);
+
+    /**
+     * 修改排产工序工时
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 结果
+     */
+    public int updateSchedulingProcessTime(SchedulingProcessTime schedulingProcessTime);
+
+    /**
+     * 批量删除排产工序工时
+     *
+     * @param ids 需要删除的排产工序工时主键集合
+     * @return 结果
+     */
+    public int deleteSchedulingProcessTimeByIds(Long[] ids);
+
+    /**
+     * 删除排产工序工时信息
+     *
+     * @param id 排产工序工时主键
+     * @return 结果
+     */
+    public int deleteSchedulingProcessTimeById(Long id);
+}

+ 91 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ISemiFinishedMaterialListService.java

@@ -0,0 +1,91 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.SemiFinishedMaterialList;
+import com.zkqy.amichi.domain.vo.SemiFinishedMaterialListVo;
+import com.zkqy.common.core.domain.AjaxResult;
+
+/**
+ * 半成品物料清单Service接口
+ * 
+ * @author zkqy
+ * @date 2024-07-29
+ */
+public interface ISemiFinishedMaterialListService 
+{
+    /**
+     * 查询半成品物料清单
+     * 
+     * @param id 半成品物料清单主键
+     * @return 半成品物料清单
+     */
+    public SemiFinishedMaterialList selectSemiFinishedMaterialListById(Long id);
+
+    /**
+     * 查询半成品物料清单列表
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 半成品物料清单集合
+     */
+    public List<SemiFinishedMaterialList> selectSemiFinishedMaterialListList(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 新增半成品物料清单
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 结果
+     */
+    public int insertSemiFinishedMaterialList(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 修改半成品物料清单
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 结果
+     */
+    public int updateSemiFinishedMaterialList(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 批量删除半成品物料清单
+     * 
+     * @param ids 需要删除的半成品物料清单主键集合
+     * @return 结果
+     */
+    public int deleteSemiFinishedMaterialListByIds(Long[] ids);
+
+    /**
+     * 删除半成品物料清单信息
+     * 
+     * @param id 半成品物料清单主键
+     * @return 结果
+     */
+    public int deleteSemiFinishedMaterialListById(Long id);
+
+    /**
+     * 查询树结构菜单
+     * @param semiFinishedMaterialList
+     * @return
+     */
+    List<SemiFinishedMaterialListVo> selectTreeList(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 查询树形菜单信息(排除物料信息)
+     * @param semiFinishedMaterialList
+     * @return
+     */
+    List<SemiFinishedMaterialListVo> excludeTreeList(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 拿到产品数据
+     * @param semiFinishedMaterialList
+     * @return
+     */
+    List<SemiFinishedMaterialListVo> productData(SemiFinishedMaterialList semiFinishedMaterialList);
+
+    /**
+     * 查询半成品物料跟库存的对比情况
+     * @param ids
+     * @return
+     */
+    AjaxResult selectSemiFinishedMaterialListByIdsAndInventory(List<String> ids);
+}

+ 64 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IStationInformationService.java

@@ -0,0 +1,64 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.StationInformation;
+import com.zkqy.common.core.domain.AjaxResult;
+
+/**
+ * 工位信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-08-20
+ */
+public interface IStationInformationService 
+{
+    /**
+     * 查询工位信息
+     * 
+     * @param id 工位信息主键
+     * @return 工位信息
+     */
+    public StationInformation selectStationInformationById(Long id);
+
+    /**
+     * 查询工位信息列表
+     * 
+     * @param stationInformation 工位信息
+     * @return 工位信息集合
+     */
+    public List<StationInformation> selectStationInformationList(StationInformation stationInformation);
+
+    /**
+     * 新增工位信息
+     * 
+     * @param stationInformation 工位信息
+     * @return 结果
+     */
+    public int insertStationInformation(StationInformation stationInformation);
+
+    /**
+     * 修改工位信息
+     * 
+     * @param stationInformation 工位信息
+     * @return 结果
+     */
+    public int updateStationInformation(StationInformation stationInformation);
+
+    /**
+     * 批量删除工位信息
+     * 
+     * @param ids 需要删除的工位信息主键集合
+     * @return 结果
+     */
+    public int deleteStationInformationByIds(Long[] ids);
+
+    /**
+     * 删除工位信息信息
+     * 
+     * @param id 工位信息主键
+     * @return 结果
+     */
+    public int deleteStationInformationById(Long id);
+
+    String stationProductScanning(String contentString);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TeamInformation;
+
+/**
+ * 班组信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+public interface ITeamInformationService 
+{
+    /**
+     * 查询班组信息
+     * 
+     * @param id 班组信息主键
+     * @return 班组信息
+     */
+    public TeamInformation selectTeamInformationById(Long id);
+
+    /**
+     * 查询班组信息列表
+     * 
+     * @param teamInformation 班组信息
+     * @return 班组信息集合
+     */
+    public List<TeamInformation> selectTeamInformationList(TeamInformation teamInformation);
+
+    /**
+     * 新增班组信息
+     * 
+     * @param teamInformation 班组信息
+     * @return 结果
+     */
+    public int insertTeamInformation(TeamInformation teamInformation);
+
+    /**
+     * 修改班组信息
+     * 
+     * @param teamInformation 班组信息
+     * @return 结果
+     */
+    public int updateTeamInformation(TeamInformation teamInformation);
+
+    /**
+     * 批量删除班组信息
+     * 
+     * @param ids 需要删除的班组信息主键集合
+     * @return 结果
+     */
+    public int deleteTeamInformationByIds(Long[] ids);
+
+    /**
+     * 删除班组信息信息
+     * 
+     * @param id 班组信息主键
+     * @return 结果
+     */
+    public int deleteTeamInformationById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TeamPersonnelChangeInformation;
+
+/**
+ * 班组人员变动信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+public interface ITeamPersonnelChangeInformationService
+{
+    /**
+     * 查询班组人员变动信息
+     * 
+     * @param id 班组人员变动信息主键
+     * @return 班组人员变动信息
+     */
+    public TeamPersonnelChangeInformation selectTeamPersonnelChangeInformationById(Long id);
+
+    /**
+     * 查询班组人员变动信息列表
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 班组人员变动信息集合
+     */
+    public List<TeamPersonnelChangeInformation> selectTeamPersonnelChangeInformationList(TeamPersonnelChangeInformation teamPersonnelChangeInformation);
+
+    /**
+     * 新增班组人员变动信息
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 结果
+     */
+    public int insertTeamPersonnelChangeInformation(TeamPersonnelChangeInformation teamPersonnelChangeInformation);
+
+    /**
+     * 修改班组人员变动信息
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 结果
+     */
+    public int updateTeamPersonnelChangeInformation(TeamPersonnelChangeInformation teamPersonnelChangeInformation);
+
+    /**
+     * 批量删除班组人员变动信息
+     * 
+     * @param ids 需要删除的班组人员变动信息主键集合
+     * @return 结果
+     */
+    public int deleteTeamPersonnelChangeInformationByIds(Long[] ids);
+
+    /**
+     * 删除班组人员变动信息信息
+     * 
+     * @param id 班组人员变动信息主键
+     * @return 结果
+     */
+    public int deleteTeamPersonnelChangeInformationById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TeamPersonnelInformation;
+
+/**
+ * 班组人员信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+public interface ITeamPersonnelInformationService
+{
+    /**
+     * 查询班组人员信息
+     * 
+     * @param id 班组人员信息主键
+     * @return 班组人员信息
+     */
+    public TeamPersonnelInformation selectTeamPersonnelInformationById(Long id);
+
+    /**
+     * 查询班组人员信息列表
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 班组人员信息集合
+     */
+    public List<TeamPersonnelInformation> selectTeamPersonnelInformationList(TeamPersonnelInformation teamPersonnelInformation);
+
+    /**
+     * 新增班组人员信息
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 结果
+     */
+    public int insertTeamPersonnelInformation(TeamPersonnelInformation teamPersonnelInformation);
+
+    /**
+     * 修改班组人员信息
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 结果
+     */
+    public int updateTeamPersonnelInformation(TeamPersonnelInformation teamPersonnelInformation);
+
+    /**
+     * 批量删除班组人员信息
+     * 
+     * @param ids 需要删除的班组人员信息主键集合
+     * @return 结果
+     */
+    public int deleteTeamPersonnelInformationByIds(Long[] ids);
+
+    /**
+     * 删除班组人员信息信息
+     * 
+     * @param id 班组人员信息主键
+     * @return 结果
+     */
+    public int deleteTeamPersonnelInformationById(Long id);
+}

+ 10 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IWarehouseEntryInformationService.java

@@ -2,7 +2,9 @@ package com.zkqy.amichi.service;
 
 import java.util.List;
 import com.zkqy.amichi.domain.WarehouseEntryInformation;
+import com.zkqy.amichi.domain.vo.ProcessWarehousingVo;
 import com.zkqy.amichi.domain.vo.WarehouseEntryInformationVo;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 入库单信息Service接口
@@ -87,4 +89,12 @@ public interface IWarehouseEntryInformationService
      * @return
      */
     int updateWarehouseEntryInformationByIds(Long[] ids);
+
+
+    /**
+     * 工序节点入库逻辑
+     * @param ProcessWarehousingVo
+     * @return
+     */
+     int processWarehousing(List<ProcessWarehousingVo> ProcessWarehousingVo);
 }

+ 97 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/AutomaticSchedulingOnSiteServiceImpl.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.AutomaticSchedulingOnSiteMapper;
+import com.zkqy.amichi.domain.AutomaticSchedulingOnSite;
+import com.zkqy.amichi.service.IAutomaticSchedulingOnSiteService;
+
+/**
+ * 场内计划排产信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-08-18
+ */
+@Service
+public class AutomaticSchedulingOnSiteServiceImpl implements IAutomaticSchedulingOnSiteService 
+{
+    @Autowired
+    private AutomaticSchedulingOnSiteMapper automaticSchedulingOnSiteMapper;
+
+    /**
+     * 查询场内计划排产信息
+     * 
+     * @param id 场内计划排产信息主键
+     * @return 场内计划排产信息
+     */
+    @Override
+    public AutomaticSchedulingOnSite selectAutomaticSchedulingOnSiteById(Long id)
+    {
+        return automaticSchedulingOnSiteMapper.selectAutomaticSchedulingOnSiteById(id);
+    }
+
+    /**
+     * 查询场内计划排产信息列表
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 场内计划排产信息
+     */
+    @Override
+    public List<AutomaticSchedulingOnSite> selectAutomaticSchedulingOnSiteList(AutomaticSchedulingOnSite automaticSchedulingOnSite)
+    {
+        return automaticSchedulingOnSiteMapper.selectAutomaticSchedulingOnSiteList(automaticSchedulingOnSite);
+    }
+
+    /**
+     * 新增场内计划排产信息
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 结果
+     */
+    @Override
+    public int insertAutomaticSchedulingOnSite(AutomaticSchedulingOnSite automaticSchedulingOnSite)
+    {
+        automaticSchedulingOnSite.setCreateTime(DateUtils.getNowDate());
+        return automaticSchedulingOnSiteMapper.insertAutomaticSchedulingOnSite(automaticSchedulingOnSite);
+    }
+
+    /**
+     * 修改场内计划排产信息
+     * 
+     * @param automaticSchedulingOnSite 场内计划排产信息
+     * @return 结果
+     */
+    @Override
+    public int updateAutomaticSchedulingOnSite(AutomaticSchedulingOnSite automaticSchedulingOnSite)
+    {
+        automaticSchedulingOnSite.setUpdateTime(DateUtils.getNowDate());
+        return automaticSchedulingOnSiteMapper.updateAutomaticSchedulingOnSite(automaticSchedulingOnSite);
+    }
+
+    /**
+     * 批量删除场内计划排产信息
+     * 
+     * @param ids 需要删除的场内计划排产信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAutomaticSchedulingOnSiteByIds(Long[] ids)
+    {
+        return automaticSchedulingOnSiteMapper.deleteAutomaticSchedulingOnSiteByIds(ids);
+    }
+
+    /**
+     * 删除场内计划排产信息信息
+     * 
+     * @param id 场内计划排产信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAutomaticSchedulingOnSiteById(Long id)
+    {
+        return automaticSchedulingOnSiteMapper.deleteAutomaticSchedulingOnSiteById(id);
+    }
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ExceptionReportInformationSheetServiceImpl.java

@@ -0,0 +1,96 @@
+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.ExceptionReportInformationSheetMapper;
+import com.zkqy.amichi.domain.ExceptionReportInformationSheet;
+import com.zkqy.amichi.service.IExceptionReportInformationSheetService;
+
+/**
+ * 异常报工日志Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-09-11
+ */
+@Service
+public class ExceptionReportInformationSheetServiceImpl implements IExceptionReportInformationSheetService 
+{
+    @Autowired
+    private ExceptionReportInformationSheetMapper exceptionReportInformationSheetMapper;
+
+    /**
+     * 查询异常报工日志
+     * 
+     * @param id 异常报工日志主键
+     * @return 异常报工日志
+     */
+    @Override
+    public ExceptionReportInformationSheet selectExceptionReportInformationSheetById(Long id)
+    {
+        return exceptionReportInformationSheetMapper.selectExceptionReportInformationSheetById(id);
+    }
+
+    /**
+     * 查询异常报工日志列表
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 异常报工日志
+     */
+    @Override
+    public List<ExceptionReportInformationSheet> selectExceptionReportInformationSheetList(ExceptionReportInformationSheet exceptionReportInformationSheet)
+    {
+        return exceptionReportInformationSheetMapper.selectExceptionReportInformationSheetList(exceptionReportInformationSheet);
+    }
+
+    /**
+     * 新增异常报工日志
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 结果
+     */
+    @Override
+    public int insertExceptionReportInformationSheet(ExceptionReportInformationSheet exceptionReportInformationSheet)
+    {
+        exceptionReportInformationSheet.setCreateTime(DateUtils.getNowDate());
+        return exceptionReportInformationSheetMapper.insertExceptionReportInformationSheet(exceptionReportInformationSheet);
+    }
+
+    /**
+     * 修改异常报工日志
+     * 
+     * @param exceptionReportInformationSheet 异常报工日志
+     * @return 结果
+     */
+    @Override
+    public int updateExceptionReportInformationSheet(ExceptionReportInformationSheet exceptionReportInformationSheet)
+    {
+        exceptionReportInformationSheet.setUpdateTime(DateUtils.getNowDate());
+        return exceptionReportInformationSheetMapper.updateExceptionReportInformationSheet(exceptionReportInformationSheet);
+    }
+
+    /**
+     * 批量删除异常报工日志
+     * 
+     * @param ids 需要删除的异常报工日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteExceptionReportInformationSheetByIds(Long[] ids)
+    {
+        return exceptionReportInformationSheetMapper.deleteExceptionReportInformationSheetByIds(ids);
+    }
+
+    /**
+     * 删除异常报工日志信息
+     * 
+     * @param id 异常报工日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteExceptionReportInformationSheetById(Long id)
+    {
+        return exceptionReportInformationSheetMapper.deleteExceptionReportInformationSheetById(id);
+    }
+}

+ 232 - 44
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ExportproductionschedulingServiceImpl.java

@@ -2,30 +2,31 @@ package com.zkqy.amichi.service.impl;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
 import java.util.stream.Collectors;
 
+import com.zkqy.amichi.domain.ProductionPlanningManagement;
 import com.zkqy.amichi.domain.ProductionTasks;
+import com.zkqy.amichi.domain.SchedulingProcessTime;
 import com.zkqy.amichi.domain.vo.ExportproductionschedulingArgumentVo;
 import com.zkqy.amichi.domain.vo.ProductionBomsDetailsVo;
 import com.zkqy.amichi.domain.vo.ProductionPlanningManagementVo;
-import com.zkqy.amichi.mapper.PlanTaskDetailsMapper;
-import com.zkqy.amichi.mapper.ProductionPlanningManagementMapper;
-import com.zkqy.amichi.mapper.ProductionTasksMapper;
+import com.zkqy.amichi.mapper.*;
+import com.zkqy.common.annotation.Excel;
 import com.zkqy.common.annotation.Log;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.domain.R;
 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.ExportproductionschedulingMapper;
 import com.zkqy.amichi.domain.Exportproductionscheduling;
 import com.zkqy.amichi.service.IExportproductionschedulingService;
 import org.springframework.transaction.annotation.Transactional;
+import reactor.core.publisher.Flux;
 
 /**
  * 外销排产Service业务层处理
@@ -48,6 +49,9 @@ public class ExportproductionschedulingServiceImpl implements IExportproductions
     @Autowired
     private ProductionPlanningManagementMapper productionPlanningManagementMapper;
 
+    @Autowired
+    private SchedulingProcessTimeMapper schedulingProcessTimeMapper;
+
     /**
      * 查询外销排产
      * @param id 外销排产主键
@@ -196,75 +200,259 @@ public class ExportproductionschedulingServiceImpl implements IExportproductions
      * @return
      */
     public AjaxResult exportSalesAutomaticScheduling(ExportproductionschedulingArgumentVo exportproductionschedulingVo){
-        System.out.println(exportproductionschedulingVo.getPlanIds());
+
+        //基础信息数据
+        LocalTime workStartTimeMorning = LocalTime.of(8, 0); // 上午上班时间
+        LocalTime workEndTimeMorning = LocalTime.of(12, 0); // 上午下班时间
+
+        LocalTime workStartTimeAfternoon = LocalTime.of(14, 0); // 下午上班时间
+        LocalTime workEndTimeAfternoon = LocalTime.of(18, 0); // 下午下班时间
+
+
         //拿到物料不全的订单号
         List<ProductionBomsDetailsVo> bomFormTableDataS = exportproductionschedulingVo.getBomFormTableDataS();
         //函数式接口(存放所有物料不够的订单号)
         Set<String> uniqueOrderNumbers = bomFormTableDataS.parallelStream()
-                .map(ProductionBomsDetailsVo::getOrderNumber)
-                .collect(Collectors.toSet());
+                    .map(ProductionBomsDetailsVo::getOrderNumber)
+                    .collect(Collectors.toSet());
         //set转成list集合
         List<String> uniqueOrderNumbersList = new ArrayList<>(uniqueOrderNumbers);
+
+        //根据排产类型查询工序工时信息
+        String schedulingType = exportproductionschedulingVo.getSchedulingType();
+        SchedulingProcessTime schedulingProcessTime=new SchedulingProcessTime();//排产数据对象
+        schedulingProcessTime.setSchedulingType(schedulingType);//排产类型
+        List<SchedulingProcessTime> schedulingProcessTimes = schedulingProcessTimeMapper.selectSchedulingProcessTimeList(schedulingProcessTime);
+        //收集为工序+时间信息Map(工序名称,工序时间)
+        Map<String, String> schedulingProcessTimesMap = schedulingProcessTimes.stream()
+                .collect(Collectors.toMap(SchedulingProcessTime::getSchedulingProcessName,SchedulingProcessTime::getSchedulingProcessTime));
         //根据id查询查询计划信息
         List<ProductionPlanningManagementVo> managementVoList = productionPlanningManagementMapper.selectProductionPlanningManagementListVoIn(exportproductionschedulingVo.getPlanIds());
-        managementVoList.parallelStream().forEach(item->{
+        managementVoList.stream().forEach(item->{
+            //排产对象
             Exportproductionscheduling exportproductionscheduling=new Exportproductionscheduling();
+            //判断这个计划是否产生了物料部齐全的问题 0全 1不全
             if(uniqueOrderNumbers.contains(item.getOrderNumber())){
                 //判断这个计划是否产生了物料部齐全的问题 0全 1不全
                 exportproductionscheduling.setMaterialNo("1");
             }
 
-            //下单日期
+            //下单日期(工单创建时间)
             exportproductionscheduling.setPlaceanorder(item.getPtcreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-            //发货日期等于完成时间+2天
-            System.out.println(item.getCompletionTime());
-            LocalDate completiontime = getLocalDateTime(item.getCompletionTime(),"yyyy-MM-dd");
-            LocalDate delivergoodsTime = completiontime.plusDays(2);
-            exportproductionscheduling.setDelivergoods(delivergoodsTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
             //到期提醒
             exportproductionscheduling.setRemind("");
-            //包装=就等于完成时间
-            exportproductionscheduling.setPacking(completiontime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-            //测机开关箱
-            LocalDate switchasTime = completiontime.minusDays(1);
-            exportproductionscheduling.setSwitchas(switchasTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-            //总装
-            LocalDate finalassemblyTime = switchasTime.minusDays(1);
-            exportproductionscheduling.setFinalassembly(finalassemblyTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-            //压装平衡
-            LocalDate balanceTime = finalassemblyTime.minusDays(1);
-            exportproductionscheduling.setBalance(balanceTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-            //浸漆
-            LocalDate paintTime = balanceTime.minusDays(1);
-            exportproductionscheduling.setPaint(paintTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+            //计划生产日期(这个将来是自己选的)
+            exportproductionscheduling.setPlannedProductionDate(item.getPtcreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+            //焊接:焊接的就是当天计划生产
+            exportproductionscheduling.setWelding(item.getPtcreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+            //绕嵌
+            int roundedHjTotalTime = getRoundedHjTotalTime(item.getQuantity(),"焊接工段", schedulingProcessTimesMap);//焊接需要的时间
+            int i2=roundedHjTotalTime / 8;
+            LocalDateTime hjEndTime = item.getPtcreateTime().plusDays(i2);//加上对应的----这个时间就是大约焊接完成的时间
+            //焊接完成开始下一个工序--->绕嵌工段
+            exportproductionscheduling.setRqgd(hjEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
             //线头绑扎
-            LocalDate threadheadTime = paintTime.minusDays(1);
-            exportproductionscheduling.setThreadhead(threadheadTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-            //绕嵌工段
-            LocalDate rqgdTime = threadheadTime.minusDays(1);
-            exportproductionscheduling.setRqgd(rqgdTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-            //焊接工段
-            LocalDate weldingTime = rqgdTime.minusDays(1);
-            exportproductionscheduling.setWelding(weldingTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-            //计划生产日期
-            exportproductionscheduling.setPlannedProductionDate(weldingTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+            int xqgdTotalTime = getRoundedHjTotalTime(item.getQuantity(),"绕嵌工段", schedulingProcessTimesMap);
+            int i3=xqgdTotalTime / 8;
+            LocalDateTime xqEndTime = hjEndTime.plusDays(i3);  //----计算的是 绕嵌工段 大概什么时候完成  --线绑开始时间
+            exportproductionscheduling.setThreadhead(xqEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //浸漆
+            int xbgdTotalTime = getRoundedHjTotalTime(item.getQuantity(),"线头绑扎", schedulingProcessTimesMap);
+            int i4=xbgdTotalTime / 8;
+            LocalDateTime xbEndTime = xqEndTime.plusDays(i4);  //----计算的是 线头绑扎 大概什么时候完成  --浸漆开始时间
+            exportproductionscheduling.setPaint(xbEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //压装平衡
+            int jQTotalTime = getRoundedHjTotalTime(item.getQuantity(),"浸漆", schedulingProcessTimesMap);
+            int i5=jQTotalTime / 8;
+            LocalDateTime jqEndTime = xbEndTime.plusDays(i5);  //----计算的是 浸漆 大概什么时候完成  -压装平衡开始时间
+            exportproductionscheduling.setBalance(jqEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //总装
+            int yaphTotaltime = getRoundedHjTotalTime(item.getQuantity(),"压装平衡", schedulingProcessTimesMap);
+            int i6=yaphTotaltime / 8;
+            LocalDateTime yzphEndTime = jqEndTime.plusDays(i6);  //----计算的是 浸漆 大概什么时候完成  -压装平衡开始时间
+            exportproductionscheduling.setFinalassembly(yzphEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //试机开关箱
+            int  sjkgxTotal= getRoundedHjTotalTime(item.getQuantity(),"试机开关箱", schedulingProcessTimesMap);
+            int i7=sjkgxTotal / 8;
+            LocalDateTime zkEndTime = yzphEndTime.plusDays(i7);  //----计算的是 浸漆 大概什么时候完成  -压装平衡开始时间
+            exportproductionscheduling.setSwitchas(zkEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //包装
+            int  bzTotalTime= getRoundedHjTotalTime(item.getQuantity(),"包装", schedulingProcessTimesMap);
+            int i8=bzTotalTime / 8;
+            LocalDateTime sjkgxEndTime = zkEndTime.plusDays(i8);  //
+            exportproductionscheduling.setPacking(sjkgxEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
             //这是什么类型的排产的数据(外销)
             exportproductionscheduling.setType(exportproductionschedulingVo.getSchedulingType());
+
             //订单号
             exportproductionscheduling.setOrderNo(item.getOrderNumber());
+
             //数量台
             exportproductionscheduling.setQuantity(item.getQuantity());
+            int processTime=roundedHjTotalTime+roundedHjTotalTime+xqgdTotalTime+xbgdTotalTime+jQTotalTime+yaphTotaltime+sjkgxTotal+bzTotalTime;
+
             //工时信息(当前订单需要耗费的总工时信息)
-            exportproductionscheduling.setPlanTotalWorkingHours(item.getSparea());
+            int totalProcessTime=processTime*Integer.parseInt(item.getQuantity());
+            exportproductionscheduling.setPlanTotalWorkingHours(String.valueOf(totalProcessTime));
+
+            //发货日期等于完成时间+2天
+            System.out.println(item.getCompletionTime());
+            LocalDateTime delivergoodsTime = sjkgxEndTime.plusDays(1);
+            exportproductionscheduling.setDelivergoods(delivergoodsTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
             //当前计划数据插入到排产数据中
             int i = exportproductionschedulingMapper.insertExportproductionscheduling(exportproductionscheduling);
         });
+
+//        managementVoList.stream().forEach(item->{
+//            Exportproductionscheduling exportproductionscheduling=new Exportproductionscheduling();
+//            if(uniqueOrderNumbers.contains(item.getOrderNumber())){
+//                //判断这个计划是否产生了物料部齐全的问题 0全 1不全
+//                exportproductionscheduling.setMaterialNo("1");
+//            }
+//            //下单日期(工单创建时间)
+//            exportproductionscheduling.setPlaceanorder(item.getPtcreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //发货日期等于完成时间+2天
+//            System.out.println(item.getCompletionTime());
+//            LocalDate completiontime = getLocalDateTime(item.getCompletionTime(),"yyyy-MM-dd");
+//            LocalDate delivergoodsTime = completiontime.plusDays(2);
+//            exportproductionscheduling.setDelivergoods(delivergoodsTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //到期提醒
+//            exportproductionscheduling.setRemind("");
+//            //包装=就等于完成时间
+//            exportproductionscheduling.setPacking(completiontime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //测机开关箱
+//            LocalDate switchasTime = completiontime.minusDays(1);
+//            exportproductionscheduling.setSwitchas(switchasTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //总装
+//            LocalDate finalassemblyTime = switchasTime.minusDays(1);
+//            exportproductionscheduling.setFinalassembly(finalassemblyTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //压装平衡
+//            LocalDate balanceTime = finalassemblyTime.minusDays(1);
+//            exportproductionscheduling.setBalance(balanceTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //浸漆
+//            LocalDate paintTime = balanceTime.minusDays(1);
+//            exportproductionscheduling.setPaint(paintTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //线头绑扎
+//            LocalDate threadheadTime = paintTime.minusDays(1);
+//            exportproductionscheduling.setThreadhead(threadheadTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //绕嵌工段
+//            LocalDate rqgdTime = threadheadTime.minusDays(1);
+//            exportproductionscheduling.setRqgd(rqgdTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //焊接工段
+//            LocalDate weldingTime = rqgdTime.minusDays(1);
+//            exportproductionscheduling.setWelding(weldingTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //计划生产日期
+//            exportproductionscheduling.setPlannedProductionDate(weldingTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+//            //这是什么类型的排产的数据(外销)
+//            exportproductionscheduling.setType(exportproductionschedulingVo.getSchedulingType());
+//            //订单号
+//            exportproductionscheduling.setOrderNo(item.getOrderNumber());
+//            //数量台
+//            exportproductionscheduling.setQuantity(item.getQuantity());
+//            //工时信息(当前订单需要耗费的总工时信息)
+//            exportproductionscheduling.setPlanTotalWorkingHours(item.getSparea());
+//            //当前计划数据插入到排产数据中
+//            System.err.println("1111111111111111111111");
+//            int i = exportproductionschedulingMapper.insertExportproductionscheduling(exportproductionscheduling);
+//      });
+
+        //更改计划的投产状态
+        exportproductionschedulingVo.getPlanIds().forEach(item->{
+            ProductionPlanningManagement productionPlanningManagement = new ProductionPlanningManagement();
+            productionPlanningManagement.setTaskStatus("0");
+            productionPlanningManagement.setId(Long.valueOf(item));
+            //改排产状态
+            productionPlanningManagementMapper.updateProductionPlanningManagement(productionPlanningManagement);
+        });
         //事务生效了
-//        int i=10/0;
+        //int i=10/0;
         //逻辑
         return  AjaxResult.success();
     }
 
+
+
+    public static boolean checkIfInteger(double value) {
+        // 检查 value 是否为整数
+        return value % 1 == 0;
+    }
+
+    public static LocalDateTime resetTimeToEightAM(LocalDateTime dateTime) {
+        // 重置时间为当天的早上8点
+        return dateTime.withHour(8).withMinute(0).withSecond(0).withNano(0);
+    }
+
+
+
+
+    public static LocalDateTime scheduleProductionTime(LocalDateTime currentTime, LocalTime workStartTimeMorning, LocalTime workEndTimeMorning, LocalTime workStartTimeAfternoon, LocalTime workEndTimeAfternoon) {
+        LocalDateTime adjustedTime = currentTime;
+
+        // 如果当前时间在上午上班时间之前,则调整到上午上班时间
+        if (currentTime.toLocalTime().isBefore(workStartTimeMorning)) {
+            adjustedTime = LocalDateTime.of(currentTime.toLocalDate(), workStartTimeMorning);
+        }
+        // 如果当前时间在上午下班时间之后,但又在下午上班时间之前,则调整到下午上班时间
+        else if (currentTime.toLocalTime().isAfter(workEndTimeMorning) && currentTime.toLocalTime().isBefore(workStartTimeAfternoon)) {
+            adjustedTime = LocalDateTime.of(currentTime.toLocalDate(), workStartTimeAfternoon);
+        }
+        // 如果当前时间在下午下班时间之后,则调整到第二天上午上班时间
+        else if (currentTime.toLocalTime().isAfter(workEndTimeAfternoon)) {
+            adjustedTime = LocalDateTime.of(currentTime.toLocalDate().plusDays(1), workStartTimeMorning);
+        }
+        return adjustedTime;
+    }
+
+    public static double calculateRemainingWorkHours(LocalTime planStartTime, LocalTime workEndTimeMorning, LocalTime workStartTimeAfternoon, LocalTime workEndTimeAfternoon) {
+        double remainingHours = 0.0;
+        // 计算上午剩余工时
+        if (planStartTime.isBefore(workEndTimeMorning)) {
+            remainingHours += ChronoUnit.HOURS.between(planStartTime, workEndTimeMorning);
+        }
+        // 计算下午剩余工时
+        if (planStartTime.isBefore(workEndTimeAfternoon)) {
+            if (planStartTime.isBefore(workStartTimeAfternoon)) {
+                remainingHours += ChronoUnit.HOURS.between(workStartTimeAfternoon, workEndTimeAfternoon);
+            } else {
+                remainingHours += ChronoUnit.HOURS.between(planStartTime, workEndTimeAfternoon);
+            }
+        }
+        return remainingHours;
+    }
+    /**
+     * 计划数量
+     * 工序名称
+     * @param quantity
+     * @param processName
+     * @param schedulingProcessTimesMap
+     * @return
+     */
+    private static int getRoundedHjTotalTime(String quantity,String processName, Map<String, String> schedulingProcessTimesMap) {
+        //焊接工段(查询一个产品需要的工序时间)
+        String hjProcess= schedulingProcessTimesMap.get(processName);
+        double hjTotalTime=Double.parseDouble(hjProcess)*Double.parseDouble(quantity);
+        //检查是否有小数部分
+        int roundedHjTotalTime = hjTotalTime % 1 == 0 ? (int) hjTotalTime: (int) hjTotalTime + 1;
+        return roundedHjTotalTime;
+    }
+
     private LocalDate getLocalDateTime(String dateTime, String df){
         return DateUtils.toLocalDate(dateTime,df);
     }

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

@@ -269,7 +269,6 @@ public class MaterialInfoServiceImpl implements IMaterialInfoService
             successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条");
             return successMsg.toString();
         }
-
     }
 
     @Override

+ 486 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/OnSiteProgramDetailsServiceImpl.java

@@ -0,0 +1,486 @@
+package com.zkqy.amichi.service.impl;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
+
+import cn.hutool.core.date.DateTime;
+import com.zkqy.amichi.domain.*;
+import com.zkqy.amichi.domain.vo.*;
+import com.zkqy.amichi.mapper.*;
+import com.zkqy.amichi.service.IManhourService;
+import com.zkqy.amichi.utils.AmichiCommissionNumberGenerator;
+import com.zkqy.amichi.utils.PurchaseNumberGenerator;
+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.service.IOnSiteProgramDetailsService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 场内计划详情crudService业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-08-06
+ */
+@Service
+public class OnSiteProgramDetailsServiceImpl implements IOnSiteProgramDetailsService 
+{
+    @Autowired
+    private OnSiteProgramDetailsMapper onSiteProgramDetailsMapper;
+
+    @Autowired
+    private ProductionPlanningManagementMapper productionPlanningManagementMapper;
+
+    @Autowired
+    private AmichiCommissionNumberGenerator amichiCommissionNumberGenerator;
+
+    @Autowired
+    private SemiFinishedMaterialListMapper semiFinishedMaterialListMapper;
+
+    @Autowired
+    //插入工时信息
+    IManhourService manhourService;
+
+    @Autowired
+    AutomaticSchedulingOnSiteMapper automaticSchedulingOnSiteMapper;
+
+    @Autowired
+    PurchaseNumberGenerator purchaseNumberGenerator;
+
+    @Autowired
+    PurchaseOrderMapper purchaseOrderMapper;
+
+    @Autowired
+    PocurementdetailsMapper pocurementdetailsMapper;
+
+    @Autowired
+    private SchedulingProcessTimeMapper schedulingProcessTimeMapper;
+
+
+    /**
+     * 查询场内计划详情crud
+     * 
+     * @param id 场内计划详情crud主键
+     * @return 场内计划详情crud
+     */
+    @Override
+    public OnSiteProgramDetails selectOnSiteProgramDetailsById(Long id)
+    {
+        return onSiteProgramDetailsMapper.selectOnSiteProgramDetailsById(id);
+    }
+
+    /**
+     * 查询场内计划详情crud列表
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 场内计划详情crud
+     */
+    @Override
+    public List<OnSiteProgramDetails> selectOnSiteProgramDetailsList(OnSiteProgramDetails onSiteProgramDetails)
+    {
+        return onSiteProgramDetailsMapper.selectOnSiteProgramDetailsList(onSiteProgramDetails);
+    }
+
+    /**
+     * 新增场内计划详情crud
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 结果
+     */
+    @Override
+    public int insertOnSiteProgramDetails(OnSiteProgramDetails onSiteProgramDetails)
+    {
+        onSiteProgramDetails.setCreateTime(DateUtils.getNowDate());
+        return onSiteProgramDetailsMapper.insertOnSiteProgramDetails(onSiteProgramDetails);
+    }
+
+    /**
+     * 修改场内计划详情crud
+     * 
+     * @param onSiteProgramDetails 场内计划详情crud
+     * @return 结果
+     */
+    @Override
+    public int updateOnSiteProgramDetails(OnSiteProgramDetails onSiteProgramDetails)
+    {
+        onSiteProgramDetails.setUpdateTime(DateUtils.getNowDate());
+        return onSiteProgramDetailsMapper.updateOnSiteProgramDetails(onSiteProgramDetails);
+    }
+
+    /**
+     * 批量删除场内计划详情crud
+     * 
+     * @param ids 需要删除的场内计划详情crud主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOnSiteProgramDetailsByIds(Long[] ids)
+    {
+        //传递过来的是计划id
+        for (Long id : ids) {
+            productionPlanningManagementMapper.deleteProductionPlanningManagementById(id);//删除计划信息
+            //删除关于这个物料的详细信息
+            onSiteProgramDetailsMapper.deleteOnSiteProgramDetailsByPlanid(id.toString());
+        }
+        return 1;
+    }
+
+    /**
+     * 删除场内计划详情crud信息
+     * 
+     * @param id 场内计划详情crud主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOnSiteProgramDetailsById(Long id)
+    {
+        return onSiteProgramDetailsMapper.deleteOnSiteProgramDetailsById(id);
+    }
+
+    @Override
+    @Transactional
+    public int insertOnSiteProgramDetailsVo(OnSiteProgramDetailsVo onSiteProgramDetailsVo) {
+        //插入计划信息
+        ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
+        productionPlanningManagement.setQuantity(onSiteProgramDetailsVo.getQuantity().toString());//数量
+        productionPlanningManagement.setPlanType("1");//场内还是厂外
+        productionPlanningManagement.setRemark(onSiteProgramDetailsVo.getRemark());//备注
+        String localDateStr = DateUtils.toLocalDateStr(onSiteProgramDetailsVo.getCompletionTime());
+        productionPlanningManagement.setCompletionTime(localDateStr);//完成时间
+        productionPlanningManagement.setTaskStatus("2");//待排产
+        //生成计划编号
+        String s = amichiCommissionNumberGenerator.generateCommissionNumber();
+        //计划编号
+        productionPlanningManagement.setPlanNumber(s);
+        AtomicReference<Double> totalHour= new AtomicReference<>(0.0);
+        AtomicReference<Boolean> booleanAtomicReference=new AtomicReference<>(true);
+        onSiteProgramDetailsVo.getOnSiteProgramDetails().forEach(item->{
+            //查询物料工时,
+            Manhour manhour=new Manhour();
+            manhour.setProductCode(item.getItemCode());
+            manhour.setProductModel(item.getModelMumber());
+            manhour.setProductSpecification(item.getSpecification());
+            List<Manhour> manhours = manhourService.selectManhourList(manhour);
+            if(manhours.size()>0){
+                totalHour.set(totalHour.get()+Double.parseDouble(manhours.get(0).getManhourspent()));
+            }
+            //这里是不能计算这个物流是否齐全的,如果说有的订单生产比他早那么就只能是他物料不齐全,不能是排在前边那个待生产的订单因为物料问题不能生产.
+            SemiFinishedMaterialList semiFinishedMaterialList=new SemiFinishedMaterialList();
+            semiFinishedMaterialList.setFid(item.getItemId().toString());
+            List<SemiFinishedMaterialListAndMaterialInventory> semiFinishedMaterialListAndMaterialInventories = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListJoinMaterialInventory(semiFinishedMaterialList);
+            List<SemiFinishedMaterialListAndMaterialInventory> collect = semiFinishedMaterialListAndMaterialInventories.stream()
+                    .filter(a -> Double.parseDouble(a.getStockQuantity().toString()) < (Double.parseDouble(a.getAmountOfMateria())*item.getQuantity())).collect(Collectors.toList());
+            if(collect.size()>0){
+                booleanAtomicReference.set(false);
+            }
+        });
+        if(booleanAtomicReference.get()==false){
+            productionPlanningManagement.setSpareb("1");//物料是否齐全
+        }else {
+            productionPlanningManagement.setSpareb("0");//物料是否齐全
+        }
+        productionPlanningManagement.setSparea(totalHour.get().toString());//总功工时信息
+        //先不锁定物料信息(先判定这条计划物料是否完整)
+
+        //插入计划详情信息
+        int i = productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
+        onSiteProgramDetailsVo.getOnSiteProgramDetails().forEach(item->{
+            //插入计划详情信息
+            item.setPlanId(productionPlanningManagement.getId().toString());//计划号
+            onSiteProgramDetailsMapper.insertOnSiteProgramDetails(item);
+        });
+        return 1;
+    }
+
+    @Override
+    public List<OnSiteProgramDetailsVo> getOnSiteProgramDetailsInfoVo(ProductionPlanningManagementVo productionPlanningManagementVo) {
+        //查询计划类型plan_type=1的信息
+        ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
+        productionPlanningManagement.setPlanType(productionPlanningManagementVo.getPlanType());//计划类型为1
+        List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement);
+        List<OnSiteProgramDetailsVo> collect = productionPlanningManagements.stream().map(item -> {
+            OnSiteProgramDetailsVo onSiteProgramDetailsVo = new OnSiteProgramDetailsVo();
+            onSiteProgramDetailsVo.setQuantity(Integer.valueOf(item.getQuantity())); //数量
+            onSiteProgramDetailsVo.setRemark(item.getRemark());//备注
+            LocalDate localDate = DateUtils.toLocalDate(item.getCompletionTime().toString(), "yyyy-MM-dd");
+            onSiteProgramDetailsVo.setCompletionTime(localDate); //完成时间
+            onSiteProgramDetailsVo.setPlanNumber(item.getPlanNumber());//计划编号
+            onSiteProgramDetailsVo.setTaskStatus(item.getTaskStatus());//投产状态
+            onSiteProgramDetailsVo.setId(item.getId().toString());//计划id;
+            //计划详细信息
+            OnSiteProgramDetails onSiteProgramDetails = new OnSiteProgramDetails();
+            onSiteProgramDetails.setPlanId(item.getId().toString());//计划id
+            List<OnSiteProgramDetails> onSiteProgramDetails1 = onSiteProgramDetailsMapper.selectOnSiteProgramDetailsList(onSiteProgramDetails);
+            onSiteProgramDetailsVo.setOnSiteProgramDetails(onSiteProgramDetails1);
+            return onSiteProgramDetailsVo;
+        }).collect(Collectors.toList());
+        return collect;
+    }
+
+    @Override
+    public OnSiteProgramDetailsVo selectOnSiteProgramDetailsVoById(Long id) {
+        //查询计划类型plan_type=1的信息
+        ProductionPlanningManagement productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementById(id);
+        OnSiteProgramDetailsVo onSiteProgramDetailsVo = new OnSiteProgramDetailsVo();
+        onSiteProgramDetailsVo.setQuantity(Integer.valueOf(productionPlanningManagements.getQuantity())); //数量
+        onSiteProgramDetailsVo.setRemark(productionPlanningManagements.getRemark());//备注
+        LocalDate localDate = DateUtils.toLocalDate(productionPlanningManagements.getCompletionTime().toString(), "yyyy-MM-dd");
+        onSiteProgramDetailsVo.setCompletionTime(localDate); //完成时间
+        onSiteProgramDetailsVo.setPlanNumber(productionPlanningManagements.getPlanNumber());//计划编号
+        onSiteProgramDetailsVo.setTaskStatus(productionPlanningManagements.getTaskStatus());//投产状态
+        onSiteProgramDetailsVo.setId(productionPlanningManagements.getId().toString());//计划id;
+        //计划详细信息
+        OnSiteProgramDetails onSiteProgramDetails = new OnSiteProgramDetails();
+        onSiteProgramDetails.setPlanId(productionPlanningManagements.getId().toString());//计划id
+        List<OnSiteProgramDetails> onSiteProgramDetails1 = onSiteProgramDetailsMapper.selectOnSiteProgramDetailsList(onSiteProgramDetails);
+        onSiteProgramDetailsVo.setOnSiteProgramDetails(onSiteProgramDetails1);
+        return onSiteProgramDetailsVo;
+    }
+
+    @Override
+    public int editOnSiteProgramDetailsAndProductionPlanning(OnSiteProgramDetailsVo onSiteProgramDetails) {
+        //查询计划类型plan_type=1的信息
+        ProductionPlanningManagement productionPlanningManagements =new ProductionPlanningManagement();
+        productionPlanningManagements.setQuantity(onSiteProgramDetails.getQuantity().toString());//数量
+        productionPlanningManagements.setRemark(onSiteProgramDetails.getRemark());//备注
+        productionPlanningManagements.setCompletionTime(productionPlanningManagements.getCompletionTime()); //完成时间
+        productionPlanningManagements.setId(Long.valueOf(onSiteProgramDetails.getId()));
+        int i = productionPlanningManagementMapper.updateProductionPlanningManagement(productionPlanningManagements);
+        //删除
+        onSiteProgramDetailsMapper.deleteOnSiteProgramDetailsByPlanid(onSiteProgramDetails.getId());
+        //循环新增
+        onSiteProgramDetails.getOnSiteProgramDetails().forEach(item->{
+            //插入计划详情信息
+            item.setPlanId(onSiteProgramDetails.getId());//计划id
+            item.setId(null);
+            onSiteProgramDetailsMapper.insertOnSiteProgramDetails(item);
+        });
+        return 1;
+    }
+
+    @Override
+    public List<OnSiteProgramDetails> selectOnSiteProgramDetailsListInPlanId(List<String> ids) {
+       return onSiteProgramDetailsMapper.selectOnSiteProgramDetailsListInPlanId(ids);
+    }
+
+    /**
+     * A计划
+     *     产品    A需要   10个
+     * B计划
+     *     产品    B需要
+     * @param stringIds
+     * @return
+     */
+    @Override
+    @Transactional
+    public int inPlanAutomaticScheduling(List<String> stringIds) {
+        List<ProductionPlanningManagementVo> managementVoList = productionPlanningManagementMapper.selectProductionPlanningManagementListVoIn(stringIds);
+
+        //根据排产类型查询工序工时信息
+        SchedulingProcessTime schedulingProcessTime=new SchedulingProcessTime();//排产数据对象
+        schedulingProcessTime.setSchedulingType("3");//排产类型
+        List<SchedulingProcessTime> schedulingProcessTimes = schedulingProcessTimeMapper.selectSchedulingProcessTimeList(schedulingProcessTime);
+        //收集为工序+时间信息Map(工序名称,工序时间)
+        Map<String, String> schedulingProcessTimesMap = schedulingProcessTimes.stream()
+                .collect(Collectors.toMap(SchedulingProcessTime::getSchedulingProcessName,SchedulingProcessTime::getSchedulingProcessTime));
+        //插入场内排产信息
+        managementVoList.stream().forEach(item->{
+            AutomaticSchedulingOnSite automaticSchedulingOnSite=new AutomaticSchedulingOnSite();
+            automaticSchedulingOnSite.setWorkmanship(item.getPlanNumber());//计划编号
+            automaticSchedulingOnSite.setQuantity(item.getQuantity());//数量台
+
+            automaticSchedulingOnSite.setPlanstarttime(item.getCompletionTime());//计划开始时间  ---不对应没关系!懒的改了
+
+
+            automaticSchedulingOnSite.setReminder("");//到期提醒
+
+            //焊接
+            LocalDate localDate = DateUtils.toLocalDate(item.getCompletionTime(), "yyyy-MM-dd");
+            automaticSchedulingOnSite.setWeld(localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+            //线嵌
+            int  hjTotalTime= getRoundedHjTotalTime(item.getQuantity(),"焊接工段", schedulingProcessTimesMap);
+            int i1=hjTotalTime / 8;
+            LocalDateTime xqGdStartTime = localDate.plusDays(i1).atStartOfDay();
+            automaticSchedulingOnSite.setLineEmbedding(xqGdStartTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //线头绑扎
+            int  rqgdTotalTime= getRoundedHjTotalTime(item.getQuantity(),"绕嵌工段", schedulingProcessTimesMap);
+            int i2=rqgdTotalTime / 8;
+            LocalDateTime xtbzStartTime = xqGdStartTime.plusDays(i2);
+            automaticSchedulingOnSite.setWireBinding(xtbzStartTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //浸漆
+            int  xtbzTotalTime= getRoundedHjTotalTime(item.getQuantity(),"线头绑扎", schedulingProcessTimesMap);
+            int i3=xtbzTotalTime / 8;
+            LocalDateTime jqStartTime = xtbzStartTime.plusDays(i3);
+            automaticSchedulingOnSite.setVarnish(jqStartTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //压装平衡
+            int  jqTotalTime= getRoundedHjTotalTime(item.getQuantity(),"浸漆", schedulingProcessTimesMap);
+            int i4=jqTotalTime / 8;
+            LocalDateTime yzphStartTime = jqStartTime.plusDays(i4);
+            automaticSchedulingOnSite.setPressFitBalance(yzphStartTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+            //总装
+            int  yzphTotalTime= getRoundedHjTotalTime(item.getQuantity(),"压装平衡", schedulingProcessTimesMap);
+            int i5=yzphTotalTime / 8;
+            LocalDateTime zzStartTime = yzphStartTime.plusDays(i5);
+            automaticSchedulingOnSite.setFinalAssembly(zzStartTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+
+
+            //试机开关箱
+            int  zzTotalTime= getRoundedHjTotalTime(item.getQuantity(),"总装", schedulingProcessTimesMap);
+            int i6=zzTotalTime / 8;
+            LocalDateTime sjkgxStringTime = zzStartTime.plusDays(i6);
+            automaticSchedulingOnSite.setSwitching(sjkgxStringTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+            //包装
+            int  sjkgxTotalTime= getRoundedHjTotalTime(item.getQuantity(),"试机开关箱", schedulingProcessTimesMap);
+            int i7=sjkgxTotalTime / 8;
+            LocalDateTime bzStringTime = sjkgxStringTime.plusDays(i7);
+            automaticSchedulingOnSite.setPackageIng(bzStringTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+            //完成时间
+            int  bgTotalTime= getRoundedHjTotalTime(item.getQuantity(),"包装", schedulingProcessTimesMap);
+            int i8=sjkgxTotalTime / 8;
+            LocalDateTime days = bzStringTime.plusDays(i8);
+            LocalDateTime days1 = days.plusDays(1);
+            automaticSchedulingOnSite.setCompletiontime(days.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));//现在还是空的
+
+            //物料工时信息
+            automaticSchedulingOnSite.setMaterialNo(item.getSpareb());//物料是否齐全
+            int totalTime=hjTotalTime+rqgdTotalTime+xtbzTotalTime+jqTotalTime+yzphTotalTime+zzTotalTime+sjkgxTotalTime+bgTotalTime;
+            automaticSchedulingOnSite.setManHour(String.valueOf(totalTime));//工时信息
+
+
+            automaticSchedulingOnSite.setCreateTime(new DateTime());//创建时间
+            automaticSchedulingOnSite.setCreateById(SecurityUtils.getUserId());//创建人id
+            automaticSchedulingOnSite.setCreateBy(SecurityUtils.getUsername());//创建人姓名
+
+            //插入场内计划信息
+            automaticSchedulingOnSiteMapper.insertAutomaticSchedulingOnSite(automaticSchedulingOnSite);
+        });
+        //更改计划的投产状态
+        stringIds.forEach(item->{
+            ProductionPlanningManagement productionPlanningManagement = new ProductionPlanningManagement();
+            productionPlanningManagement.setTaskStatus("0");
+            productionPlanningManagement.setId(Long.valueOf(item));
+            //改排产状态
+            productionPlanningManagementMapper.updateProductionPlanningManagement(productionPlanningManagement);
+        });
+
+        //查看那些物料是不全的 生成一个采购单(查询这些计划所有的产品信息)
+//        List<OnSiteProgramDetailsSumVo> onSiteProgramDetails = onSiteProgramDetailsMapper.selectOnSiteProgramDetailsListInPlanIdPacketCalculationSum(stringIds);
+//        List<String> wlIds = onSiteProgramDetails.stream().map(OnSiteProgramDetails::getItemId).map(String::valueOf).collect(Collectors.toList());
+        //所有计划的物料单
+        List<SemiFinishedMaterialListAndMaterialInventory> semiFinishedMaterialListAndMaterialInventories = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListJoinMaterialInventoryInFid(stringIds);
+        //过滤出来那些物料不够需要添加到采购单里的
+        //创建采购单
+        PurchaseOrder purchaseOrder=new PurchaseOrderVo();
+        String s = purchaseNumberGenerator.generatePurchaseNumber();
+        purchaseOrder.setNumber(s);//采购编号
+        purchaseOrder.setApply("铨一科技");
+        purchaseOrder.setCurrency("人民币");//默认是人民币
+        purchaseOrder.setDepartment("生产部门");
+        purchaseOrder.setTotal(0.0);
+        purchaseOrder.setApplypeople(SecurityUtils.getUsername());//申请人
+        purchaseOrder.setState("3");//状态为0待发起
+        purchaseOrder.setApplytime(LocalDate.now());//申请时间
+        purchaseOrder.setCreateBy(SecurityUtils.getUsername());//创建人
+        purchaseOrder.setCreatepeople(SecurityUtils.getUsername());//创建人
+        purchaseOrder.setDelFlag("0");
+        purchaseOrder.setCreateTime(new DateTime());//创建是时间
+        int i = purchaseOrderMapper.insertPurchaseOrder(purchaseOrder);
+        List<Pocurementdetails> pocurementdetailsArrayList=new ArrayList<>();
+        //========添加采购计划详情信息=================================
+        semiFinishedMaterialListAndMaterialInventories.stream().forEach(item->{
+            Pocurementdetails pocurementdetails=new Pocurementdetails();
+            pocurementdetails.setDelFlag("0");
+            pocurementdetails.setPurchaseId(purchaseOrder.getId().toString());//采购单id
+            pocurementdetails.setOrganization("铨一科技");
+            pocurementdetails.setDemand("生产部门");
+            pocurementdetails.setMaterialnum(item.getMaterialCode());//物料编码
+            pocurementdetails.setMaterialname(item.getMaterialName());//物料名称
+            pocurementdetails.setModel(item.getModelNumber()+"/"+item.getSpecification());//规格型号
+            pocurementdetails.setCompany("单位");
+            Double v1 = Double.parseDouble(item.getAmountOfMateria().toString()) - Double.parseDouble(item.getStockQuantity().toString());
+            pocurementdetails.setQuantity(String.valueOf(v1));//需要采购的数量
+            pocurementdetailsArrayList.add(pocurementdetails);//添加集合
+        });
+        if(pocurementdetailsArrayList.size()>0){
+            int i1 = pocurementdetailsMapper.insertPocurementdetailsBatch(pocurementdetailsArrayList);
+        }
+        //处理何必逻辑
+        //更改排产计划信息
+//        List<OnSiteProgramDetails> onSiteProgramDetails = onSiteProgramDetailsMapper.selectOnSiteProgramDetailsListInPlanId(stringIds);
+//        List<SemiFinishedMaterialListAndMaterialInventory> allSemiFinishedMaterialListAndMaterialInventory =new ArrayList<>();
+//        onSiteProgramDetails.stream().forEach(item->{
+//            SemiFinishedMaterialList materialList=new SemiFinishedMaterialList();
+//            materialList.setFid(item.getItemId().toString());
+//            List<SemiFinishedMaterialListAndMaterialInventory> semiFinishedMaterialListAndMaterialInventories = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListJoinMaterialInventory(materialList);
+//            //有很多的物料信息(把那些物料不足的给过滤出来)
+//            List<SemiFinishedMaterialListAndMaterialInventory> collect = semiFinishedMaterialListAndMaterialInventories.stream()
+//                    .filter(s -> Double.parseDouble(s.getStockQuantity().toString()) < Double.parseDouble(s.getAmountOfMateria())).map(a->{
+//                        a.setPlanId(item.getPlanId());
+//                        return a;
+//                    }).collect(Collectors.toList());
+//            allSemiFinishedMaterialListAndMaterialInventory.addAll(collect);
+//        });
+//        List<String> collect = allSemiFinishedMaterialListAndMaterialInventory.stream().map(SemiFinishedMaterialListAndMaterialInventory::getPlanId).collect(Collectors.toList());
+//        managementVoList.stream().forEach(item->{
+//            if(collect.contains(item.getId())){
+//                //证明物料不全
+//                AutomaticSchedulingOnSite automaticSchedulingOnSite=new AutomaticSchedulingOnSite();
+//                automaticSchedulingOnSite.setCompletiontime(item.getCompletiontime());//完成时间
+//                automaticSchedulingOnSite.setCreateTime(new DateTime());//创建时间
+//                automaticSchedulingOnSite.setCreateById(SecurityUtils.getUserId());//创建人id
+//                automaticSchedulingOnSite.setCreateBy(SecurityUtils.getUsername());//创建人姓名
+//                automaticSchedulingOnSite.setWorkmanship(item.getPlanNumber());//计划编号
+//                automaticSchedulingOnSite.setMaterialNo("1");
+//                automaticSchedulingOnSite.setManHour(item.getSparea());//工时信息
+//                automaticSchedulingOnSiteMapper.insertAutomaticSchedulingOnSite(automaticSchedulingOnSite);
+//            }else {
+//                //证明物料全
+//                AutomaticSchedulingOnSite automaticSchedulingOnSite=new AutomaticSchedulingOnSite();
+//                automaticSchedulingOnSite.setCompletiontime(item.getCompletiontime());//完成时间
+//                automaticSchedulingOnSite.setCreateTime(new DateTime());//创建时间
+//                automaticSchedulingOnSite.setCreateById(SecurityUtils.getUserId());//创建人id
+//                automaticSchedulingOnSite.setCreateBy(SecurityUtils.getUsername());//创建人姓名
+//                automaticSchedulingOnSite.setWorkmanship(item.getPlanNumber());//计划编号
+//                automaticSchedulingOnSite.setMaterialNo("0");
+//                automaticSchedulingOnSite.setManHour(item.getSparea());//工时信息
+//                automaticSchedulingOnSiteMapper.insertAutomaticSchedulingOnSite(automaticSchedulingOnSite);
+//            }
+//        });
+        return 1;
+    }
+
+    /**
+     * 计划数量
+     * 工序名称
+     * @param quantity
+     * @param processName
+     * @param schedulingProcessTimesMap
+     * @return
+     */
+    private static int getRoundedHjTotalTime(String quantity,String processName, Map<String, String> schedulingProcessTimesMap) {
+        //焊接工段(查询一个产品需要的工序时间)
+        String hjProcess= schedulingProcessTimesMap.get(processName);
+        double hjTotalTime=Double.parseDouble(hjProcess)*Double.parseDouble(quantity);
+        //检查是否有小数部分
+        int roundedHjTotalTime = hjTotalTime % 1 == 0 ? (int) hjTotalTime: (int) hjTotalTime + 1;
+        return roundedHjTotalTime;
+    }
+
+}

+ 129 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionCardFlowServiceImpl.java

@@ -0,0 +1,129 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.zkqy.amichi.domain.vo.GenerateProcessFlowCardVo;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.ProductionCardFlowMapper;
+import com.zkqy.amichi.domain.ProductionCardFlow;
+import com.zkqy.amichi.service.IProductionCardFlowService;
+
+/**
+ * 工序流转卡流水Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-09-19
+ */
+@Service
+public class ProductionCardFlowServiceImpl implements IProductionCardFlowService 
+{
+    @Autowired
+    private ProductionCardFlowMapper productionCardFlowMapper;
+
+    /**
+     * 查询工序流转卡流水
+     * 
+     * @param id 工序流转卡流水主键
+     * @return 工序流转卡流水
+     */
+    @Override
+    public ProductionCardFlow selectProductionCardFlowById(Long id)
+    {
+        return productionCardFlowMapper.selectProductionCardFlowById(id);
+    }
+
+    /**
+     * 查询工序流转卡流水列表
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 工序流转卡流水
+     */
+    @Override
+    public List<ProductionCardFlow> selectProductionCardFlowList(ProductionCardFlow productionCardFlow)
+    {
+        return productionCardFlowMapper.selectProductionCardFlowList(productionCardFlow);
+    }
+
+    /**
+     * 新增工序流转卡流水
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 结果
+     */
+    @Override
+    public int insertProductionCardFlow(ProductionCardFlow productionCardFlow)
+    {
+        productionCardFlow.setCreateTime(DateUtils.getNowDate());
+        return productionCardFlowMapper.insertProductionCardFlow(productionCardFlow);
+    }
+
+    /**
+     * 修改工序流转卡流水
+     * 
+     * @param productionCardFlow 工序流转卡流水
+     * @return 结果
+     */
+    @Override
+    public int updateProductionCardFlow(ProductionCardFlow productionCardFlow)
+    {
+        productionCardFlow.setUpdateTime(DateUtils.getNowDate());
+        return productionCardFlowMapper.updateProductionCardFlow(productionCardFlow);
+    }
+
+    /**
+     * 批量删除工序流转卡流水
+     * 
+     * @param ids 需要删除的工序流转卡流水主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductionCardFlowByIds(Long[] ids)
+    {
+        return productionCardFlowMapper.deleteProductionCardFlowByIds(ids);
+    }
+
+    /**
+     * 删除工序流转卡流水信息
+     * 
+     * @param id 工序流转卡流水主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductionCardFlowById(Long id)
+    {
+        return productionCardFlowMapper.deleteProductionCardFlowById(id);
+    }
+
+    /**
+     * 生成工序流转卡信息
+     * @param generateProcessFlowCardVo
+     * @return
+     */
+    @Override
+    public int generateProcessFlowCard(GenerateProcessFlowCardVo generateProcessFlowCardVo) {
+        List<ProductionCardFlow> productionCardFlows=new ArrayList<>();
+        // 生成序列号并填充 ProductionCardFlow 对象
+            int sequenceStart = 1; // 序列号起始值
+            for (int i = 0; i < generateProcessFlowCardVo.getQuantity().length(); i++) {
+                String sequenceNumber = String.format("%03d", sequenceStart + i);
+                ProductionCardFlow productionCardFlow=new ProductionCardFlow();
+                productionCardFlow.setSerialNumber(generateProcessFlowCardVo.getDemandDocumentNumber()+sequenceNumber);//序列号
+                productionCardFlow.setDemandDocumentNumber(generateProcessFlowCardVo.getDemandDocumentNumber());//需求单据号
+                productionCardFlow.setProductionOrderListId(generateProcessFlowCardVo.getProductionOrderListId());//订单id
+                productionCardFlow.setPrintQuantity("0");//打印数量
+                productionCardFlows.add(productionCardFlow);//对象放到集合中
+            }
+        //批量插入数据
+        int i = productionCardFlowMapper.insertProductionCardFlowBatch(productionCardFlows);
+        return i;
+    }
+
+    public static void main(String[] args) {
+        int i=001;
+        int b=001+1;
+        System.out.println(b);
+    }
+}

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

@@ -0,0 +1,98 @@
+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.ProductionOrderListMapper;
+import com.zkqy.amichi.domain.ProductionOrderList;
+import com.zkqy.amichi.service.IProductionOrderListService;
+
+/**
+ * 生产订单列Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-09-19
+ */
+@Service
+public class ProductionOrderListServiceImpl implements IProductionOrderListService 
+{
+
+    @Autowired
+    private ProductionOrderListMapper productionOrderListMapper;
+
+    /**
+     * 查询生产订单列
+     * 
+     * @param id 生产订单列主键
+     * @return 生产订单列
+     */
+    @Override
+    public ProductionOrderList selectProductionOrderListById(Long id)
+    {
+        return productionOrderListMapper.selectProductionOrderListById(id);
+    }
+
+    /**
+     * 查询生产订单列列表
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 生产订单列
+     */
+    @Override
+    public List<ProductionOrderList> selectProductionOrderListList(ProductionOrderList productionOrderList)
+    {
+        return productionOrderListMapper.selectProductionOrderListList(productionOrderList);
+    }
+
+    /**
+     * 新增生产订单列
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 结果
+     */
+    @Override
+    public int insertProductionOrderList(ProductionOrderList productionOrderList)
+    {
+        productionOrderList.setCreateTime(DateUtils.getNowDate());
+        productionOrderList.setTaskNodeKey("0");//未生成工序流转卡
+        return productionOrderListMapper.insertProductionOrderList(productionOrderList);
+    }
+
+    /**
+     * 修改生产订单列
+     * 
+     * @param productionOrderList 生产订单列
+     * @return 结果
+     */
+    @Override
+    public int updateProductionOrderList(ProductionOrderList productionOrderList)
+    {
+        productionOrderList.setUpdateTime(DateUtils.getNowDate());
+        return productionOrderListMapper.updateProductionOrderList(productionOrderList);
+    }
+
+    /**
+     * 批量删除生产订单列
+     * 
+     * @param ids 需要删除的生产订单列主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductionOrderListByIds(Long[] ids)
+    {
+        return productionOrderListMapper.deleteProductionOrderListByIds(ids);
+    }
+
+    /**
+     * 删除生产订单列信息
+     * 
+     * @param id 生产订单列主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductionOrderListById(Long id)
+    {
+        return productionOrderListMapper.deleteProductionOrderListById(id);
+    }
+}

+ 4 - 4
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/PurchaseOrderServiceImpl.java

@@ -267,7 +267,7 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService
         //申请部门
         purchaseOrderVo.setDepartment("生产计划部");
         //合计金额
-        purchaseOrderVo.setTotal(0L);
+        purchaseOrderVo.setTotal(0.0);
         //备注
         purchaseOrderVo.setRemark("");
         //申请人
@@ -277,9 +277,9 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService
         //插入采购信息
         int i1 = purchaseOrderMapper.insertPurchaseOrder(purchaseOrderVo);
         //添加采购详情
-        purchaseOrderList.forEach(item->{
-
-        });
+//        purchaseOrderList.forEach(item->{
+//
+//        });
         //插入采购详情信息
         return 0;
     }

+ 184 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ReportInformationSheetServiceImpl.java

@@ -0,0 +1,184 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+import java.util.Optional;
+
+import com.zkqy.amichi.domain.ProductionPlanningManagement;
+import com.zkqy.amichi.domain.StationInformation;
+import com.zkqy.amichi.mapper.ProductionPlanningManagementMapper;
+import com.zkqy.amichi.mapper.StationInformationMapper;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeLog;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteProcess;
+import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeLogMapper;
+import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteProcessMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.ReportInformationSheetMapper;
+import com.zkqy.amichi.domain.ReportInformationSheet;
+import com.zkqy.amichi.service.IReportInformationSheetService;
+
+/**
+ * 报工日志Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-08-19
+ */
+@Service
+public class ReportInformationSheetServiceImpl implements IReportInformationSheetService 
+{
+
+    @Autowired
+    private ReportInformationSheetMapper reportInformationSheetMapper;
+
+
+    @Autowired
+    private StationInformationMapper stationInformationMapper;
+
+    @Autowired
+    private ProductionPlanningManagementMapper productionPlanningManagementMapper;
+
+    @Autowired
+    private BpmExecuteProcessMapper bpmExecuteProcessMapper;
+
+    @Autowired
+    private BpmExecuteNodeLogMapper bpmExecuteNodeLogMapper;
+
+
+    /**
+     * 查询报工日志
+     * 
+     * @param id 报工日志主键
+     * @return 报工日志
+     */
+    @Override
+    public ReportInformationSheet selectReportInformationSheetById(Long id)
+    {
+        return reportInformationSheetMapper.selectReportInformationSheetById(id);
+    }
+
+    /**
+     * 查询报工日志列表
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 报工日志
+     */
+    @Override
+    public List<ReportInformationSheet> selectReportInformationSheetList(ReportInformationSheet reportInformationSheet)
+    {
+        return reportInformationSheetMapper.selectReportInformationSheetList(reportInformationSheet);
+    }
+
+    /**
+     * 新增报工日志
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 结果
+     */
+    @Override
+    public AjaxResult insertReportInformationSheet(ReportInformationSheet reportInformationSheet)
+    {
+        reportInformationSheet.setCreateTime(DateUtils.getNowDate());
+        //查询工位表信息
+        StationInformation stationInformation=new StationInformation();
+        stationInformation.setStationCode(reportInformationSheet.getStationCode());
+        List<StationInformation> stationInformations = stationInformationMapper.selectStationInformationList(stationInformation);
+        if(stationInformations.size()>0){
+            reportInformationSheet.setCurrentStationStationPeople(stationInformations.get(0).getPersonnelName());//工位人员姓名
+            reportInformationSheet.setProcess(stationInformations.get(0).getStationName());//工序
+        }else {
+            AjaxResult.error(601,"工位码信息输入有误~请检查后从新输入");
+        }
+        //订单号
+        String modifiedString = "DQY" + reportInformationSheet.getProductCode().substring(0,  reportInformationSheet.getProductCode().length() - 3);
+        reportInformationSheet.setOrderNumber(modifiedString);
+        //找计划
+        List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementByOrderNumebrOrPlanNumber(modifiedString, modifiedString);
+        if(productionPlanningManagements.size()<=0) {
+            return AjaxResult.error(601,"未找到当前产品相关计划");
+        }else {
+            boolean equals = productionPlanningManagements.get(0).getPlanType().equals("3");
+            if(equals){
+                return AjaxResult.error("600","该计划已经完成");
+            }else {
+                //找到计划了先确认下数量(我计划下的数量)
+                ProductionPlanningManagement productionPlanningManagement = productionPlanningManagements.get(0);
+                //拿到计划id------->根据计划id查询流程信息
+                BpmExecuteProcess process=new BpmExecuteProcess();
+                process.setTaskPlanKey(productionPlanningManagement.getId().toString());//计划id
+                List<BpmExecuteProcess> bpmExecuteProcesses = bpmExecuteProcessMapper.selectBpmExecuteProcessListfjqy(process);
+                if(bpmExecuteProcesses.size()<=0){
+                    return AjaxResult.error(601,"没有找到当前计划的流程管道");
+                }else {
+                    //管道
+                    String taskKey = bpmExecuteProcesses.get(0).getTaskKey();
+                    BpmExecuteNodeLog bpmExecuteNodeLog=new BpmExecuteNodeLog();
+                    bpmExecuteNodeLog.setTaskProcessKey(taskKey);//流程编号
+                    bpmExecuteNodeLog.setTaskNodeName(reportInformationSheet.getProcess());//工序名称
+                    List<BpmExecuteNodeLog> bpmExecuteNodeLogs = bpmExecuteNodeLogMapper.selectBpmExecuteNodeLogListfjqy(bpmExecuteNodeLog);
+                    String taskNodeNumber = bpmExecuteNodeLogs.get(0).getTaskNodeNumber();//节点数量
+                    if(taskNodeNumber==null||taskNodeNumber.equals("")){
+                         taskNodeNumber="0";
+                    }
+                    //判断你当前报工工序节点是否已经报够数量了
+                    if(Integer.parseInt(taskNodeNumber)>=Integer.parseInt(productionPlanningManagement.getQuantity())){
+                        return AjaxResult.error(601,"当前工序已完成计划数量");
+                    }else {
+                        //否则更新接单已完成数量
+                        int i = Math.addExact(Integer.parseInt(taskNodeNumber), 1);
+                        BpmExecuteNodeLog upBpmExecuteNodeLog=new BpmExecuteNodeLog();
+                        upBpmExecuteNodeLog.setTaskNodeNumber(String.valueOf(i));//更新数量
+                        upBpmExecuteNodeLog.setId(bpmExecuteNodeLogs.get(0).getId());//节点日志id
+                        int i1 = bpmExecuteNodeLogMapper.updateBpmExecuteNodeLogfjqy(upBpmExecuteNodeLog);
+                        if(i1 >0){
+                            //根据工位码查询
+                            reportInformationSheetMapper.insertReportInformationSheet(reportInformationSheet);
+                            return AjaxResult.success("报工成功");
+                        }else {
+                            return AjaxResult.error("报工失败");
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 修改报工日志
+     * 
+     * @param reportInformationSheet 报工日志
+     * @return 结果
+     */
+    @Override
+    public int updateReportInformationSheet(ReportInformationSheet reportInformationSheet)
+    {
+        reportInformationSheet.setUpdateTime(DateUtils.getNowDate());
+        return reportInformationSheetMapper.updateReportInformationSheet(reportInformationSheet);
+    }
+
+    /**
+     * 批量删除报工日志
+     * 
+     * @param ids 需要删除的报工日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteReportInformationSheetByIds(Long[] ids)
+    {
+        return reportInformationSheetMapper.deleteReportInformationSheetByIds(ids);
+    }
+
+    /**
+     * 删除报工日志信息
+     * 
+     * @param id 报工日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteReportInformationSheetById(Long id)
+    {
+        return reportInformationSheetMapper.deleteReportInformationSheetById(id);
+    }
+
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/SchedulingProcessTimeServiceImpl.java

@@ -0,0 +1,96 @@
+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.SchedulingProcessTimeMapper;
+import com.zkqy.amichi.domain.SchedulingProcessTime;
+import com.zkqy.amichi.service.ISchedulingProcessTimeService;
+
+/**
+ * 排产工序工时Service业务层处理
+ *
+ * @author zkqy
+ * @date 2024-08-26
+ */
+@Service
+public class SchedulingProcessTimeServiceImpl implements ISchedulingProcessTimeService
+{
+    @Autowired
+    private SchedulingProcessTimeMapper schedulingProcessTimeMapper;
+
+    /**
+     * 查询排产工序工时
+     *
+     * @param id 排产工序工时主键
+     * @return 排产工序工时
+     */
+    @Override
+    public SchedulingProcessTime selectSchedulingProcessTimeById(Long id)
+    {
+        return schedulingProcessTimeMapper.selectSchedulingProcessTimeById(id);
+    }
+
+    /**
+     * 查询排产工序工时列表
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 排产工序工时
+     */
+    @Override
+    public List<SchedulingProcessTime> selectSchedulingProcessTimeList(SchedulingProcessTime schedulingProcessTime)
+    {
+        return schedulingProcessTimeMapper.selectSchedulingProcessTimeList(schedulingProcessTime);
+    }
+
+    /**
+     * 新增排产工序工时
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 结果
+     */
+    @Override
+    public int insertSchedulingProcessTime(SchedulingProcessTime schedulingProcessTime)
+    {
+        schedulingProcessTime.setCreateTime(DateUtils.getNowDate());
+        return schedulingProcessTimeMapper.insertSchedulingProcessTime(schedulingProcessTime);
+    }
+
+    /**
+     * 修改排产工序工时
+     *
+     * @param schedulingProcessTime 排产工序工时
+     * @return 结果
+     */
+    @Override
+    public int updateSchedulingProcessTime(SchedulingProcessTime schedulingProcessTime)
+    {
+        schedulingProcessTime.setUpdateTime(DateUtils.getNowDate());
+        return schedulingProcessTimeMapper.updateSchedulingProcessTime(schedulingProcessTime);
+    }
+
+    /**
+     * 批量删除排产工序工时
+     *
+     * @param ids 需要删除的排产工序工时主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSchedulingProcessTimeByIds(Long[] ids)
+    {
+        return schedulingProcessTimeMapper.deleteSchedulingProcessTimeByIds(ids);
+    }
+
+    /**
+     * 删除排产工序工时信息
+     *
+     * @param id 排产工序工时主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSchedulingProcessTimeById(Long id)
+    {
+        return schedulingProcessTimeMapper.deleteSchedulingProcessTimeById(id);
+    }
+}

+ 227 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/SemiFinishedMaterialListServiceImpl.java

@@ -0,0 +1,227 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import com.zkqy.amichi.domain.OnSiteProgramDetails;
+import com.zkqy.amichi.domain.vo.SemiFinishedMaterialListAndMaterialInventory;
+import com.zkqy.amichi.domain.vo.SemiFinishedMaterialListVo;
+import com.zkqy.common.core.domain.AjaxResult;
+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.SemiFinishedMaterialListMapper;
+import com.zkqy.amichi.domain.SemiFinishedMaterialList;
+import com.zkqy.amichi.service.ISemiFinishedMaterialListService;
+
+/**
+ * 半成品物料清单Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-07-29
+ */
+@Service
+public class SemiFinishedMaterialListServiceImpl implements ISemiFinishedMaterialListService 
+{
+    @Autowired
+    private SemiFinishedMaterialListMapper semiFinishedMaterialListMapper;
+
+    @Autowired
+    private  OnSiteProgramDetailsServiceImpl onSiteProgramDetailsService;
+
+    /**
+     * 查询半成品物料清单
+     * 
+     * @param id 半成品物料清单主键
+     * @return 半成品物料清单
+     */
+    @Override
+    public SemiFinishedMaterialList selectSemiFinishedMaterialListById(Long id)
+    {
+        return semiFinishedMaterialListMapper.selectSemiFinishedMaterialListById(id);
+    }
+
+
+
+    /**
+     * 查询半成品物料清单列表
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 半成品物料清单
+     */
+    @Override
+    public List<SemiFinishedMaterialList> selectSemiFinishedMaterialListList(SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        return semiFinishedMaterialListMapper.selectSemiFinishedMaterialListList(semiFinishedMaterialList);
+    }
+
+    /**
+     * 新增半成品物料清单
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 结果
+     */
+    @Override
+    public int insertSemiFinishedMaterialList(SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        semiFinishedMaterialList.setCreateTime(DateUtils.getNowDate());
+        return semiFinishedMaterialListMapper.insertSemiFinishedMaterialList(semiFinishedMaterialList);
+    }
+
+    /**
+     * 修改半成品物料清单
+     * 
+     * @param semiFinishedMaterialList 半成品物料清单
+     * @return 结果
+     */
+    @Override
+    public int updateSemiFinishedMaterialList(SemiFinishedMaterialList semiFinishedMaterialList)
+    {
+        semiFinishedMaterialList.setUpdateTime(DateUtils.getNowDate());
+        return semiFinishedMaterialListMapper.updateSemiFinishedMaterialList(semiFinishedMaterialList);
+    }
+
+    /**
+     * 批量删除半成品物料清单
+     * 
+     * @param ids 需要删除的半成品物料清单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSemiFinishedMaterialListByIds(Long[] ids)
+    {
+        return semiFinishedMaterialListMapper.deleteSemiFinishedMaterialListByIds(ids);
+    }
+
+    /**
+     * 删除半成品物料清单信息
+     * 
+     * @param id 半成品物料清单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSemiFinishedMaterialListById(Long id)
+    {
+        return semiFinishedMaterialListMapper.deleteSemiFinishedMaterialListById(id);
+    }
+
+    @Override
+    public List<SemiFinishedMaterialListVo> selectTreeList(SemiFinishedMaterialList semiFinishedMaterialList) {
+        //查询全部的
+        SemiFinishedMaterialListVo semiFinishedMaterialList1=new SemiFinishedMaterialListVo();
+        List<SemiFinishedMaterialListVo> semiFinishedMaterialListsAll = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListVo(semiFinishedMaterialList1);
+        //先查询父级为0的
+        semiFinishedMaterialList1.setFid("0");
+        List<SemiFinishedMaterialListVo> semiFinishedMaterialLists = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListVo(semiFinishedMaterialList1);
+        //循环
+        List<SemiFinishedMaterialListVo> collect = semiFinishedMaterialLists.stream().map(item -> {
+            //调用递归方法
+            List<SemiFinishedMaterialListVo> children = this.findChildren(item.getId().toString(), semiFinishedMaterialListsAll);
+            item.setChilderns(children);
+            return item;
+        }).collect(Collectors.toList());
+        return collect;
+    }
+
+    private List<SemiFinishedMaterialListVo> findChildren(String parentId, List<SemiFinishedMaterialListVo> semiFinishedMaterialListsAll) {
+        List<SemiFinishedMaterialListVo> collect = semiFinishedMaterialListsAll.stream()
+                .filter(child -> child.getFid().equals(parentId)&&!child.getIsTreeShow().equals("1"))
+                .map(child -> {
+                    // 递归查找孙子节点
+                    List<SemiFinishedMaterialListVo> children = findChildren(child.getId().toString(), semiFinishedMaterialListsAll);
+                    if (!children.isEmpty()) {
+                        child.setChilderns(children);
+                    }
+                    return  child;
+                }).collect(Collectors.toList());
+        return  collect;
+    }
+    @Override
+    public List<SemiFinishedMaterialListVo> excludeTreeList(SemiFinishedMaterialList semiFinishedMaterialList) {
+        //查询全部的
+        SemiFinishedMaterialListVo semiFinishedMaterialList1=new SemiFinishedMaterialListVo();
+        List<SemiFinishedMaterialListVo> semiFinishedMaterialListsAll = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListVo(semiFinishedMaterialList1);
+        //先查询父级为0的
+        semiFinishedMaterialList1.setFid("0");
+        List<SemiFinishedMaterialListVo> semiFinishedMaterialLists = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListVo(semiFinishedMaterialList1);
+        //循环
+        List<SemiFinishedMaterialListVo> collect = semiFinishedMaterialLists.stream().map(item -> {
+            //调用递归方法
+            List<SemiFinishedMaterialListVo> children = this.findChildrenTow(item.getId().toString(), semiFinishedMaterialListsAll);
+            item.setChilderns(children);
+            return item;
+        }).collect(Collectors.toList());
+        return collect;
+    }
+
+
+    private List<SemiFinishedMaterialListVo> findChildrenTow(String parentId, List<SemiFinishedMaterialListVo> semiFinishedMaterialListsAll) {
+        List<SemiFinishedMaterialListVo> collect = semiFinishedMaterialListsAll.stream()
+                .filter(child -> child.getFid().equals(parentId)&&!child.getIsOnlyMenu().toString().equals("1"))//参与树形展示
+                .map(child -> {
+                    // 递归查找孙子节点
+                    List<SemiFinishedMaterialListVo> children = findChildrenTow(child.getId().toString(), semiFinishedMaterialListsAll);
+                    if (!children.isEmpty()) {
+                        child.setChilderns(children);
+                    }
+                    return  child;
+                }).collect(Collectors.toList());
+        return  collect;
+    }
+
+    @Override
+    public List<SemiFinishedMaterialListVo> productData(SemiFinishedMaterialList semiFinishedMaterialList) {
+        //查询全部的
+        SemiFinishedMaterialListVo semiFinishedMaterialListVo=new SemiFinishedMaterialListVo();
+        semiFinishedMaterialListVo.setIsOnlyMenu("1");
+        semiFinishedMaterialListVo.setIsTreeShow("0");
+        List<SemiFinishedMaterialListVo> semiFinishedMaterialListsAll = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListVo(semiFinishedMaterialListVo);
+        return semiFinishedMaterialListsAll;
+    }
+
+    @Override
+    public AjaxResult selectSemiFinishedMaterialListByIdsAndInventory(List<String> ids) {
+        //得到要生产的产品信息
+        PageUtils.startPage();
+        List<OnSiteProgramDetails> onSiteProgramDetails = onSiteProgramDetailsService.selectOnSiteProgramDetailsListInPlanId(ids);
+        //如果有相同的产品就数量叠加 逻辑是不对(排产的所以计划消耗为30,如果总的计算那么当前计划都是不满足,生成采购单的时候是合并的但是在展示采购单需求的时候应该分开展示)
+        //使用Stream API和Collectors.groupingBy对相同的itemId进行分组并叠加数量
+        Map<Integer, Long> collect = onSiteProgramDetails.stream()
+                .collect(Collectors.groupingBy(
+                        OnSiteProgramDetails::getItemId, // 分组依据
+                        Collectors.summingLong(OnSiteProgramDetails::getQuantity) // 每个分组内的数量叠加
+                ));
+
+        //建立一个产品和计划的集合
+        if(collect.size()<=0){
+            return  AjaxResult.success("当前计划没有对应的产品信息");
+        }
+        //物料信息列表
+        List<SemiFinishedMaterialListAndMaterialInventory> allSemiFinishedMaterialListAndMaterialInventory =new ArrayList<>();
+        //当前产品所需要的物料(产品已经去重成功并且数量已经叠加)
+        collect.forEach((k,v)->{
+            //查询当前产品所需要的物料信息
+            SemiFinishedMaterialList semiFinishedMaterialList=new SemiFinishedMaterialList();
+            semiFinishedMaterialList.setFid(k.toString());//物料id
+            List<SemiFinishedMaterialListAndMaterialInventory> semiFinishedMaterialLists = semiFinishedMaterialListMapper.selectSemiFinishedMaterialListListJoinMaterialInventory(semiFinishedMaterialList);
+            //更新物料数量
+            List<SemiFinishedMaterialListAndMaterialInventory> collect1 = semiFinishedMaterialLists.stream().map(item -> {
+                //循环迭代
+                if (v > 1) {
+                    Integer product = Math.multiplyExact(Integer.parseInt(v.toString()), Integer.parseInt(item.getAmountOfMateria())); // 42
+                    item.setAmountOfMateria(product.toString());//计算出来合并之后的需求量
+                }
+                return item;
+            }).collect(Collectors.toList());
+            allSemiFinishedMaterialListAndMaterialInventory.addAll(collect1);
+        });
+        if(allSemiFinishedMaterialListAndMaterialInventory.size()<=0){
+            AjaxResult.error(2001,"查询物料信息失败");
+        }
+        return AjaxResult.success(allSemiFinishedMaterialListAndMaterialInventory);
+    }
+
+}

+ 357 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java

@@ -0,0 +1,357 @@
+package com.zkqy.amichi.service.impl;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import cn.hutool.core.date.DateTime;
+import com.zkqy.amichi.domain.*;
+import com.zkqy.amichi.mapper.ExceptionReportInformationSheetMapper;
+import com.zkqy.amichi.mapper.ProductionPlanningManagementMapper;
+import com.zkqy.amichi.mapper.ReportInformationSheetMapper;
+import com.zkqy.amichi.utils.WarehouseEntryNumberGenerator;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import com.zkqy.execution.produce.dispersed.controller.BpmExecuteNodeController;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeLog;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteProcess;
+import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeLogMapper;
+import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteProcessMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.StationInformationMapper;
+import com.zkqy.amichi.service.IStationInformationService;
+
+/**
+ * 工位信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-08-20
+ */
+@Service
+public class StationInformationServiceImpl implements IStationInformationService 
+{
+    @Autowired
+    private StationInformationMapper stationInformationMapper;
+    @Autowired
+    private ReportInformationSheetMapper reportInformationSheetMapper;
+
+    @Autowired
+    private ExceptionReportInformationSheetMapper exceptionReportInformationSheetMapper;
+
+    @Autowired
+    private  ProductionPlanningManagementMapper productionPlanningManagementMapper;
+
+    @Autowired
+    private BpmExecuteProcessMapper bpmExecuteProcessMapper;
+
+    @Autowired
+    private BpmExecuteNodeLogMapper  bpmExecuteNodeLogMapper;
+
+    @Autowired
+    private  PlanTaskDetailsServiceImpl planTaskDetailsService;
+
+    /**
+     * 查询工位信息
+     * 
+     * @param id 工位信息主键
+     * @return 工位信息
+     */
+    @Override
+    public StationInformation selectStationInformationById(Long id)
+    {
+        return stationInformationMapper.selectStationInformationById(id);
+    }
+
+    /**
+     * 查询工位信息列表
+     * 
+     * @param stationInformation 工位信息
+     * @return 工位信息
+     */
+    @Override
+    public List<StationInformation> selectStationInformationList(StationInformation stationInformation)
+    {
+        return stationInformationMapper.selectStationInformationList(stationInformation);
+    }
+
+    /**
+     * 新增工位信息
+     * 
+     * @param stationInformation 工位信息
+     * @return 结果
+     */
+    @Override
+    public int insertStationInformation(StationInformation stationInformation)
+    {
+        stationInformation.setCreateTime(DateUtils.getNowDate());
+        return stationInformationMapper.insertStationInformation(stationInformation);
+    }
+
+    /**
+     * 修改工位信息
+     * 
+     * @param stationInformation 工位信息
+     * @return 结果
+     */
+    @Override
+    public int updateStationInformation(StationInformation stationInformation)
+    {
+        stationInformation.setUpdateTime(DateUtils.getNowDate());
+        return stationInformationMapper.updateStationInformation(stationInformation);
+    }
+
+    /**
+     * 批量删除工位信息
+     * 
+     * @param ids 需要删除的工位信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteStationInformationByIds(Long[] ids)
+    {
+        return stationInformationMapper.deleteStationInformationByIds(ids);
+    }
+
+    /**
+     * 删除工位信息信息
+     * 
+     * @param id 工位信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteStationInformationById(Long id)
+    {
+        return stationInformationMapper.deleteStationInformationById(id);
+    }
+
+    @Autowired
+    WarehouseEntryNumberGenerator warehouseEntryNumberGenerator;
+
+
+    @Override
+    public String stationProductScanning(String contentString) {
+        try {
+            if (contentString.contains("scan@")) {//这个是工位码扫描逻辑
+                String[] content = contentString.split("&");
+                //更改当前工位码的设备信息
+                StationInformation stationInformation = new StationInformation();
+                stationInformation.setDeviceName(content[2]);//设备信息
+                //查询当前设备是否已经绑定了工位信息
+                List<StationInformation> stationInformations = stationInformationMapper.selectStationInformationList(stationInformation);
+                if (stationInformations.size() > 0) { //更新原先绑定的工位信息为空
+                    stationInformation.setDeviceName("");//设备信息
+                    stationInformation.setTeamCode("");//班组码信息
+                    stationInformation.setStationCode(stationInformations.get(0).getStationCode());//工位码信息
+                    stationInformationMapper.updateStationInformationByStationUpdateEquipment(stationInformation);
+                }
+                stationInformation.setDeviceName(content[2]);//设备信息
+                stationInformation.setStationCode(content[1]);//工位码
+                int i = stationInformationMapper.updateStationInformationByStationUpdateEquipment(stationInformation);
+                return "手持机工位信息绑定成功";
+            } else if (contentString.contains("team@")){
+                String[] content = contentString.split("&");
+                //扫工位码之前先判断你当前手持机扫没扫过工位码信息
+                StationInformation stationInformationByDeviceName=new StationInformation();
+                stationInformationByDeviceName.setDeviceName(content[2]);//手持机标识
+                List<StationInformation> stationInformationsByDeviceName = stationInformationMapper.selectStationInformationList(stationInformationByDeviceName);
+                if(stationInformationsByDeviceName.size()<=0){
+                    return "请先用当前手持先扫工位码";
+                }
+                //先查询当前班组码有没有在其他工位上有就先给他清空
+                StationInformation stationInformation=new StationInformation();
+                stationInformation.setTeamCode(content[1]);//班组码信息
+                List<StationInformation> stationInformations = stationInformationMapper.selectStationInformationList(stationInformation);
+                if (stationInformations.size() > 0) { //更新原先绑定的工位信息为空
+                    stationInformation.setTeamName("");//班组码信息
+                    stationInformation.setStationCode(stationInformations.get(0).getStationCode());//工位码信息
+                    stationInformationMapper.updateStationInformationByStationUpdateEquipment(stationInformation);
+                }
+                stationInformation.setTeamCode(content[1]);//班组码
+                stationInformation.setDeviceName(content[2]);//手持机码
+                int i = stationInformationMapper.updateStationInformationByStationUpdateByDeviceName(stationInformation);
+
+                List<StationInformation> stationInformationsTwo = stationInformationMapper.selectStationInformationList(stationInformation);
+                //拿到工位id
+                StationInformation stationInformation1 = stationInformationsTwo.get(0);
+                return "工位:"+stationInformation1.getStationName()+" 班组:"+stationInformation1.getTeamName();
+            }
+            else{ //产品扫描逻辑
+                String[] content = contentString.split("&");
+                StationInformation stationInformation=new StationInformation();
+                stationInformation.setDeviceName(content[1]);//设备名称
+                //查询工位信息表
+                List<StationInformation> stationInformations = stationInformationMapper.selectStationInformationList(stationInformation);
+                //节点.
+                if(stationInformations.size()>0){
+                    StationInformation stationInformation1 = stationInformations.get(0);//根据手持机设备名称得到工位信息
+                    ReportInformationSheet reportInformationSheet=new ReportInformationSheet();
+                    reportInformationSheet.setCurrentStationStationPeople(stationInformation1.getPersonnelName());//工位人员姓名
+                    reportInformationSheet.setStationCode(stationInformation1.getStationCode());//工位码
+                    reportInformationSheet.setProcess(stationInformation1.getStationName());//工序名称
+                    reportInformationSheet.setProductCode(content[0]);//产品码
+                    reportInformationSheet.setHandheldDevice(content[1]);//手持机
+                    reportInformationSheet.setCreateTime(new DateTime());//创建时间
+                    //推算出来产品编号或者订单编号
+                    String modifiedString = "DQY" + content[0].substring(0, content[0].length() - 3);
+                    reportInformationSheet.setOrderNumber(modifiedString);//订单号或任务号
+                    //更新节点生产数量
+                    //先拿到当前任务数量
+                    List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementByOrderNumebrOrPlanNumber(modifiedString, modifiedString);
+                    if(productionPlanningManagements.size()<=0){
+                        //插入异常报工信息
+                        extracted(reportInformationSheet,"未找到当前产品计划报工失败--信息不匹配");
+                        return "未找到当前产品计划报工失败--信息不匹配";
+                    }else {
+                        boolean equals = productionPlanningManagements.get(0).getPlanType().equals("3");
+                        if(equals){
+                            //插入异常报工信息
+                            extracted(reportInformationSheet,"该计划已经完成--信息不匹配");
+                            return "该计划已经完成--信息不匹配";
+                        }else {
+                            //找到计划了先确认下数量(我计划下的数量)
+                            ProductionPlanningManagement productionPlanningManagement = productionPlanningManagements.get(0);
+                            //拿到计划id------->根据计划id查询流程信息
+                            BpmExecuteProcess process=new BpmExecuteProcess();
+                            process.setTaskPlanKey(productionPlanningManagement.getId().toString());//计划id
+                            List<BpmExecuteProcess> bpmExecuteProcesses = bpmExecuteProcessMapper.selectBpmExecuteProcessListfjqy(process);
+                            if(bpmExecuteProcesses.size()<=0){
+                                //插入异常报工信息
+                                extracted(reportInformationSheet,"没有找到当前计划的流程管道--信息不匹配");
+                                return "没有找到当前计划的流程管道--信息不匹配";
+                            }else {
+                                //管道
+                                String taskKey = bpmExecuteProcesses.get(0).getTaskKey();
+                                BpmExecuteNodeLog bpmExecuteNodeLog=new BpmExecuteNodeLog();
+                                bpmExecuteNodeLog.setTaskProcessKey(taskKey);//流程编号
+                                bpmExecuteNodeLog.setTaskNodeName(stationInformation1.getStationName());//工序名称
+                                List<BpmExecuteNodeLog> bpmExecuteNodeLogs = bpmExecuteNodeLogMapper.selectBpmExecuteNodeLogListfjqy(bpmExecuteNodeLog);
+                                String taskNodeNumber = bpmExecuteNodeLogs.get(0).getTaskNodeNumber();//节点数量
+                                //判断你当前报工工序节点是否已经报够数量了
+                                if(taskNodeNumber==null||taskNodeNumber.equals("")){
+                                    taskNodeNumber="0";
+                                }
+                                if(Integer.parseInt(taskNodeNumber)>=Integer.parseInt(productionPlanningManagement.getQuantity())){
+                                    //插入异常报工信息
+                                    extracted(reportInformationSheet,"当前工序已完成计划数量");
+                                    return "当前工序已完成计划数量";
+                                }else {
+                                    //否则更新接单已完成数量
+                                    int i = Math.addExact(Integer.parseInt(taskNodeNumber), 1);
+                                    BpmExecuteNodeLog upBpmExecuteNodeLog=new BpmExecuteNodeLog();
+                                    upBpmExecuteNodeLog.setTaskNodeNumber(String.valueOf(i));//更新数量
+                                    upBpmExecuteNodeLog.setId(bpmExecuteNodeLogs.get(0).getId());//节点日志id
+                                    //判断同一部手持机扫描时间间隔是否超过一分钟
+                                    ReportInformationSheet sheetsjjg=new ReportInformationSheet();
+                                    sheetsjjg.setProcess(stationInformation1.getStationName());//工序
+                                    sheetsjjg.setHandheldDevice(content[2]);//设备信息
+                                    ReportInformationSheet reportInformationSheetsSc = reportInformationSheetMapper.selectReportInformationSheetListOrderBy(sheetsjjg);
+                                    Date date1 = reportInformationSheetsSc.getCreateTime(); //上次扫码时间
+                                    Date date2 = new Date();//当前时间
+                                    String s = DateUtils.timeDistanceMin(date2, date1);
+                                    if(Integer.parseInt(s)<1){
+                                        //插入异常报工信息
+                                        extracted(reportInformationSheet,"两次扫码之间的间隔不能小于1分钟");//???? 看看那个小工人有这个坏心思
+                                        return "两次扫码之间的间隔不能小于1分钟";
+                                    }
+                                    //工序--产品重复扫描
+                                        ReportInformationSheet reportInformationSheet1=new ReportInformationSheet();
+                                        reportInformationSheet1.setProcess(stationInformation1.getStationName());//工序名称
+                                        reportInformationSheet1.setProductCode(stationInformation1.getStationName());//产品码
+                                        List<ReportInformationSheet> reportInformationSheets = reportInformationSheetMapper.selectReportInformationSheetList(reportInformationSheet1);
+                                        if(reportInformationSheets.size()>0){
+                                            //插入异常报工信息
+                                            extracted(reportInformationSheet,"产品不能重复扫描");
+                                            return "产品不能重复扫描";
+                                        }
+
+                                    //当前产品只能被下一个工序进行扫描
+                                        //查询当前计划的所有工序信息
+                                        BpmExecuteNodeLog bpmExecuteNodeLogString=new BpmExecuteNodeLog();
+                                        bpmExecuteNodeLog.setTaskProcessKey(taskKey);//流程编号
+                                        List<BpmExecuteNodeLog> bpmExecuteNodeLogsString = bpmExecuteNodeLogMapper.selectBpmExecuteNodeLogListfjqy(bpmExecuteNodeLogString);
+                                        List<String> collect = bpmExecuteNodeLogsString.stream().map(BpmExecuteNodeLog::getTaskNodeName).collect(Collectors.toList());
+                                        //所有的集合我拿到了
+                                        ReportInformationSheet reportInformationSheet1String=new ReportInformationSheet();
+                                        reportInformationSheet1String.setProductCode(stationInformation1.getStationName());//产品码
+                                        List<ReportInformationSheet> reportInformationSheetsString = reportInformationSheetMapper.selectReportInformationSheetList(reportInformationSheet1String);
+                                        ReportInformationSheet reportInformationSheet2 = reportInformationSheetsString.get(0);
+                                        String process1 = reportInformationSheet2.getProcess();//这个产品编码上一次是那个工序扫的?
+                                        int nextIndex=0;
+                                        for (int i1 = 0; i1 < collect.size(); i1++) {
+                                            //如果工序名称相同
+                                            if(collect.get(i1).equals(process1)){
+                                                nextIndex=i1+1;
+                                            }
+                                        }
+                                        //说明已经在最后一个节点了,你前边的手持工序在怎么扫都扫不上的
+                                        if(nextIndex>=collect.size()){
+                                            //插入异常报工信息
+                                            extracted(reportInformationSheet,"请选择对应工序的手持机进行扫描");
+                                            return "请选择对应工序的手持机进行扫描";
+                                        }else {
+                                            if(!stationInformation1.getStationName().equals(collect.get(nextIndex))){
+                                                //插入异常报工信息
+                                                extracted(reportInformationSheet,"请选择当前产品对应的工序信息进行扫描");
+                                                return "请选择当前产品对应的工序信息进行扫描";
+                                            }
+                                        }
+                                    //当前工序有没有漏扫
+                                        int result = Math.subtractExact(Integer.parseInt(stationInformation1.getStationName()), 1);
+                                        reportInformationSheet1.setProductCode(String.valueOf(result));//产品码
+                                        List<ReportInformationSheet> reportInformationSheetsLS = reportInformationSheetMapper.selectReportInformationSheetList(reportInformationSheet1);
+                                        if(reportInformationSheetsLS.size()>0){
+                                            //插入异常报工信息
+                                            extracted(reportInformationSheet,"当前工序漏扫了一个产品信息--请核对信息");
+                                            return "当前工序漏扫了一个产品信息--请核对信息";
+                                        }
+                                    //根据工位码查询 ---->节点报工日志
+                                    reportInformationSheetMapper.insertReportInformationSheet(reportInformationSheet);
+                                    int i1 = bpmExecuteNodeLogMapper.updateBpmExecuteNodeLogfjqy(upBpmExecuteNodeLog);
+                                    //更新当前工序节点信息
+                                    if(i1 >0){
+                                        return "产品信息扫描成功";
+                                    }else {
+                                        extracted(reportInformationSheet,"更新节点管道工序任务数量失败");
+                                        return "扫码报工失败";
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }else{
+                    return  "当前设备未绑定工位信息";
+                }
+            }
+        } catch (Exception e) {
+            System.out.println(
+              e.getMessage()
+            );
+            return  "扫描失败";
+        }
+    }
+
+    /**
+     * 插入异常报工信息
+     * @param reportInformationSheet
+     * @param msg
+     */
+    private void extracted(ReportInformationSheet reportInformationSheet,String msg) {
+        ExceptionReportInformationSheet exceptionReportInformationSheet = new ExceptionReportInformationSheet();
+        BeanUtils.copyProperties(reportInformationSheet, exceptionReportInformationSheet);
+        exceptionReportInformationSheet.setExceptionMessage(msg);
+        exceptionReportInformationSheetMapper.insertExceptionReportInformationSheet(exceptionReportInformationSheet);
+    }
+
+    public static void main(String[] args) {
+       String aaa="scan@&GWM-001&SMSB001";
+        boolean contains = aaa.contains("scan@");
+        System.out.println(contains);
+    }
+}

+ 97 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TeamInformationServiceImpl.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.TeamInformationMapper;
+import com.zkqy.amichi.domain.TeamInformation;
+import com.zkqy.amichi.service.ITeamInformationService;
+
+/**
+ * 班组信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@Service
+public class TeamInformationServiceImpl implements ITeamInformationService 
+{
+    @Autowired
+    private TeamInformationMapper teamInformationMapper;
+
+    /**
+     * 查询班组信息
+     * 
+     * @param id 班组信息主键
+     * @return 班组信息
+     */
+    @Override
+    public TeamInformation selectTeamInformationById(Long id)
+    {
+
+        return teamInformationMapper.selectTeamInformationById(id);
+    }
+
+    /**
+     * 查询班组信息列表
+     * 
+     * @param teamInformation 班组信息
+     * @return 班组信息
+     */
+    @Override
+    public List<TeamInformation> selectTeamInformationList(TeamInformation teamInformation)
+    {
+        return teamInformationMapper.selectTeamInformationList(teamInformation);
+    }
+
+    /**
+     * 新增班组信息
+     * 
+     * @param teamInformation 班组信息
+     * @return 结果
+     */
+    @Override
+    public int insertTeamInformation(TeamInformation teamInformation)
+    {
+        teamInformation.setCreateTime(DateUtils.getNowDate());
+        return teamInformationMapper.insertTeamInformation(teamInformation);
+    }
+
+    /**
+     * 修改班组信息
+     * 
+     * @param teamInformation 班组信息
+     * @return 结果
+     */
+    @Override
+    public int updateTeamInformation(TeamInformation teamInformation)
+    {
+        teamInformation.setUpdateTime(DateUtils.getNowDate());
+        return teamInformationMapper.updateTeamInformation(teamInformation);
+    }
+
+    /**
+     * 批量删除班组信息
+     * 
+     * @param ids 需要删除的班组信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTeamInformationByIds(Long[] ids)
+    {
+        return teamInformationMapper.deleteTeamInformationByIds(ids);
+    }
+
+    /**
+     * 删除班组信息信息
+     * 
+     * @param id 班组信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTeamInformationById(Long id)
+    {
+        return teamInformationMapper.deleteTeamInformationById(id);
+    }
+}

+ 103 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TeamPersonnelChangeInformationServiceImpl.java

@@ -0,0 +1,103 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+
+import com.zkqy.amichi.mapper.TeamPersonnelInformationMapper;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.TeamPersonnelChangeInformationMapper;
+import com.zkqy.amichi.domain.TeamPersonnelChangeInformation;
+import com.zkqy.amichi.service.ITeamPersonnelChangeInformationService;
+
+/**
+ * 班组人员变动信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@Service
+public class TeamPersonnelChangeInformationServiceImpl implements ITeamPersonnelChangeInformationService 
+{
+    @Autowired
+    private TeamPersonnelChangeInformationMapper teamPersonnelChangeInformationMapper;
+
+    @Autowired
+    private TeamPersonnelInformationMapper teamPersonnelInformationMapper;
+    /**
+     * 查询班组人员变动信息
+     * 
+     * @param id 班组人员变动信息主键
+     * @return 班组人员变动信息
+     */
+    @Override
+    public TeamPersonnelChangeInformation selectTeamPersonnelChangeInformationById(Long id)
+    {
+
+        return teamPersonnelChangeInformationMapper.selectTeamPersonnelChangeInformationById(id);
+    }
+
+    /**
+     * 查询班组人员变动信息列表
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 班组人员变动信息
+     */
+    @Override
+    public List<TeamPersonnelChangeInformation> selectTeamPersonnelChangeInformationList(TeamPersonnelChangeInformation teamPersonnelChangeInformation)
+    {
+        teamPersonnelChangeInformation.setDelFlag("0");
+        return teamPersonnelChangeInformationMapper.selectTeamPersonnelChangeInformationList(teamPersonnelChangeInformation);
+    }
+
+    /**
+     * 新增班组人员变动信息
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 结果
+     */
+    @Override
+    public int insertTeamPersonnelChangeInformation(TeamPersonnelChangeInformation teamPersonnelChangeInformation)
+    {
+        teamPersonnelChangeInformation.setCreateTime(DateUtils.getNowDate());
+        teamPersonnelChangeInformation.setDelFlag("0");
+        return teamPersonnelChangeInformationMapper.insertTeamPersonnelChangeInformation(teamPersonnelChangeInformation);
+    }
+
+    /**
+     * 修改班组人员变动信息
+     * 
+     * @param teamPersonnelChangeInformation 班组人员变动信息
+     * @return 结果
+     */
+    @Override
+    public int updateTeamPersonnelChangeInformation(TeamPersonnelChangeInformation teamPersonnelChangeInformation)
+    {
+        teamPersonnelChangeInformation.setUpdateTime(DateUtils.getNowDate());
+        return teamPersonnelChangeInformationMapper.updateTeamPersonnelChangeInformation(teamPersonnelChangeInformation);
+    }
+
+    /**
+     * 批量删除班组人员变动信息
+     * 
+     * @param ids 需要删除的班组人员变动信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTeamPersonnelChangeInformationByIds(Long[] ids)
+    {
+        return teamPersonnelChangeInformationMapper.deleteTeamPersonnelChangeInformationByIds(ids);
+    }
+
+    /**
+     * 删除班组人员变动信息信息
+     * 
+     * @param id 班组人员变动信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTeamPersonnelChangeInformationById(Long id)
+    {
+        return teamPersonnelChangeInformationMapper.deleteTeamPersonnelChangeInformationById(id);
+    }
+}

+ 126 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TeamPersonnelInformationServiceImpl.java

@@ -0,0 +1,126 @@
+package com.zkqy.amichi.service.impl;
+
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+import com.zkqy.amichi.domain.TeamPersonnelChangeInformation;
+import com.zkqy.amichi.mapper.TeamPersonnelChangeInformationMapper;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.TeamPersonnelInformationMapper;
+import com.zkqy.amichi.domain.TeamPersonnelInformation;
+import com.zkqy.amichi.service.ITeamPersonnelInformationService;
+
+/**
+ * 班组人员信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-09-12
+ */
+@Service
+public class TeamPersonnelInformationServiceImpl implements ITeamPersonnelInformationService 
+{
+    private final TeamPersonnelInformationMapper teamPersonnelInformationMapper;
+
+
+    public TeamPersonnelInformationServiceImpl(TeamPersonnelInformationMapper teamPersonnelInformationMapper) {
+        this.teamPersonnelInformationMapper = teamPersonnelInformationMapper;
+    }
+
+
+    @Autowired
+    private TeamPersonnelChangeInformationMapper personnelChangeInformationMapper;
+
+    /**
+     * 查询班组人员信息
+     * 
+     * @param id 班组人员信息主键
+     * @return 班组人员信息
+     */
+    @Override
+    public TeamPersonnelInformation selectTeamPersonnelInformationById(Long id)
+    {
+        return teamPersonnelInformationMapper.selectTeamPersonnelInformationById(id);
+    }
+
+    /**
+     * 查询班组人员信息列表
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 班组人员信息
+     */
+    @Override
+    public List<TeamPersonnelInformation> selectTeamPersonnelInformationList(TeamPersonnelInformation teamPersonnelInformation)
+    {
+        teamPersonnelInformation.setDelFlag("0");
+        if(teamPersonnelInformation.getCreateTime()!=null){
+//            DateUtils.to
+        }
+        return teamPersonnelInformationMapper.selectTeamPersonnelInformationList(teamPersonnelInformation);
+    }
+
+    /**
+     * 新增班组人员信息
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 结果
+     */
+    @Override
+    public int insertTeamPersonnelInformation(TeamPersonnelInformation teamPersonnelInformation)
+    {
+        teamPersonnelInformation.setCreateTime(DateUtils.getNowDate());
+        teamPersonnelInformation.setDelFlag("0");
+        //如果false就是常规添加,如果等于true就是临时调整
+        if(teamPersonnelInformation.getIsRoutine().equals("true")){
+            //拷贝新增信息添加到有变动的一个信息表中
+            TeamPersonnelChangeInformation changeInformation=new TeamPersonnelChangeInformation();
+            BeanUtils.copyProperties(teamPersonnelInformation,changeInformation);
+            changeInformation.setProcessKey("临时调整");//用ProcessKey字段用来标记当前数据集是否是临时调整信息
+            //今天的信息添加到异常信息里了
+            return  personnelChangeInformationMapper.insertTeamPersonnelChangeInformation(changeInformation);
+        }else {
+            //正常添加人员信息
+            return teamPersonnelInformationMapper.insertTeamPersonnelInformation(teamPersonnelInformation);
+        }
+
+    }
+
+    /**
+     * 修改班组人员信息
+     * 
+     * @param teamPersonnelInformation 班组人员信息
+     * @return 结果
+     */
+    @Override
+    public int updateTeamPersonnelInformation(TeamPersonnelInformation teamPersonnelInformation)
+    {
+        teamPersonnelInformation.setUpdateTime(DateUtils.getNowDate());
+        return teamPersonnelInformationMapper.updateTeamPersonnelInformation(teamPersonnelInformation);
+    }
+
+    /**
+     * 批量删除班组人员信息
+     * 
+     * @param ids 需要删除的班组人员信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTeamPersonnelInformationByIds(Long[] ids)
+    {
+        return teamPersonnelInformationMapper.deleteTeamPersonnelInformationByIds(ids);
+    }
+
+    /**
+     * 删除班组人员信息信息
+     * 
+     * @param id 班组人员信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTeamPersonnelInformationById(Long id)
+    {
+        return teamPersonnelInformationMapper.deleteTeamPersonnelInformationById(id);
+    }
+}

+ 59 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/WarehouseEntryInformationServiceImpl.java

@@ -6,8 +6,12 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import com.zkqy.amichi.domain.*;
+import com.zkqy.amichi.domain.vo.ProcessWarehousingVo;
+import com.zkqy.amichi.domain.vo.ProductionPlanningManagementVo;
 import com.zkqy.amichi.domain.vo.WarehouseEntryInformationVo;
 import com.zkqy.amichi.mapper.*;
+import com.zkqy.amichi.utils.WarehouseEntryNumberGenerator;
+import com.zkqy.common.annotation.Excel;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.SecurityUtils;
 import org.springframework.beans.BeanUtils;
@@ -36,6 +40,12 @@ public class WarehouseEntryInformationServiceImpl implements IWarehouseEntryInfo
 
     @Autowired
     private FinishedGoodsInventoryLogMapper finishedGoodsInventoryLogMapper;
+
+    @Autowired
+    private WarehouseEntryNumberGenerator warehouseEntryNumberGenerator;
+
+    @Autowired
+    private  ProductionPlanningManagementMapper productionPlanningManagementMapper;
     /**
      * 查询入库单信息
      * 
@@ -187,6 +197,55 @@ public class WarehouseEntryInformationServiceImpl implements IWarehouseEntryInfo
         return 1;
     }
 
+
+    /**
+     * 工序节点入库逻辑
+     * @param processWarehousingVos
+     * @return
+     */
+    @Override
+    @Transactional
+    public int processWarehousing(List<ProcessWarehousingVo> processWarehousingVos) {
+        WarehouseEntryInformationVo warehouseEntryInformationVo=new WarehouseEntryInformationVo();
+        //新增入库单信息
+        warehouseEntryInformationVo.setCreateTime(new Date());
+        warehouseEntryInformationVo.setCreateById(SecurityUtils.getUserId());
+        warehouseEntryInformationVo.setCreateBy(SecurityUtils.getUsername());
+        warehouseEntryInformationVo.setDocumenter(SecurityUtils.getUsername());//制单人
+        warehouseEntryInformationVo.setDataApprovalStatus("3");//0未发起,1待审批,2已通过,3已驳回
+        warehouseEntryInformationVo.setDelFlag("0");//逻辑删除 0未删除 1已删除
+        //入库单编号
+        String rkdbh = warehouseEntryNumberGenerator.generateWarehouseWarrantNumber();
+        warehouseEntryInformationVo.setWarehouseEntryNumber(rkdbh);
+        //订单号
+        String string = processWarehousingVos.get(0).getOrderNumber().toString();
+        ProductionPlanningManagement productionPlanningManagement = productionPlanningManagementMapper.selectProductionPlanningManagementById(Long.valueOf(string));
+        String orderNumber = productionPlanningManagement.getOrderNumber();
+        warehouseEntryInformationVo.setProductionOrderNumber(orderNumber);
+        warehouseEntryInformationVo.setDateOfReceipt(LocalDate.now());
+
+        int i = warehouseEntryInformationMapper.insertWarehouseEntryInformation(warehouseEntryInformationVo);
+        //新增入库单详情信息
+        List<StoreEntryDetails> collect = processWarehousingVos.stream().map(storeEntryDetails -> {
+            StoreEntryDetails storeEntryDetails1 = new StoreEntryDetails();
+            storeEntryDetails1.setWarehouseEntryId(warehouseEntryInformationVo.getId());//入库单id
+            //基础信息
+            storeEntryDetails1.setCreateTime(new Date());
+            storeEntryDetails1.setDelFlag("0");
+            storeEntryDetails1.setCreateById(SecurityUtils.getUserId());
+            storeEntryDetails1.setCreateBy(SecurityUtils.getUsername());
+            storeEntryDetails1.setProductName(storeEntryDetails.getProductName());
+            storeEntryDetails1.setQuantity(storeEntryDetails.getQuantity());
+            storeEntryDetails1.setModelNumber(storeEntryDetails.getProductName());
+            storeEntryDetails1.setUnit("个");
+            storeEntryDetails1.setQuantity(storeEntryDetails.getQuantity());//数量
+            return storeEntryDetails1;
+        }).collect(Collectors.toList());
+        //新增入库单详细信息
+        storeEntryDetailsMapper.insertStoreEntryDetailsBatch(collect);
+        return 1;
+    }
+
     @Override
     public WarehouseEntryInformationVo selectWarehouseEntryInformationByIdVo(Long id) {
         WarehouseEntryInformationVo warehouseEntryInformationVo = new WarehouseEntryInformationVo();

+ 66 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/AmichiCommissionNumberGenerator.java

@@ -0,0 +1,66 @@
+package com.zkqy.amichi.utils;
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.redis.RedisCache;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * 场内计划编号生成器
+ */
+@Component
+public class AmichiCommissionNumberGenerator {
+
+    @Autowired
+    RedisCache redisCache;
+
+    @Autowired
+    StringRedisTemplate stringRedisTemplate;
+
+    private static final String DATE_FORMAT = "yyMMdd";
+    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
+    private static final String COMMISSION_KEY_PREFIX = "fjqy:plankey:commission_number:";
+    private static final String COMMISSION_DAY_KEY = "fjqy:plankey:commission_day";
+
+    //自定义生成计划编号
+    public synchronized String generateCommissionNumber() {
+        // 拿到今天的日期,并格式化为-> yyMMdd
+        LocalDate now = LocalDate.now();
+        String formattedDate = now.format(formatter);
+        // 检测日期是否发生变化
+        String cacheDataInDay = redisCache.getCacheObject(COMMISSION_DAY_KEY);
+        if(Optional.ofNullable(cacheDataInDay).filter(s -> !s.isEmpty()).isPresent()){
+            // 检查日期是否变化
+            if (!cacheDataInDay.equals(formattedDate)) {
+                //日期变化,重置流水号
+                redisCache.deleteObject(COMMISSION_KEY_PREFIX + formattedDate);
+                redisCache.setCacheObject(COMMISSION_DAY_KEY, formattedDate);
+            }
+        }
+        // 获取或创建流水号键
+        String sequenceKey = COMMISSION_KEY_PREFIX + formattedDate;
+        // 使用increment命令递增流水号
+        Long sequence = stringRedisTemplate.opsForValue().increment(sequenceKey, 1L);
+        // 格式化流水号为三位数
+        String sequenceStr = String.format("%03d", sequence);
+        // 返回完整的委托单编号 年取后两位
+        return  formattedDate + sequenceStr;
+    }
+
+    public static void main(String[] args) {
+        Date date = new Date("2024-09-11 15:33:47");
+        long time1 = date.getTime();
+        Date date1 = new Date();
+        long time = date1.getTime();
+        System.out.println(time1);
+        System.out.println(time);
+    }
+}

+ 50 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/PurchaseNumberGenerator.java

@@ -0,0 +1,50 @@
+package com.zkqy.amichi.utils;
+
+import com.zkqy.common.core.redis.RedisCache;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Optional;
+
+@Component
+public class PurchaseNumberGenerator {
+
+    @Autowired
+    RedisCache redisCache;
+
+    @Autowired
+    StringRedisTemplate stringRedisTemplate;
+
+    private static final String DATE_FORMAT = "yyMMdd";
+    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
+    private static final String COMMISSION_KEY_PREFIX = "fjqy:purchase:purchase_number:";
+    private static final String COMMISSION_DAY_KEY = "fjqy:purchase:purchase_day";
+
+    //自定义生成计划编号
+    public synchronized String generatePurchaseNumber() {
+        // 拿到今天的日期,并格式化为-> yyMMdd
+        LocalDate now = LocalDate.now();
+        String formattedDate = now.format(formatter);
+        // 检测日期是否发生变化
+        String cacheDataInDay = redisCache.getCacheObject(COMMISSION_DAY_KEY);
+        if(Optional.ofNullable(cacheDataInDay).filter(s -> !s.isEmpty()).isPresent()){
+            // 检查日期是否变化
+            if (!cacheDataInDay.equals(formattedDate)) {
+                //日期变化,重置流水号
+                redisCache.deleteObject(COMMISSION_KEY_PREFIX + formattedDate);
+                redisCache.setCacheObject(COMMISSION_DAY_KEY, formattedDate);
+            }
+        }
+        // 获取或创建流水号键
+        String sequenceKey = COMMISSION_KEY_PREFIX + formattedDate;
+        // 使用increment命令递增流水号
+        Long sequence = stringRedisTemplate.opsForValue().increment(sequenceKey, 1L);
+        // 格式化流水号为三位数
+        String sequenceStr = String.format("%03d", sequence);
+        // 返回完整的委托单编号 年取后两位
+        return  formattedDate + sequenceStr;
+    }
+}

+ 49 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/WarehouseEntryNumberGenerator.java

@@ -0,0 +1,49 @@
+package com.zkqy.amichi.utils;
+
+import com.zkqy.common.core.redis.RedisCache;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Optional;
+
+@Component
+public class WarehouseEntryNumberGenerator {
+    @Autowired
+    RedisCache redisCache;
+
+    @Autowired
+    StringRedisTemplate stringRedisTemplate;
+
+    private static final String DATE_FORMAT = "yyMMdd";
+    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
+    private static final String COMMISSION_KEY_PREFIX = "fjqy:rkd:rkdh1:";
+    private static final String COMMISSION_DAY_KEY = "fjqy:rkd:rkdh2";
+
+    //自定义生成计划编号
+    public synchronized String generateWarehouseWarrantNumber() {
+        // 拿到今天的日期,并格式化为-> yyMMdd
+        LocalDate now = LocalDate.now();
+        String formattedDate = now.format(formatter);
+        // 检测日期是否发生变化
+        String cacheDataInDay = redisCache.getCacheObject(COMMISSION_DAY_KEY);
+        if(Optional.ofNullable(cacheDataInDay).filter(s -> !s.isEmpty()).isPresent()){
+            // 检查日期是否变化
+            if (!cacheDataInDay.equals(formattedDate)) {
+                //日期变化,重置流水号
+                redisCache.deleteObject(COMMISSION_KEY_PREFIX + formattedDate);
+                redisCache.setCacheObject(COMMISSION_DAY_KEY, formattedDate);
+            }
+        }
+        // 获取或创建流水号键
+        String sequenceKey = COMMISSION_KEY_PREFIX + formattedDate;
+        // 使用increment命令递增流水号
+        Long sequence = stringRedisTemplate.opsForValue().increment(sequenceKey, 1L);
+        // 格式化流水号为三位数
+        String sequenceStr = String.format("%03d", sequence);
+        // 返回完整的委托单编号 年取后两位
+        return  "RKDH"+formattedDate + sequenceStr;
+    }
+}

+ 32 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/a.java

@@ -0,0 +1,32 @@
+package com.zkqy.amichi.utils;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+
+public class a {
+    public static void main(String[] args) {
+        LocalDateTime currentTime = LocalDateTime.now(); // 获取当前时间
+        LocalTime workStartTimeMorning = LocalTime.of(8, 0); // 上午上班时间
+        LocalTime workStartTimeAfternoon = LocalTime.of(14, 0); // 下午上班时间
+        LocalTime workEndTimeMorning = LocalTime.of(12, 0); // 上午下班时间
+        LocalTime workEndTimeAfternoon = LocalTime.of(18, 0); // 下午下班时间
+
+        LocalDateTime calculatedTime = calculateWorkTime(currentTime, workStartTimeMorning, workStartTimeAfternoon, workEndTimeMorning, workEndTimeAfternoon);
+        System.out.println("经过计算的上班时间: " + calculatedTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
+    }
+
+    public static LocalDateTime calculateWorkTime(LocalDateTime currentTime, LocalTime workStartTimeMorning, LocalTime workStartTimeAfternoon, LocalTime workEndTimeMorning, LocalTime workEndTimeAfternoon) {
+        LocalDateTime adjustedTime = currentTime;
+        // 如果当前时间在昨天的下班时间之后,那么将时间调整到今天的工作时间
+        if (currentTime.toLocalTime().isAfter(workEndTimeAfternoon)) {
+            adjustedTime = LocalDateTime.of(currentTime.toLocalDate(), workStartTimeMorning);
+        }
+
+        // 如果当前时间在今天的下班时间之后,那么将时间调整到明天的工作时间
+        else if (currentTime.toLocalTime().isAfter(workEndTimeMorning) && currentTime.toLocalTime().isBefore(workStartTimeAfternoon)) {
+            adjustedTime = LocalDateTime.of(currentTime.toLocalDate(), workStartTimeAfternoon);
+        }
+        return adjustedTime;
+    }
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.