liukangdong
2024-09-25 75310c871f4cb82a6985161fbc7e3c7d86f066a4
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
已添加8个文件
已修改27个文件
1211 ■■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWarnEventCloudController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWmsJobCloudController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformWarnEventMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java 28 ●●●●● 补丁 | 查看 | 原始文档 | 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/business/model/PlatformWarnEvent.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/WmsJobContractVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | 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/reqeust/SavePlatformWarnEventDTO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | 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/PlatformJobService.java 20 ●●●● 补丁 | 查看 | 原始文档 | 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/PlatformWarnEventService.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWmsJobService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | 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 229 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -44,6 +44,7 @@
    public static final String HK_ROOTORG_CODE ="HK_ROOTORG_CODE" ;
    public static final String HK_ROOTORG_NAME ="HK_ROOTORG_NAME" ;
    public static final String PLATFORM ="PLATFORM" ;
    public static final String POWER_MINUTE ="POWER_MINUTE" ;
    public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ;
    public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ;
    public static final String SIGN_IN_PLACE_LNT ="SIGN_IN_PLACE_LNT" ;
@@ -745,6 +746,55 @@
    }
    public  enum PlatformWarnEvent {
        STOP_TIMEOUT(0, "停靠超时","${carCode}月台停靠超时" ),
        STOP_ERROR(1, "停靠错误","${carCode}月台停靠错误" );
        // æˆå‘˜å˜é‡
        private int key;
        private String name;
        private String info;
        // æž„造方法
        PlatformWarnEvent(int key, String name,String info ) {
            this.key = key;
            this.info = info;
            this.name = name;
        }
        public static String getName(int index) {
            for (PlatformWarnEvent c : PlatformWarnEvent.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
    }
    /**
     * æœˆå°ä½œä¸š çŠ¶æ€
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -1229,6 +1229,20 @@
    }
    /**
     * å¾—到X分钟后的时间(时间格式)
     *
     * @param date
     * @param minute
     * @return
     */
    public static Date getXMinuteAfterDate(Date date, int minute) {
        Calendar now = Calendar.getInstance();
        now.setTime(date);
        now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minute);
        return now.getTime();
    }
    /**
     * å¾—到两个日期之间相差的天数
     *
     * @param newDate
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("获取月台组信息")
@@ -159,7 +164,8 @@
    @PostMapping("/platformInPark")
    public ApiResponse platformInPark (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.platformInPark(jobOperateDTO);
        PlatformJob platformJob = platformJobService.platformInPark(jobOperateDTO);
        platformJobService.sendInPark(platformJob);
        return ApiResponse.success("操作成功");
    }
@@ -167,7 +173,11 @@
    @PostMapping("/platformCallNumber")
    public ApiResponse platformCallNumber (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.platformCallNumber(jobOperateDTO);
        PlatformJob oldPlatformJob = platformJobService.findById(jobOperateDTO.getJobId());
        PlatformJob platformJob = platformJobService.platformCallNumber(jobOperateDTO);
        if(Constants.equalsInteger(oldPlatformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
            platformJobService.sendInPark(platformJob);
        }
        return ApiResponse.success("操作成功");
    }
@@ -200,7 +210,8 @@
    @PostMapping("/beginWork")
    public ApiResponse beginWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.beginWork(jobOperateDTO);
        PlatformJob platformJob = platformJobService.beginWork(jobOperateDTO);
        platformJobService.cancelInPark(platformJob);
        return ApiResponse.success("操作成功");
    }
@@ -209,7 +220,9 @@
    @PostMapping("/finishWork")
    public ApiResponse finishWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.finishWork(jobOperateDTO);
        PlatformJob platformJob = platformJobService.finishWork(jobOperateDTO);
        //下发离园权限
        platformJobService.sendInPark(platformJob);
        return ApiResponse.success("操作成功");
    }
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_admin/src/main/java/com/doumee/cloud/admin/PlatformWarnEventCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.dao.business.model.PlatformWarnEvent;
import com.doumee.service.business.PlatformWarnEventService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/09/25 09:41
 */
@Api(tags = "月台预警信息")
@RestController
@RequestMapping("/business/platformWarnEvent")
public class PlatformWarnEventCloudController extends BaseController {
    @Autowired
    private PlatformWarnEventService platformWarnEventService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:platformwarnevent:create")
    public ApiResponse create(@RequestBody PlatformWarnEvent platformWarnEvent) {
        return ApiResponse.success(platformWarnEventService.create(platformWarnEvent));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:platformwarnevent:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        platformWarnEventService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:platformwarnevent:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        platformWarnEventService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:platformwarnevent:update")
    public ApiResponse updateById(@RequestBody PlatformWarnEvent platformWarnEvent) {
        platformWarnEventService.updateById(platformWarnEvent);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:platformwarnevent:query")
    public ApiResponse<PageData<PlatformWarnEvent>> findPage (@RequestBody PageWrap<PlatformWarnEvent> pageWrap) {
        return ApiResponse.success(platformWarnEventService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:platformwarnevent:exportExcel")
    public void exportExcel (@RequestBody PageWrap<PlatformWarnEvent> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(PlatformWarnEvent.class).export(platformWarnEventService.findPage(pageWrap).getRecords(), "月台预警信息", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:platformwarnevent:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(platformWarnEventService.findById(id));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWmsJobCloudController.java
@@ -84,8 +84,7 @@
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:platformwmsjob:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(platformWmsJobService.findById(id));
    public ApiResponse<PlatformWmsJob> findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(platformWmsJobService.findByDetailId(id));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java
@@ -56,6 +56,9 @@
    @Autowired
    private PlatformReasonService platformReasonService;
    @Autowired
    private PlatformWmsJobService platformWmsJobService;
    @ApiOperation("入园原因")
@@ -149,4 +152,12 @@
        return ApiResponse.success(platformJobService.lineUpDetail(lineUpDetailDTO));
    }
    @ApiOperation("WMS运输单详情")
    @GetMapping("/wmsJobDetail")
    public ApiResponse<PlatformWmsJob> wmsJobDetail(@RequestParam Integer id) {
        return ApiResponse.success(platformWmsJobService.findByDetailId(id));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java
@@ -55,6 +55,9 @@
    @Autowired
    private PlatformService platformService;
    @Autowired
    private PlatformWmsJobService platformWmsJobService;
    @ApiOperation("获取月台组信息")
    @PostMapping("/getPlatformGroupList")
    public ApiResponse<List<PlatformGroup>>  getPlatformGroupList (@RequestBody PlatformDataDTO platformDataDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
@@ -100,7 +103,8 @@
    @PostMapping("/platformInPark")
    public ApiResponse platformInPark (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.platformInPark(jobOperateDTO);
        PlatformJob platformJob = platformJobService.platformInPark(jobOperateDTO);
        platformJobService.sendInPark(platformJob);
        return ApiResponse.success("操作成功");
    }
@@ -108,7 +112,11 @@
    @PostMapping("/platformCallNumber")
    public ApiResponse platformCallNumber (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.platformCallNumber(jobOperateDTO);
        PlatformJob oldPlatformJob = platformJobService.findById(jobOperateDTO.getJobId());
        PlatformJob platformJob = platformJobService.platformCallNumber(jobOperateDTO);
        if(Constants.equalsInteger(oldPlatformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
            platformJobService.sendInPark(platformJob);
        }
        return ApiResponse.success("操作成功");
    }
@@ -141,7 +149,8 @@
    @PostMapping("/beginWork")
    public ApiResponse beginWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.beginWork(jobOperateDTO);
        PlatformJob platformJob = platformJobService.beginWork(jobOperateDTO);
        platformJobService.cancelInPark(platformJob);
        return ApiResponse.success("操作成功");
    }
@@ -150,9 +159,18 @@
    @PostMapping("/finishWork")
    public ApiResponse finishWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.finishWork(jobOperateDTO);
        PlatformJob platformJob = platformJobService.finishWork(jobOperateDTO);
        //下发离园权限
        platformJobService.sendInPark(platformJob);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("WMS运输单详情")
    @GetMapping("/wmsJobDetail")
    public ApiResponse<PlatformWmsJob> wmsJobDetail(@RequestParam Integer id) {
        return ApiResponse.success(platformWmsJobService.findByDetailId(id));
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -32,12 +32,19 @@
     * 2、物业后勤:wyhq
     * 3、行政办公:xzbg
     * 4、运营中心:yyzx
     *
     * 1、安防中心:afzx
     * 2、消控中心:xkzx
     * 3、能管中心:ngzx
     */
    public interface MenuPageId{
            String zhaf = "zhaf";//综合安防
            String wyhq = "wyhq";//物业后勤
            String xzbg = "xzbg";//行政办公
            String yyzx = "yyzx";//运营中心
        String afzx = "afzx";//安防中心
        String zhaf = "zhaf";//消控中心
        String ngzx = "ngzx";//能管中心
        String wyhq = "wyhq";//物业后勤
        String xkzx = "xkzx";//综合安防
        String xzbg = "xzbg";//行政办公
        String yyzx = "yyzx";//运营中心
    }
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -387,7 +387,7 @@
    public  static  BaseResponse   parkReservationDeletion(ParkReservationDelRequest param){
        log.info("【海康车位取消预约】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.carChargeDeletion(JSONObject.toJSONString(param));
            String res = HKTools.parkDeletion(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse>(){};
            BaseResponse  result = JSONObject.parseObject(res, typeReference.getType());
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformWarnEventMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.PlatformWarnEvent;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/09/25 09:41
 */
public interface PlatformWarnEventMapper extends BaseMapper<PlatformWarnEvent> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
@@ -12,6 +12,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
@@ -187,7 +189,33 @@
    @TableField(exist = false)
    private String workCarCode;
    @ApiModelProperty(value = "开始时间 yyyy-MM-dd", example = "1")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date queryDateStart;
    @ApiModelProperty(value = "结束时间 yyyy-MM-dd", example = "1")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @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/business/model/PlatformWarnEvent.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * æœˆå°é¢„警信息
 * @author æ±Ÿè¹„蹄
 * @date 2024/09/25 09:41
 */
@Data
@ApiModel("月台预警信息")
@TableName("`platform_warn_event`")
public class PlatformWarnEvent {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "月台主键", example = "1")
    @ExcelColumn(name="月台主键")
    private Integer platformId;
    @ApiModelProperty(value = "预警标题")
    @ExcelColumn(name="预警标题")
    private String title;
    @ApiModelProperty(value = "车牌号")
    @ExcelColumn(name="车牌号")
    private String carCode;
    @ApiModelProperty(value = "事件内容")
    @ExcelColumn(name="事件内容")
    private String eventContent;
    @ApiModelProperty(value = "任务主键", example = "1")
    @ExcelColumn(name="任务主键")
    private Integer platformJobId;
    @ApiModelProperty(value = "预警类型 0 =  ä½œä¸šè¶…æ—¶ ï¼›1=停靠错误", example = "1")
    @ExcelColumn(name="预警类型 0 =  ä½œä¸šè¶…æ—¶ ï¼›1=停靠错误")
    private Integer eventType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.dao.business.vo.WmsJobContractVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -9,6 +10,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -109,11 +112,21 @@
    @ApiModelProperty(value = "合同号`")
    @ExcelColumn(name="合同号`")
    private String contractNum;
    @ApiModelProperty(value = "是否新数据`")
    @TableField(exist = false)
    private int isNew;
    @ApiModelProperty(value = "总数量")
    @TableField(exist = false)
    private BigDecimal ioQty;
    @ApiModelProperty(value = "月台_WMS作业通知单明细")
    @TableField(exist = false)
    private List<PlatformWmsDetail> platformWmsDetailList;
    @ApiModelProperty(value = "合同列表")
    @TableField(exist = false)
    private List<WmsJobContractVO> wmsJobContractVOList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java
@@ -67,12 +67,12 @@
    @ExcelColumn(name="车牌号")
    private String carCode;
    @ApiModelProperty(value = "海康标识", example = "1")
    @ApiModelProperty(value = "海康标识 é¢„约标识 reserveOrderNo", example = "1")
    @ExcelColumn(name="海康标识")
    private Integer hkId;
    private String hkId;
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步 2同步失败", example = "1")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步 2同步失败")
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步 2同步失败 3已取消", example = "1")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步 2同步失败 3已取消")
    private Integer hkStatus;
    @ApiModelProperty(value = "海康最近同步时间")
@@ -91,6 +91,10 @@
    @ExcelColumn(name="停车库海康编码")
    private String parkHkId;
    @ApiModelProperty(value = "业务类型:0=访客报备;1=月台物流车", example = "1")
    @ExcelColumn(name="业务类型:0=访客报备;1=月台物流车")
    private Integer objType;
    @ApiModelProperty(value = "停车场名称", example = "1")
    @TableField(exist = false)
    private String parksName;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/WmsJobContractVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.doumee.dao.business.vo;
import com.doumee.dao.business.model.Approve;
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformWmsDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/5/23 14:56
 */
@Data
public class WmsJobContractVO {
    @ApiModelProperty(value = "合同号")
    private String contractCode;
    @ApiModelProperty(value = "收货地")
    private String address;
    @ApiModelProperty(value = "明细信息")
    private List<PlatformWmsDetail> platformWmsDetailList;
}
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/reqeust/SavePlatformWarnEventDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.doumee.dao.web.reqeust;
import com.baomidou.mybatisplus.annotation.TableName;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * æœˆå°é¢„警信息
 * @author æ±Ÿè¹„蹄
 * @date 2024/09/25 09:41
 */
@Data
public class SavePlatformWarnEventDTO {
    @ApiModelProperty(value = "月台主键", example = "1")
    private Integer platformId;
    @ApiModelProperty(value = "车牌号")
    private String carCode;
    @ApiModelProperty(value = "任务主键", example = "1")
    private Integer platformJobId;
    @ApiModelProperty(value = "预警类型 0 =  ä½œä¸šè¶…æ—¶ ï¼›1=停靠错误", example = "1")
    private Integer eventType;
}
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/PlatformJobService.java
@@ -137,13 +137,25 @@
     * é€šçŸ¥å…¥å›­
     * @param jobOperateDTO
     */
    void platformInPark(JobOperateDTO jobOperateDTO);
    PlatformJob platformInPark(JobOperateDTO jobOperateDTO);
    /**
     * ä¸‹å‘入园权限
     * @param platformJob
     */
    void sendInPark(PlatformJob platformJob);
    /**
     * å–消入园权限
     * @param platformJob
     */
    void cancelInPark(PlatformJob platformJob);
    /**
     * æœˆå°å«å·
     * @param jobOperateDTO
     */
    void platformCallNumber(JobOperateDTO jobOperateDTO);
    PlatformJob platformCallNumber(JobOperateDTO jobOperateDTO);
    /**
     * è½¬ç§»æœˆå°
@@ -167,7 +179,7 @@
     * æ‰‹åŠ¨å¼€å§‹ä½œä¸š
     * @param jobOperateDTO
     */
    void beginWork(JobOperateDTO jobOperateDTO);
    PlatformJob beginWork(JobOperateDTO jobOperateDTO);
    /**
     * æœˆå°ç›¸æœº å¼€å§‹ä½œä¸š
@@ -179,7 +191,7 @@
     * å®Œæˆä½œä¸š
     * @param jobOperateDTO
     */
    void finishWork(JobOperateDTO jobOperateDTO);
    PlatformJob finishWork(JobOperateDTO jobOperateDTO);
    /**
     * æ‰‹åŠ¨æŽˆæƒè½¦è¾†ç¦»åœº
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/PlatformWarnEventService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.PlatformWarnEvent;
import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
import java.util.List;
/**
 * æœˆå°é¢„警信息Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2024/09/25 09:41
 */
public interface PlatformWarnEventService {
    /**
     * åˆ›å»º
     *
     * @param platformWarnEvent å®žä½“对象
     * @return Integer
     */
    Integer create(PlatformWarnEvent platformWarnEvent);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param platformWarnEvent å®žä½“对象
     */
    void delete(PlatformWarnEvent platformWarnEvent);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param platformWarnEvent å®žä½“对象
     */
    void updateById(PlatformWarnEvent platformWarnEvent);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param platformWarnEvents å®žä½“集
     */
    void updateByIdInBatch(List<PlatformWarnEvent> platformWarnEvents);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return PlatformWarnEvent
     */
    PlatformWarnEvent findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param platformWarnEvent å®žä½“对象
     * @return PlatformWarnEvent
     */
    PlatformWarnEvent findOne(PlatformWarnEvent platformWarnEvent);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param platformWarnEvent å®žä½“对象
     * @return List<PlatformWarnEvent>
     */
    List<PlatformWarnEvent> findList(PlatformWarnEvent platformWarnEvent);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<PlatformWarnEvent>
     */
    PageData<PlatformWarnEvent> findPage(PageWrap<PlatformWarnEvent> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param platformWarnEvent å®žä½“对象
     * @return long
     */
    long count(PlatformWarnEvent platformWarnEvent);
    void savePlatformWarnEvent(SavePlatformWarnEventDTO savePlatformWarnEventDTO);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWmsJobService.java
@@ -94,4 +94,7 @@
     * @return long
     */
    long count(PlatformWmsJob platformWmsJob);
    PlatformWmsJob findByDetailId(Integer id);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -7,6 +7,8 @@
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.CarChargeAddRequest;
import com.doumee.core.haikang.model.param.request.ParkReservationAddRequest;
import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
@@ -1467,16 +1469,24 @@
                        visitPark.setStartTime(visits.getStarttime());
                        visitPark.setEndTime(visits.getEndtime());
                        visitPark.setParkHkId(parks.getHkId());
                        visitPark.setObjType(Constants.ZERO);
                        CarChargeAddRequest param = new CarChargeAddRequest();
                        param.setPlateNo(visitPark.getCarCode());
                        param.setParkSyscode(visitPark.getParkHkId());
                        param.setStartTime(Objects.isNull(visitPark.getStartTime())?DateUtil.getDate(new Date(),"yyyy-MM-dd"):DateUtil.getShortTimeToNull(visitPark.getStartTime()));
                        param.setEndTime(Objects.isNull(visitPark.getEndTime())?"2999-12-31":DateUtil.getShortTimeToNull(visitPark.getEndTime()));
                        BaseResponse response = HKService.carChargeAddtion(param);
                        ParkReservationAddRequest request = new ParkReservationAddRequest();
                        request.setPlateNo(visitPark.getCarCode());
                        request.setParkSyscode(visitPark.getParkHkId());
                        request.setPhoneNo(visits.getPhone());
                        request.setOwner(visits.getName());
                        request.setAllowTimes(Constants.ONE+"");
                        request.setIsCharge(Constants.ONE+"");
                        request.setStartTime(Objects.isNull(visitPark.getStartTime())?DateUtil.getISO8601Timestamp2(new Date()):DateUtil.getISO8601Timestamp2(visitPark.getStartTime()));
                        request.setEndTime(Objects.isNull(visitPark.getEndTime())?"2999-12-31T00:00:00+08:00":DateUtil.getISO8601Timestamp2(visitPark.getEndTime()));
                        BaseResponse response =  HKService.parkReservationAddition(request);
                        visitPark.setHkDate(new Date());
                        if(response!=null
                                && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                            ParkReservationAddResponse parkReservationAddResponse = (ParkReservationAddResponse) response.getData();
                            visitPark.setHkId(parkReservationAddResponse.getReserveOrderNo());
                            visitPark.setHkStatus(Constants.ONE);
                            visitPark.setRemark("包期成功");
                        }else{
@@ -1486,6 +1496,7 @@
                            sendStatus = false;
                        }
                        parkBookList.add(visitPark);
                    }
                    visitParkMapper.insert(parkBookList);
                }
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
@@ -4,6 +4,13 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.CarChargeAddRequest;
import com.doumee.core.haikang.model.param.request.ParkReservationAddRequest;
import com.doumee.core.haikang.model.param.request.ParkReservationDelRequest;
import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
@@ -83,6 +90,12 @@
    @Autowired
    private PlatformShowParamMapper platformShowParamMapper;
    @Autowired
    private ParksMapper parksMapper;
    @Autowired
    private VisitParkMapper visitParkMapper;
    @Override
    public Integer create(PlatformJob platformJob) {
@@ -158,10 +171,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 +254,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 +295,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 +390,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 +544,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(),"签到类型错误");
        }
@@ -705,9 +741,10 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void platformInPark(JobOperateDTO jobOperateDTO){
    public PlatformJob 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,26 +754,136 @@
        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());
        platformJob.setEditDate(new Date());
        platformJobMapper.updateById(platformJob);
        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
        || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
        || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            //TODO ä¸‹å‘入园权限
        }
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.IN_WAIT.getKey(),oldPlatformJob,platformJob,
                Constants.PlatformJobLogType.IN_WAIT.getInfo());
        return platformJob;
    }
    @Override
    public void sendInPark(PlatformJob platformJob){
        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
                || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
                || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            //查询当前启用的停车场
            List<Parks> parksList = parksMapper.selectList(new QueryWrapper<Parks>()
                    .lambda()
                    .isNotNull(Parks::getHkId)
                    .eq(Parks::getIsdeleted,Constants.ZERO));
            List<VisitPark> visitParkList = new ArrayList<>();
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(parksList)){
                Boolean sendStatus = true;
                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(parksList)){
                    for (Parks parks:parksList) {
                        VisitPark visitPark = new VisitPark();
                        visitPark.setIsdeleted(Constants.ZERO);
                        visitPark.setCreateDate(new Date());
                        visitPark.setVisitApplyId(platformJob.getId().toString());
                        visitPark.setCarCode(platformJob.getCarCodeFront());
                        visitPark.setParkId(parks.getId().toString());
                        visitPark.setStartTime(new Date());
                        visitPark.setEndTime(DateUtil.getXMinuteAfterDate(visitPark.getStartTime(),Integer.valueOf(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.POWER_MINUTE).getCode())));
                        visitPark.setParkHkId(parks.getHkId());
                        visitPark.setObjType(Constants.ONE);
                        ParkReservationAddRequest request = new ParkReservationAddRequest();
                        request.setPlateNo(visitPark.getCarCode());
                        request.setParkSyscode(visitPark.getParkHkId());
                        request.setPhoneNo(platformJob.getDrivierPhone());
                        request.setOwner(platformJob.getDriverName());
                        request.setAllowTimes(Constants.ONE+"");
                        request.setIsCharge(Constants.ONE+"");
                        request.setStartTime(Objects.isNull(visitPark.getStartTime())?DateUtil.getISO8601Timestamp2(new Date()):DateUtil.getISO8601Timestamp2(visitPark.getStartTime()));
                        request.setEndTime(Objects.isNull(visitPark.getEndTime())?"2999-12-31T00:00:00+08:00":DateUtil.getISO8601Timestamp2(visitPark.getEndTime()));
                        BaseResponse response =  HKService.parkReservationAddition(request);
                        visitPark.setHkDate(new Date());
                        if(response!=null
                                && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                            ParkReservationAddResponse parkReservationAddResponse = (ParkReservationAddResponse) response.getData();
                            visitPark.setHkId(parkReservationAddResponse.getReserveOrderNo());
                            visitPark.setHkStatus(Constants.ONE);
                            visitPark.setRemark("包期成功");
                        }else{
                            visitPark.setHkStatus(Constants.TWO);
                            visitPark.setRemark("包期失败~");
                            //下发失败  æ ‡è®°ä¸»ä¸šåŠ¡çŠ¶æ€ä¸ºä¸‹å‘å¤±è´¥
                            sendStatus = false;
                        }
                        visitParkList.add(visitPark);
                    }
                    visitParkMapper.insert(visitParkList);
                    platformJob.setInHkdate(new Date());
                    if(sendStatus){
                        platformJob.setInHkstatus(Constants.TWO);
                    }else{
                        platformJob.setInHkstatus(Constants.THREE);
                    }
                    platformJobMapper.updateById(platformJob);
                }
            }
        }
    }
    @Override
    public void cancelInPark(PlatformJob platformJob){
        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
                || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
                || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            List<VisitPark> visitParkList = visitParkMapper.selectList(new QueryWrapper<VisitPark>().lambda()
                    .eq(VisitPark::getVisitApplyId,platformJob.getId())
                    .eq(VisitPark::getObjType,Constants.ONE)
                    .eq(VisitPark::getHkStatus,Constants.ONE)
                    .isNotNull(VisitPark::getHkId)
                    .apply(" END_TIME > now() ")
            );
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(visitParkList)){
                for (VisitPark visitPark:visitParkList) {
                    ParkReservationDelRequest param = new ParkReservationDelRequest();
                    param.setReserveOrderNo(visitPark.getHkId());
                    BaseResponse response =  HKService.parkReservationDeletion(param);
                    if(response!=null
                            && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                        visitPark.setHkStatus(Constants.THREE);
                        visitPark.setIsdeleted(Constants.ONE);
                        visitPark.setEditDate(new Date());
                        visitParkMapper.updateById(visitPark);
                    }
                }
            }
        }
    }
    /**
@@ -744,7 +891,7 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void platformCallNumber(JobOperateDTO jobOperateDTO){
    public PlatformJob platformCallNumber(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -764,10 +911,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,14 +932,17 @@
            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);
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.CALLED.getKey(),oldPlatformJob,platformJob,
                Constants.PlatformJobLogType.CALLED.getInfo().replace("{data}",platform.getName()));
        return platformJob;
    }
@@ -906,7 +1065,7 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void beginWork(JobOperateDTO jobOperateDTO){
    public PlatformJob beginWork(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -924,10 +1083,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());
        }
@@ -938,6 +1096,8 @@
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.WORKING.getKey(),oldPlatformJob,platformJob,
                Constants.PlatformJobLogType.WORKING.getInfo().replace("{data}",platform.getName()));
        return platformJob;
    }
@@ -946,7 +1106,7 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void finishWork(JobOperateDTO jobOperateDTO){
    public PlatformJob finishWork(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -973,9 +1133,10 @@
            //TODO å¤–协车装货 æŸ¥è¯¢TMS ç”µå­é”æƒ…况
        }else if(Constants.equalsInteger(platformJob.getType(),Constants.ONE) || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            //TODO å¤–协车卸货 æˆ–者 å¸‚公司车卸货 åˆ™æ ¹æ®ä»»åŠ¡æƒ…å†µè¿›è¡Œä¸‹å‘ç¦»å›­æƒé™
            //TODO å¤–协车卸货 æˆ–者 å¸‚公司车卸货 åˆ™æ ¹æ®ä»»åŠ¡æƒ…å†µ
        }
        return platformJob;
    }
@@ -1006,7 +1167,6 @@
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.AUTHED_LEAVE.getKey(),oldPlatformJob,platformJob ,
                Constants.PlatformJobLogType.AUTHED_LEAVE.getInfo());
        //TODO æŽˆæƒè½¦è¾†ç¦»åœºæƒé™
    }
@@ -1372,7 +1532,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.getQueryDateEnd(),platform.getQueryDateStart())+1;
            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;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,185 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.PlatformWarnEventMapper;
import com.doumee.dao.business.model.PlatformWarnEvent;
import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
import com.doumee.service.business.PlatformWarnEventService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * æœˆå°é¢„警信息Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2024/09/25 09:41
 */
@Service
public class PlatformWarnEventServiceImpl implements PlatformWarnEventService {
    @Autowired
    private PlatformWarnEventMapper platformWarnEventMapper;
    @Override
    public Integer create(PlatformWarnEvent platformWarnEvent) {
        platformWarnEventMapper.insert(platformWarnEvent);
        return platformWarnEvent.getId();
    }
    @Override
    public void deleteById(Integer id) {
        platformWarnEventMapper.deleteById(id);
    }
    @Override
    public void delete(PlatformWarnEvent platformWarnEvent) {
        UpdateWrapper<PlatformWarnEvent> deleteWrapper = new UpdateWrapper<>(platformWarnEvent);
        platformWarnEventMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        platformWarnEventMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(PlatformWarnEvent platformWarnEvent) {
        platformWarnEventMapper.updateById(platformWarnEvent);
    }
    @Override
    public void updateByIdInBatch(List<PlatformWarnEvent> platformWarnEvents) {
        if (CollectionUtils.isEmpty(platformWarnEvents)) {
            return;
        }
        for (PlatformWarnEvent platformWarnEvent: platformWarnEvents) {
            this.updateById(platformWarnEvent);
        }
    }
    @Override
    public PlatformWarnEvent findById(Integer id) {
        return platformWarnEventMapper.selectById(id);
    }
    @Override
    public PlatformWarnEvent findOne(PlatformWarnEvent platformWarnEvent) {
        QueryWrapper<PlatformWarnEvent> wrapper = new QueryWrapper<>(platformWarnEvent);
        return platformWarnEventMapper.selectOne(wrapper);
    }
    @Override
    public List<PlatformWarnEvent> findList(PlatformWarnEvent platformWarnEvent) {
        QueryWrapper<PlatformWarnEvent> wrapper = new QueryWrapper<>(platformWarnEvent);
        return platformWarnEventMapper.selectList(wrapper);
    }
    @Override
    public PageData<PlatformWarnEvent> findPage(PageWrap<PlatformWarnEvent> pageWrap) {
        IPage<PlatformWarnEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<PlatformWarnEvent> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(PlatformWarnEvent::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(PlatformWarnEvent::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(PlatformWarnEvent::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(PlatformWarnEvent::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getPlatformId() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getPlatformId, pageWrap.getModel().getPlatformId());
        }
        if (pageWrap.getModel().getTitle() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getTitle, pageWrap.getModel().getTitle());
        }
        if (pageWrap.getModel().getCarCode() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getCarCode, pageWrap.getModel().getCarCode());
        }
        if (pageWrap.getModel().getEventContent() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getEventContent, pageWrap.getModel().getEventContent());
        }
        if (pageWrap.getModel().getPlatformJobId() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getPlatformJobId, pageWrap.getModel().getPlatformJobId());
        }
        if (pageWrap.getModel().getEventType() != null) {
            queryWrapper.lambda().eq(PlatformWarnEvent::getEventType, pageWrap.getModel().getEventType());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(platformWarnEventMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(PlatformWarnEvent platformWarnEvent) {
        QueryWrapper<PlatformWarnEvent> wrapper = new QueryWrapper<>(platformWarnEvent);
        return platformWarnEventMapper.selectCount(wrapper);
    }
    @Override
    public void savePlatformWarnEvent(SavePlatformWarnEventDTO savePlatformWarnEventDTO){
        if(Objects.isNull(savePlatformWarnEventDTO)
             || Objects.isNull(savePlatformWarnEventDTO.getEventType())
             || StringUtils.isBlank(savePlatformWarnEventDTO.getCarCode())
        ){
            return;
        }
        PlatformWarnEvent platformWarnEvent = new PlatformWarnEvent();
        platformWarnEvent.setCreateDate(new Date());
        platformWarnEvent.setIsdeleted(Constants.ZERO);
        platformWarnEvent.setPlatformId(savePlatformWarnEventDTO.getPlatformId());
        Constants.PlatformWarnEvent cPl = Constants.PlatformWarnEvent.STOP_TIMEOUT;
        if(Constants.equalsInteger(savePlatformWarnEventDTO.getEventType(),Constants.ZERO)){
            if(Objects.isNull(savePlatformWarnEventDTO.getPlatformJobId())){
                return;
            }
            platformWarnEvent.setPlatformJobId(savePlatformWarnEventDTO.getPlatformJobId());
        }else  if(Constants.equalsInteger(savePlatformWarnEventDTO.getEventType(),Constants.ONE)){
            cPl = Constants.PlatformWarnEvent.STOP_ERROR;
        }
        platformWarnEvent.setTitle(cPl.getName());
        platformWarnEvent.setEventContent(cPl.getInfo().replace("${carCode}",savePlatformWarnEventDTO.getCarCode()));
        platformWarnEventMapper.insert(platformWarnEvent);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
@@ -1,10 +1,15 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.PlatformWmsDetailMapper;
import com.doumee.dao.business.PlatformWmsJobMapper;
import com.doumee.dao.business.model.PlatformWmsDetail;
import com.doumee.dao.business.model.PlatformWmsJob;
import com.doumee.dao.business.vo.WmsJobContractVO;
import com.doumee.service.business.PlatformWmsJobService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -14,7 +19,9 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
 * æœˆå°_WMS作业通知单行数据Service实现
@@ -26,6 +33,9 @@
    @Autowired
    private PlatformWmsJobMapper platformWmsJobMapper;
    @Autowired
    private PlatformWmsDetailMapper platformWmsDetailMapper;
    @Override
    public Integer create(PlatformWmsJob platformWmsJob) {
@@ -72,6 +82,41 @@
        return platformWmsJobMapper.selectById(id);
    }
    @Override
    public PlatformWmsJob findByDetailId(Integer id) {
        PlatformWmsJob platformWmsJob = platformWmsJobMapper.selectOne(new QueryWrapper<PlatformWmsJob>().lambda().eq(PlatformWmsJob::getJobId,id).last(" limit 1 "));
        if(Objects.isNull(platformWmsJob)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未查询到运单信息");
        }
        List<PlatformWmsDetail> platformWmsDetailList = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>()
                .lambda().eq(PlatformWmsDetail::getJobId,id));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){
            platformWmsJob.setIoQty(
                    platformWmsDetailList.stream().map(m->m.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add)
            );
            //获取所有合同号
            List<String> ioCodeList = platformWmsDetailList.stream().map(m->m.getIocode()).collect(Collectors.toList());
            Set<String> ioCodeSet = new HashSet<String>(ioCodeList);
            List<WmsJobContractVO> wmsJobContractVOList = new ArrayList<>();
            for (String ioCode:ioCodeSet) {
                WmsJobContractVO wmsJobContractVO = new WmsJobContractVO();
                wmsJobContractVO.setContractCode(ioCode);
                wmsJobContractVO.setAddress(platformWmsJob.getRepertotyAddress());
                wmsJobContractVO.setPlatformWmsDetailList(
                        platformWmsDetailList.stream().filter(i->i.getIocode().equals(ioCode)).collect(Collectors.toList())
                );
                wmsJobContractVOList.add(wmsJobContractVO);
            }
            platformWmsJob.setWmsJobContractVOList(wmsJobContractVOList);
        }else{
            platformWmsJob.setIoQty(BigDecimal.ZERO);
        }
        return platformWmsJob;
    }
    @Override
    public PlatformWmsJob findOne(PlatformWmsJob platformWmsJob) {
        QueryWrapper<PlatformWmsJob> wrapper = new QueryWrapper<>(platformWmsJob);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
@@ -103,7 +103,6 @@
        }catch (Exception e){
        }
    }
    @Override
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -21,9 +21,11 @@
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
import com.doumee.service.business.DeviceEventService;
import com.doumee.service.business.InterfaceLogService;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.impl.PlatformWarnEventServiceImpl;
import com.github.yulichang.interfaces.MPJBaseJoin;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
@@ -82,6 +84,8 @@
    private PlatformEventMapper platformEventMapper;
    @Autowired
    private PlatformLogMapper platformLogMapper;
    @Autowired
    private PlatformWarnEventServiceImpl platformWarnEventService;
    /**
     * æµ·åº·é—¨ç¦äº‹ä»¶æŽ¨é€
     * @param param
@@ -1026,7 +1030,14 @@
     * @param status
     */
    private void dealCarsInErrorPlatformBiz( PlatformJob model,EventPlatformCarsStatusInfoRequest status) {
        //TODO-----------------处理车辆进入错误月台业务逻辑
        //处理车辆进入错误月台业务逻辑
        SavePlatformWarnEventDTO savePlatformWarnEventDTO = new SavePlatformWarnEventDTO();
        savePlatformWarnEventDTO.setPlatformJobId(model.getId());
        savePlatformWarnEventDTO.setPlatformId(model.getPlatformId());
        savePlatformWarnEventDTO.setCarCode(model.getCarCodeFront());
        savePlatformWarnEventDTO.setEventType(Constants.PlatformWarnEvent.STOP_ERROR.getKey());
        platformWarnEventService.savePlatformWarnEvent(savePlatformWarnEventDTO);
        List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda()
                .eq(PlatformDevice::getPlatformId,model.getPlatformId())
                .eq(PlatformDevice::getIsdeleted,Constants.ZERO));
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java
@@ -317,7 +317,7 @@
        }
        PlatformGroup group = platformGroupMapper.selectOne(new QueryWrapper<PlatformGroup>().lambda()
                .eq(PlatformGroup::getIsdeleted,Constants.ZERO)
                .eq(PlatformGroup::getType,Constants.ONE)
                .eq(PlatformGroup::getType,type==0?Constants.ONE:Constants.ZERO)
                .last("limit 1") );//查询卸货月台组编码
        job.setPlatformGroupId(group!=null?group.getId():null);
        Member driver =  memberMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>()