From 45f553e1c5f9d1b948c131fd42ca89d7910ffe03 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 24 九月 2024 18:24:20 +0800
Subject: [PATCH] 代码初始化

---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java                      |   22 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java                 |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java     |   95 +++++++++++++++---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java                   |   23 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java   |   13 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java        |   78 ++++++++++++++-
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java    |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java |   24 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java                  |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java             |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java                |    9 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java                    |    3 
 12 files changed, 240 insertions(+), 34 deletions(-)

diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
index 3359739..0b34061 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
@@ -96,6 +96,13 @@
         return ApiResponse.success(platformService.findPage(pageWrap));
     }
 
+    @ApiOperation("鏈堝彴浣滀笟缁熻")
+    @PostMapping("/platformWorkReportPage")
+    @CloudRequiredPermission("business:platform:query")
+    public ApiResponse<List<Platform>> platformWorkReportPage (@RequestBody Platform platform,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(platformService.platformWorkReportList(platform));
+    }
+
 
     @ApiOperation("鏍规嵁鏈堝彴缁勮幏鍙栨湀鍙板垪琛ㄤ俊鎭�")
     @GetMapping("/listByGroupId")
@@ -117,8 +124,6 @@
     public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         return ApiResponse.success(platformService.findById(id));
     }
-
-
 
 
     @ApiOperation("鑾峰彇鏈堝彴缁勪俊鎭�")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
index d115d50..d232264 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
@@ -70,6 +70,8 @@
         return ApiResponse.success(platformJobService.findPage(pageWrap));
     }
 
+
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @CloudRequiredPermission("business:platformjob:exportExcel")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
index 74e4fe0..f91e1ab 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
@@ -187,7 +187,29 @@
     @TableField(exist = false)
     private String workCarCode;
 
+    @ApiModelProperty(value = "寮�濮嬫椂闂� yyyy-MM-dd", example = "1")
+    @TableField(exist = false)
+    private Date queryDateStart;
 
+    @ApiModelProperty(value = "缁撴潫鏃堕棿 yyyy-MM-dd", example = "1")
+    @TableField(exist = false)
+    private Date queryDateEnd;
+
+    @ApiModelProperty(value = "鍋滈潬娆℃暟", example = "1")
+    @TableField(exist = false)
+    private Integer stopCount;
+
+    @ApiModelProperty(value = "宸ヤ綔鏃堕暱 鍗曚綅h", example = "1")
+    @TableField(exist = false)
+    private BigDecimal workCountTime;
+
+    @ApiModelProperty(value = "鏈堝彴宸ヤ綔寮�鏀炬椂闀�" ,hidden = true)
+    @TableField(exist = false)
+    private BigDecimal openTime ;
+
+    @ApiModelProperty(value = "浣跨敤鐜�", example = "1")
+    @TableField(exist = false)
+    private BigDecimal useRata;
 
     @ApiModelProperty(value = "鏈堝彴浣滀笟鏁版嵁")
     @TableField(exist = false)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
index d9c8c84..c60aa27 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -355,14 +355,33 @@
     @TableField(exist = false)
     private Integer jobType;
 
-    @ApiModelProperty(value = "寮�濮嬩换鍔℃椂闂磋捣")
+    @ApiModelProperty(value = "寮�濮嬩綔涓氭椂闂磋捣")
     @TableField(exist = false)
     private Date beginWorkDateStart;
 
-    @ApiModelProperty(value = "寮�濮嬩换鍔℃椂闂存")
+    @ApiModelProperty(value = "寮�濮嬩綔涓氭椂闂存")
     @TableField(exist = false)
     private Date beginWorkDateEnd;
 
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿璧�")
+    @TableField(exist = false)
+    private Date createDateStart;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿姝�")
+    @TableField(exist = false)
+    private Date createDateEnd;
+
+    @ApiModelProperty(value = "鏈堝彴缁勫悕绉�")
+    @TableField(exist = false)
+    private String platformGroupName ;
+
+    @ApiModelProperty(value = "鏈堝彴宸ヤ綔鏃堕暱" ,hidden = true)
+    @TableField(exist = false)
+    private BigDecimal workTimes ;
+
+
+
     @ApiModelProperty(value = "澶氱姸鎬佹煡璇� 澶氫釜浠�,鍒嗗壊")
     @TableField(exist = false)
     private String queryStatus;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java
index cf2adf0..0c2f6c2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java
@@ -32,5 +32,7 @@
     private String repertotyAddress;
     @ApiModelProperty(value = "鏉ユ簮鍦帮紙渚涘簲鍟嗗涓級")
     private List<String> inRepertotyCode;
