jiangping
2024-11-12 658c1d5fcc47ca30c72c51f98f2df739700fe125
最新版本541200007
已修改8个文件
201 ■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/ChangNeiDiaoduController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsDetail.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -304,10 +304,10 @@
        }
        int l = s.length();
        if(Constants.equalsInteger(l,7)){
            return s.substring(0,3)+"***"+s.substring(l-1,l);
            return s.substring(0,3)+"**"+s.substring(l-2,l);
        }
        if(l <= 8){
            return s.substring(0,3)+"****"+s.substring(l-1,l);
            return s.substring(0,3)+"***"+s.substring(l-2,l);
        }
        return s;
    }
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -1283,6 +1283,9 @@
     * @return
     */
    public static Date getXMinuteAfterDate(Date date, int minute) {
        if(date ==null){
            date = new Date();
        }
        Calendar now = Calendar.getInstance();
        now.setTime(date);
        now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minute);
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/ChangNeiDiaoduController.java
@@ -103,22 +103,10 @@
    @ApiOperation("实时作业效率")
    @GetMapping("/workEfficiency")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "查询类型:0=入库;1=出库", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "查询类型:0=入库;1=出库,默认 0", required = true),
    })
    public ApiResponse<List<WorkEfficiencyVO>> workEfficiency(@RequestParam Integer type) {
        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>();
        Random random = new Random();
        Integer totalWorkNum = 0;
        for (int i = 8; i <= 20; i++) {
            if(i%2==0){
                WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO();
                workEfficiencyVO.setWorkNum(200+random.nextInt(100));
                totalWorkNum = totalWorkNum + workEfficiencyVO.getWorkNum();
                workEfficiencyVO.setTotalWorkNum(totalWorkNum);
                workEfficiencyVO.setWorkTime(StringUtils.leftPad(i+"",2,"0") +":00");
                workEfficiencyVOList.add(workEfficiencyVO);
            }
        }
        List<WorkEfficiencyVO> workEfficiencyVOList = boardService.workEfficiency(type);
        return ApiResponse.success(workEfficiencyVOList);
    }
@@ -129,19 +117,9 @@
    @ApiOperation("实时月台作业信息")
    @GetMapping("/platformWorkData")
    public ApiResponse<List<PlatformWorkDataVO>> platformWorkData() {
        List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
            PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
            platformDurationVO.setPlatformName(i+"_月台名称");
            platformDurationVO.setCarNo("皖A8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
            platformDurationVO.setWorkType(random.nextInt(1));
            platformDurationVO.setWorkNum(100+random.nextInt(100));
            platformDurationVO.setFinishTime(Long.valueOf(System.currentTimeMillis()/1000 + 200+random.nextInt(100)));
            platformDurationVO.setStatus(random.nextInt(2));
            platformWorkDataVOList.add(platformDurationVO);
        }
        List<PlatformWorkDataVO> platformWorkDataVOList  = boardService.platformWorkData();
        return ApiResponse.success(platformWorkDataVOList);
    }
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsDetail.java
@@ -92,4 +92,7 @@
    @ApiModelProperty(value = "月分组名称" ,hidden = true)
    @TableField(exist = false)
    private String groupName ;
    @ApiModelProperty(value = "作业完成时间(最终时间)")
    @TableField(exist = false)
    private Date doneDate;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java
@@ -17,6 +17,10 @@
    @ApiModelProperty(value = "月台名称")
    private String platformName;
    @ApiModelProperty(value = "月台编码")
    private Integer platformId;
    @ApiModelProperty(value = "月台排序")
    private Integer platformSort;
    @ApiModelProperty(value = "车牌号")
    private String carNo;
@@ -28,12 +32,14 @@
    private Integer workType;
    @ApiModelProperty(value = "作业时长 单位 分钟")
    private Integer workTime;
    private Long workTime;
    @ApiModelProperty(value = "预计完成时间 单位:时间戳")
    private Long finishTime;
    @ApiModelProperty(value = "预计完成时间 格式HH:mm")
    private String finishTimeStr;
    @ApiModelProperty(value = "月台状态:0=作业中;1=空闲中;2=作业超时")
    @ApiModelProperty(value = "月台状态:0=作业中;1=空闲中;2=作业超时;3=叫号中")
    private Integer status;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -694,7 +694,7 @@
            }
        }
        platformJob.dealTime();
        this.getWorkTime(platformJob);
        this.getWorkTime(platformJob,platformLogMapper);
        this.getWmsJobData(platformJob);
        return platformJob;
    }
