k94314517
2024-09-24 45f553e1c5f9d1b948c131fd42ca89d7910ffe03
代码初始化
已添加1个文件
已修改11个文件
274 ■■■■ 文件已修改
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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("获取月台组信息")
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")
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)
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;
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;
}
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("【月台】月台当前作业信息WMS详情返回参数")
public class PlatformDataWmsInfoResponse {
    @ApiModelProperty(value = "计划收货数量", example = "1")
    private BigDecimal ioQty;
    @ApiModelProperty(value = "物料名称", example = "1")
    private String  materialName;
}
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;
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 = "异常数量")
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);
}
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()
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;
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;
    }
}