+    @ApiModelProperty(value = "鏀惰揣淇℃伅")
+    private List<PlatformDataWmsInfoResponse> platformDataWmsInfoResponseList;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java
new file mode 100644
index 0000000..865a566
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.openapi.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/12/7 11:19
+ */
+@Data
+@ApiModel("銆愭湀鍙般�戞湀鍙板綋鍓嶄綔涓氫俊鎭疻MS璇︽儏杩斿洖鍙傛暟")
+public class PlatformDataWmsInfoResponse {
+    @ApiModelProperty(value = "璁″垝鏀惰揣鏁伴噺", example = "1")
+    private BigDecimal ioQty;
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О", example = "1")
+    private String  materialName;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java
index 5af0cb3..649e39f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java
@@ -24,6 +24,9 @@
     @ApiModelProperty(value = "鍚庤溅鐗屽彿 鑷姩寮�濮嬩换鍔′娇鐢�")
     private String carCodeBack;
 
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
     @ApiModelProperty(value = "鏈堝彴鐩告満涓婚敭 鑷姩寮�濮嬩换鍔′娇鐢�")
     private Integer deviceId;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java
index 7fcd0c9..801474f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java
@@ -22,7 +22,7 @@
     @ApiModelProperty(value = "宸插彨鍙锋暟閲�")
     private Integer callNum = 0;
 
-    @ApiModelProperty(value = "绛夊緟鏁伴噺")
+    @ApiModelProperty(value = "绛夊緟鏁伴噺 杞Щ + 鏈堝彴缁勪笅 宸茬鍒版暟鎹�")
     private Integer waitNum = 0;
 
     @ApiModelProperty(value = "寮傚父鏁伴噺")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java
index 81fe289..3a82283 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java
@@ -104,4 +104,5 @@
 
     List<PlatformStatusListResponse>  getPlatformStatusList();
 
+    List<Platform> platformWorkReportList(Platform platform);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
index 7257cc8..7f9fd75 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
@@ -261,7 +261,9 @@
                                     Constants.PlatformJobStatus.CALLED.getKey(),
                                     Constants.PlatformJobStatus.WORKING.getKey(),
                                     Constants.PlatformJobStatus.EXCEPTION.getKey(),
-                                    Constants.PlatformJobStatus.OVER_NUMBER.getKey()
+                                    Constants.PlatformJobStatus.OVER_NUMBER.getKey(),
+                                    Constants.PlatformJobStatus.TRANSFERING.getKey()
+
                             )
 //                    .like(PlatformJob::getArriveDate,DateUtil.getCurrDate())
                     .orderByDesc(PlatformJob::getCreateDate)
@@ -282,7 +284,8 @@
         PlatformWorkVO platformWorkVO = new PlatformWorkVO();
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobList)){
             //鑾峰彇鏈堝彴涓嬬殑鎵�鏈変綔涓氭暟鎹�
-            List<PlatformJob> platformJobs = platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),platformId)).collect(Collectors.toList());
+            List<PlatformJob> platformJobs = platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),platformId)
+             && !Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())).collect(Collectors.toList());
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobs)){
                 platformWorkVO.setWorkNum(
                         platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())).collect(Collectors.toList()).size()
@@ -291,7 +294,11 @@
                         platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())).collect(Collectors.toList()).size()
                 );
                 platformWorkVO.setWaitNum(
-                        platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())).collect(Collectors.toList()).size()
+                        platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.TRANSFERING.getKey())
+                        ).collect(Collectors.toList()).size()
+                        +
+                        platformJobList.stream().filter(i->Constants.equalsInteger(platformId,i.getPlatformId())
+                                && Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())).collect(Collectors.toList()).size()
                 );
                 platformWorkVO.setExceptionNum(
                         platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey())).collect(Collectors.toList()).size()
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index af60a31..11d0117 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -158,10 +158,12 @@
         queryWrapper
                 .selectAll(PlatformJob.class)
                 .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                .selectAs(PlatformGroup::getName,PlatformJob::getPlatformGroupName)
                 .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                 .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                 .selectAs(SystemUser::getUsername,PlatformJob::getOutUserName)
                 .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
+                .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId)
                 .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                 .leftJoin(SystemUser.class,SystemUser::getId,PlatformJob::getOutUserId)
                 .eq(pageWrap.getModel().getId() != null, PlatformJob::getId, pageWrap.getModel().getId())
@@ -239,8 +241,11 @@
                 .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
 
                 .apply(pageWrap.getModel().getQueryStatus() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatus()+"')")