@@ -776,7 +776,7 @@
     * 获取已作业时间
     * @param platformJob
     */
    public Long getWorkTime(PlatformJob platformJob){
    public static Long getWorkTime(PlatformJob platformJob,PlatformLogMapper platformLogMapper){
        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>()
                .lambda().eq(PlatformLog::getIsdeleted,Constants.ZERO)
                .eq(PlatformLog::getJobId,platformJob.getId())
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -14,11 +14,15 @@
import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
import com.doumee.core.haikang.model.param.respose.PageSensorStatusResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
import com.doumee.dao.web.response.platformReport.*;
import com.doumee.service.business.impl.PlatformJobServiceImpl;
import com.doumee.service.business.third.BoardService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
@@ -26,6 +30,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -253,7 +258,7 @@
                .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
                        , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                        , Constants.PlatformJobStatus.LEAVED.getKey())
                .apply("to_days(t1.create_data) = to_days(now())")
                .apply("to_days(t1.create_date) = to_days(now())")
                .groupBy(PlatformGroup::getId)
        );
        if(jobList!=null){
@@ -274,6 +279,140 @@
        );
        carWorkSituationVO.setPlatformLogList(platformLogList);
        return carWorkSituationVO;
    }
    @Override
    public  List<PlatformWorkDataVO> platformWorkData(){
        List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>();
        List<Platform> platformList = platformMapper.selectJoinList(Platform.class, new MPJLambdaWrapper<Platform>()
                .selectAll( Platform.class)
                .eq(Platform::getIsdeleted, Constants.ZERO)
                .orderByAsc(Platform::getSortnum)
        );
        /**
         *    WAIT_CONFIRM(0, "待确认","待确认" ),
     *         WART_SIGN_IN(1, "待签到","待签到" ),
     *         WAIT_CALL(2, "已签到","已签到"),
     *         IN_WAIT(3, "入园等待","入园等待" ),
     *         CALLED(4, "已叫号","已叫号" ),
     *         WORKING(5, "作业中","作业中" ),
     *         DONE(6, "作业完成 ","作业完成" ),
     *         TRANSFERING(7, "转移中","转移中" ),
     *         EXCEPTION(8, "异常挂起","异常挂起" ),
     *         AUTHED_LEAVE(9, "已授权离园","已授权离园" ),
     *         LEAVED(10, "已离园 ","已离园 " ),
     *         OVER_NUMBER(11, "已过号","已过号" ),
     *         CANCEL(12, "已取消","已取消" ),
         */
        if(platformList!=null && platformList.size()>0){
            List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
                    .selectAll( PlatformJob.class)
                    .select("( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.WORKING.getKey()+"  order by pl.CREATE_DATE desc  limit 1  ) as newStartDate")
                    .select(" (select sum(ifnull(pl.IO_QTY , 0 ))   from platform_wms_detail pl  where   pl.job_id = t.id and pl.isdeleted=0 )",PlatformJob::getWorkNum)
                    .apply("to_days(t.create_date) = to_days(now())")
                    .eq(Platform::getIsdeleted, Constants.ZERO)
                    .in(PlatformJob ::getStatus,new Integer[]{Constants.PlatformJobStatus.WORKING.getKey(),Constants.PlatformJobStatus.CALLED.getKey() })
                    .orderByDesc(PlatformJob::getStatus ));
            //月台状态:0=作业中;1=空闲中;2=作业超时;3=叫号
            for(Platform model : platformList){
                PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
                platformDurationVO.setPlatformName(model.getName());
                platformDurationVO.setPlatformId(model.getId());
                platformDurationVO.setPlatformSort(model.getSortnum());
                PlatformJob job = getJobFromListById(model.getId(),jobList);
                if(job != null){
                    if(Constants.equalsInteger(job.getType(),Constants.ONE) || Constants.equalsInteger(job.getType(),Constants.THREE)){
                        platformDurationVO.setWorkType(Constants.ONE);//如果是装货
                    }else{
                        platformDurationVO.setWorkType(Constants.ZERO);//如果是卸货
                    }
                    Integer workMinute = job.getWorkNum().multiply(new BigDecimal(60)).divide(model.getWorkRate(),0,BigDecimal.ROUND_HALF_UP).intValue();
                    Date overDate = DateUtil.getXMinuteAfterDate(job.getNewStartDate(),workMinute + model.getWorkTimeoutAlarmTime());//预计完成时间
                    platformDurationVO.setFinishTimeStr(DateUtil.DateToStr(overDate,"HH:mm"));
                    platformDurationVO.setWorkNum(Constants.formatBigdecimal(job.getWorkNum()).intValue());
                    platformDurationVO.setCarNo(job.getCarCodeFront());//车牌号
                    if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey() )){
                        platformDurationVO.setStatus(Constants.THREE); //叫号中
                    }else{
                        platformDurationVO.setStatus(Constants.ZERO); //作业中
                        platformDurationVO.setWorkTime(PlatformJobServiceImpl.getWorkTime(job,platformLogMapper));//已工作时间
                        if(overDate.getTime() < System.currentTimeMillis() ){
                            model.setStatus(Constants.TWO); //作业已超时
                        }
                    }
                }else{
                    platformDurationVO.setStatus(Constants.ONE);//空闲中
                }
                platformWorkDataVOList.add(platformDurationVO);
            }
        }
        return  platformWorkDataVOList;
    }
    private PlatformJob getJobFromListById(Integer id, List<PlatformJob> jobList) {
        if(jobList!=null){
            for(PlatformJob job :jobList){
                if(Constants.equalsInteger(job.getPlatformId(),id)){
                    return  job;
                }
            }
        }
        return null;
    }
    /**
     *
     * @param type 查询类型:0=入库;1=出库
     * @return
     */
    @Override
    public   List<WorkEfficiencyVO> workEfficiency(Integer type){
        //作业类型 0自有车卸货 1自有车装货 2外协车卸货 3外协车装货 4市公司外协车卸货
        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>();
        List<PlatformWmsDetail> jobList = platformWmsDetailMapper.selectJoinList(PlatformWmsDetail.class, new MPJLambdaWrapper<PlatformWmsDetail>()
                .selectAll( PlatformWmsDetail.class)
                .selectAs( PlatformJob::getDoneDate,PlatformWmsDetail::getDoneDate)
                .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformWmsDetail::getJobId)
                .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)
                .eq(PlatformJob::getIsdeleted, Constants.ZERO)
                .in(Constants.equalsInteger(type,Constants.ZERO),PlatformJob::getType,new Integer[]{0,2,4})
                .in(Constants.equalsInteger(type,Constants.ONE),PlatformJob::getType,new Integer[]{1,3})
                .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
                        , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                        , Constants.PlatformJobStatus.LEAVED.getKey())
                .apply("to_days(t1.create_date) = to_days(now())")
        );
        int curtotalNum = 0;
        Date today =  Utils.Date.getStart(new Date());
        long curTime=0, lastTime=0;
        for (int i = 0; i < 8; i++) {
            lastTime = curTime;//上次的时间
            int curHour = 8+(i*2);
            long time = curHour*60*60*1000 + today.getTime();
            WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO();
            workEfficiencyVO.setWorkTime(curHour+":00");
            if(jobList!=null && jobList.size()>0){
                for(PlatformWmsDetail detail : jobList){
                    if(detail.getDoneDate()!=null && detail.getDoneDate().getTime()<= time){
                        //当前量
                        if(detail.getDoneDate()!=null && detail.getDoneDate().getTime() > lastTime){
                            //区间值 取实近2小时内的累计值
                            workEfficiencyVO.setWorkNum(Constants.formatIntegerNum(workEfficiencyVO.getWorkNum())+Constants.formatBigdecimal(detail.getIoQty()).intValue());
                        }
                        //累积量
                        curtotalNum += Constants.formatBigdecimal(detail.getIoQty()).intValue();
                    }
                }
            }
            workEfficiencyVO.setTotalWorkNum(curtotalNum);//累计值
            workEfficiencyVOList.add(workEfficiencyVO);
        }
        return workEfficiencyVOList;
    }
    @Override
    public List<PlatformDurationVO> platformDuration(){
@@ -330,7 +469,7 @@
                .selectAll(PlatformJob.class)
                .select("count(id)" ,PlatformJob::getCountum)
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_data) = to_days(now())" )
                .apply("to_days(create_date) = to_days(now())" )
                .groupBy(PlatformJob::getStatus )
        );
        if(jobList!=null){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
@@ -44,4 +44,8 @@
    List<PlatformWarnEvent> warningList(int limit);
    List<PlatformDurationVO> platformDuration();
    List<WorkEfficiencyVO> workEfficiency(Integer type);
    List<PlatformWorkDataVO> platformWorkData();
}