-                .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart()))
-                .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd()))
+                .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart()))
+                .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd()))
+
+                .ge(pageWrap.getModel().getCreateDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getCreateDateStart()))
+                .le(pageWrap.getModel().getCreateDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDateEnd()))
                 .eq(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh)
                 .ne(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ZERO,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh)
         ;
@@ -277,15 +282,31 @@
                 .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                 .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
                 .like(pageWrap.getModel().getCarCodeFront() != null, PlatformJob::getCarCodeFront, pageWrap.getModel().getCarCodeFront())
-                .eq(Objects.nonNull(pageWrap.getModel().getCallType())
-                        &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+//                .eq(Objects.nonNull(pageWrap.getModel().getCallType())
+//                        &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),
+//                        PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+//                )
+
+                .apply(Objects.nonNull(pageWrap.getModel().getCallType())
+                                &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),
+                        " ( " +
+                                " ( t.`STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and t.PLATFORM_GROUP_ID = ( SELECT p.group_id FROM platform p WHERE p.id = "+pageWrap.getModel().getPlatformId()+" LIMIT 1 )  )" +
+                                ") "
                 )
-                .and(Objects.nonNull(pageWrap.getModel().getCallType())
-                        &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.TWO),
-                        i->i.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()).or()
-                                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.IN_WAIT.getKey()).or()
-                                .apply(" ( t.status = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" ) ")
+
+
+                .apply(Objects.nonNull(pageWrap.getModel().getCallType())
+                                &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.TWO),
+                                 " ( " +
+                                         " ( t.`STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and t.PLATFORM_GROUP_ID = ( SELECT p.group_id FROM platform p WHERE p.id = "+pageWrap.getModel().getPlatformId()+" LIMIT 1 )  )" +
+                                         " or  " +
+                                         " (t.`STATUS` = "+Constants.PlatformJobStatus.IN_WAIT.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" )" +
+                                         " or " +
+                                         "  (t.`STATUS` = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" )  " +
+                                         ") "
                 )
+
+
                 .and(Objects.nonNull(pageWrap.getModel().getCallType())
                                 &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.THREE),
                         i->i.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()).or()
@@ -356,7 +377,7 @@
                 //璁$畻棰勮绛夊緟鏃堕棿
                 List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda().eq(Platform::getIsdeleted,Constants.ZERO).eq(Platform::getGroupId,platformJob.getPlatformGroupId()));
                 BigDecimal workRate = platformList.stream().map(m->m.getWorkRate()).reduce(BigDecimal.ZERO,BigDecimal::add);
-                if(sumWorkRate.compareTo(BigDecimal.ZERO) == Constants.ZERO|| workRate.compareTo(BigDecimal.ZERO)  == Constants.ZERO ){
+                if(sumWorkRate.compareTo(BigDecimal.ZERO) > Constants.ZERO && workRate.compareTo(BigDecimal.ZERO)  > Constants.ZERO ){
                     BigDecimal sumMinute = sumWorkRate.divide(workRate,1, RoundingMode.HALF_DOWN).multiply(BigDecimal.valueOf(60L));
                     Integer sumMinuteInteger = sumMinute.intValue();
                     Integer hours = sumMinuteInteger/60;
@@ -510,6 +531,8 @@
             ){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓氬姟鐘舵�佸凡娴佽浆锛岃鍒锋柊鏌ョ湅");
             }
+            platformJob.setArriveDate(Objects.isNull(platformJob.getArriveDate())?new Date():null);
+            platformJob.setConfirmTaskDate(Objects.isNull(platformJob.getConfirmTaskDate())?new Date():null);
         }else{
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"绛惧埌绫诲瀷閿欒");
         }
@@ -707,7 +730,8 @@
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public void platformInPark(JobOperateDTO jobOperateDTO){
         if(Objects.isNull(jobOperateDTO)
-                || Objects.isNull(jobOperateDTO.getJobId())){
+                || Objects.isNull(jobOperateDTO.getJobId())
+                || Objects.isNull(jobOperateDTO.getPlatformId())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
@@ -717,9 +741,26 @@
         if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,涓氬姟鐘舵�佸凡娴佽浆锛�");
         }
+
+        Platform platform = platformJoinMapper.selectById(jobOperateDTO.getPlatformId());
+        if(Objects.isNull(platform)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
+        }
+
+        //鍒ゆ柇鏄惁闇�瑕佸~鍏呰繘鍘�
+        if(StringUtils.isBlank(platformJob.getPlatforms())){
+            platformJob.setPlatforms(jobOperateDTO.getPlatformId().toString());
+            platformJob.setPlatformNames(platform.getName());
+        }else{
+            if(!Constants.equalsInteger(platform.getId(),platformJob.getPlatformId())){
+                platformJob.setPlatforms(platformJob.getPlatforms() + "," +jobOperateDTO.getPlatformId().toString());
+                platformJob.setPlatformNames(platformJob.getPlatformNames() + "," +platform.getName());
+            }
+        }
+
         PlatformJob oldPlatformJob = new PlatformJob();
         BeanUtils.copyProperties(platformJob,oldPlatformJob);
-
+        platformJob.setPlatformId(platform.getId());
         platformJob.setInwaitDate(new Date());
         platformJob.setInwaitUserId(jobOperateDTO.getLoginUserInfo().getId());
         platformJob.setStatus(Constants.PlatformJobStatus.IN_WAIT.getKey());
@@ -764,10 +805,19 @@
         if(Objects.isNull(platform)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
         }
+
+        //鏌ヨ鏈堝彴浠诲姟绛夊緟浣滀笟鏁伴噺
+        if(platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
+                .eq(PlatformJob::getPlatformId,platform.getId())
+                .in(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey(),Constants.PlatformJobStatus.WORKING.getKey())
+        )>platform.getWorkingNum()){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瓒呭嚭鏈堝彴鍙悓鏃朵綔涓氭暟閲廩"+platform.getWorkingNum()+"杈哴");
+        };
+
         PlatformJob oldPlatformJob = new PlatformJob();
         BeanUtils.copyProperties(platformJob,oldPlatformJob);
 
-        platformJob.setCallDate(new Date());
+        platformJob.setCallDate(Objects.isNull(platformJob.getCallDate())?new Date():null);
         platformJob.setCallUserId(jobOperateDTO.getLoginUserInfo().getId());
         platformJob.setStatus(Constants.PlatformJobStatus.CALLED.getKey());
         platformJob.setPlatformId(jobOperateDTO.getPlatformId());
@@ -776,8 +826,10 @@
             platformJob.setPlatforms(jobOperateDTO.getPlatformId().toString());
             platformJob.setPlatformNames(platform.getName());
         }else{
-            platformJob.setPlatforms(platformJob.getPlatforms() + "," +jobOperateDTO.getPlatformId().toString());
-            platformJob.setPlatformNames(platformJob.getPlatformNames() + "," +platform.getName());
+            if(!Constants.equalsInteger(platform.getId(),platformJob.getPlatformId())){
+                platformJob.setPlatforms(platformJob.getPlatforms() + "," +jobOperateDTO.getPlatformId().toString());
+                platformJob.setPlatformNames(platformJob.getPlatformNames() + "," +platform.getName());
+            }
         }
         platformJob.setEditDate(new Date());
         platformJobMapper.updateById(platformJob);
@@ -924,10 +976,9 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
         }
 
+
         PlatformJob oldPlatformJob = new PlatformJob();
         BeanUtils.copyProperties(platformJob,oldPlatformJob);
-
-
         if(Objects.isNull(platformJob.getStartDate())){
             platformJob.setStartDate(new Date());
         }
@@ -1006,7 +1057,6 @@
         //瀛樺偍鎿嶄綔鏃ュ織
         savePlatformLog(Constants.PlatformJobLogType.AUTHED_LEAVE.getKey(),oldPlatformJob,platformJob ,
                 Constants.PlatformJobLogType.AUTHED_LEAVE.getInfo());
-
         //TODO 鎺堟潈杞﹁締绂诲満鏉冮檺
     }
 
@@ -1372,7 +1422,16 @@
                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){
                     List<String> stringList = platformWmsDetailList.stream().map(m->m.getInRepertotyCode()).collect(Collectors.toList());
                     response.setInRepertotyCode(stringList);
+                    List<PlatformDataWmsInfoResponse> platformDataWmsInfoResponseList = new ArrayList<>();
+                    for (PlatformWmsDetail platformWmsDetail:platformWmsDetailList) {
+                        PlatformDataWmsInfoResponse platformDataWmsInfoResponse = new PlatformDataWmsInfoResponse();
+                        platformDataWmsInfoResponse.setMaterialName(platformWmsDetail.getMaterialName());
+                        platformDataWmsInfoResponse.setIoQty(platformWmsDetail.getIoQty());
+                        platformDataWmsInfoResponseList.add(platformDataWmsInfoResponse);
+                    }
+                    response.setPlatformDataWmsInfoResponseList(platformDataWmsInfoResponseList);
                 }
+
             }
         }
         return response;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
index 589330c..5ccb79f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
@@ -7,10 +7,13 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.DeviceMapper;
 import com.doumee.dao.business.PlatformDeviceMapper;
+import com.doumee.dao.business.PlatformJobMapper;
 import com.doumee.dao.business.PlatformMapper;
+import com.doumee.dao.business.join.PlatformJobJoinMapper;
 import com.doumee.dao.business.join.PlatformJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.openapi.response.PlatformNumByStatusResponse;
@@ -29,6 +32,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -48,6 +52,8 @@
     private PlatformDeviceMapper platformDeviceMapper;
     @Autowired
     private DeviceMapper deviceMapper;
+    @Autowired
+    private PlatformJobJoinMapper platformJobJoinMapper;
 
 
 
@@ -294,10 +300,66 @@
                     );
                 }
             }
-
         }
-
         return platformPageData;
+    }
+
+    @Override
+    public List<Platform> platformWorkReportList(Platform platform) {
+        if(Objects.isNull(platform)
+        || Objects.isNull(platform.getQueryDateStart())
+                || Objects.isNull(platform.getQueryDateEnd())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鍙傛暟閿欒");
+        }
+        MPJLambdaWrapper<Platform> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Platform.class)
+                .selectAs(PlatformGroup::getName,Platform::getGroupName)
+                .select(" (select ifnull(TIMESTAMPDIFF(HOUR, '2023-01-01 '||pg.start_time||':00', '2023-01-01 '||pg.end_time||':00' ),0) from platform_group pg " +
+                        " where t.group_id = pg.id ) as openTime ")
+                .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId);
+        queryWrapper
+                .eq(platform.getGroupId() != null, Platform::getGroupId, platform.getGroupId())
+                .eq( Platform::getIsdeleted, Constants.ZERO)
+                .like(platform.getName() != null, Platform::getName, platform.getName())
+                .orderByDesc(Platform::getId);
+        List<Platform> platformList = platformJoinMapper.selectList(queryWrapper);
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformList)){
+            //鏌ヨ鎵�鏈夋湀鍙版暟鎹笅鐨� 浠诲姟鏁版嵁  浠诲姟鏁版嵁涓�
+            List<PlatformJob> platformJobList = platformJobJoinMapper.selectJoinList(PlatformJob.class,
+                    new MPJLambdaWrapper<PlatformJob>()
+                    .selectAll(PlatformJob.class)
+                    .select(" ( select ROUND( ifnull(SUM(pl.PARAM3),0) / 3600 , 2 )   from platform_log pl  where pl.OBJ_ID = t.id " +
+                            " ) as workTimes ")
+                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey(),
+                            Constants.PlatformJobStatus.DONE.getKey(),
+                            Constants.PlatformJobStatus.TRANSFERING.getKey(),
+                            Constants.PlatformJobStatus.EXCEPTION.getKey(),
+                            Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),
+                            Constants.PlatformJobStatus.LEAVED.getKey()
+                    )
+                    .in(PlatformJob::getPlatformId,platformList.stream().map(i->i.getId()).collect(Collectors.toList()))
+                    .ge(platform.getQueryDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(platform.getQueryDateStart()))
+                    .le(platform.getQueryDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(platform.getQueryDateEnd()))
+            );
+            //鏌ヨ2鏃ユ湡鐩稿樊澶╂暟
+            Integer sumDays = DateUtil.daysBetweenDates(platform.getQueryDateStart(),platform.getQueryDateEnd());
+            for (Platform bean:platformList) {
+                List<PlatformJob> beanJobList = platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),bean.getId())).collect(Collectors.toList());
+                bean.setStopCount(beanJobList.size());
+                bean.setWorkCountTime(
+                        beanJobList.stream().map(i->i.getWorkTimes()).reduce(BigDecimal.ZERO,BigDecimal::add)
+                );
+                if(Objects.isNull(bean.getOpenTime())||bean.getOpenTime().compareTo(BigDecimal.ZERO)<=0){
+                    bean.setUseRata(BigDecimal.ZERO);
+                    continue;
+                }
+                BigDecimal sumTime = BigDecimal.valueOf(sumDays).multiply(bean.getOpenTime());
+                bean.setUseRata(
+                        bean.getWorkCountTime().divide(sumTime,BigDecimal.ROUND_HALF_DOWN,2)
+                );
+            }
+        }
+        return platformList;
     }
 
     @Override
@@ -352,17 +414,17 @@
                 if(Constants.equalsInteger(platform.getPlatformStatus(),Constants.ONE)){
                     response.setCarCode(platform.getWorkCarCode());
                 }
-
-
-
             }
         }
-
-
         return platformStatusListResponses;
-
     }
 
 
 
+
+
+
+
+
+
 }

--
Gitblit v1.9.3