liukangdong
2024-09-29 8ed7183c1d062263a9564169f3190070b514b0a1
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
已添加1个文件
已修改21个文件
408 ■■■■ 文件已修改
admin/src/api/business/device.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaDeviceLedWindow.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/deviceLed.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/ImageBase64Util.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TransparentChannelSingleRequest.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsDataRequest.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsInfoRequest.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformDeviceMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformJobMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBroadcastLog.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformDevice.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/LargeScreenDataVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/device.js
@@ -31,5 +31,5 @@
}
// å‘生led屏内容
export function setLedContent (data) {
  return request.post('/visitsAdmin/cloudService/business/device/setLedContent', data)
  return request.post('/visitsAdmin/cloudService/business/hksync/setLedContent', data)
}
admin/src/components/business/OperaDeviceLedWindow.vue
@@ -9,6 +9,9 @@
            <el-form-item label="显示内容" prop="title">
                <el-input v-model="form.title" placeholder="请输入LED屏显示内容" v-trim/>
            </el-form-item>
            <el-form-item label="播放速度" prop="title">
                <el-input type="number" v-model="form.speed" placeholder="请输入播放速度(大于0数字)" v-trim/>
            </el-form-item>
        </el-form>
    </GlobalWindow>
</template>
@@ -25,7 +28,8 @@
      // è¡¨å•数据
      form: {
        id: null,
        title: ''
        title: '',
        speed: 13
      },
      // éªŒè¯è§„则
      rules: {
@@ -54,7 +58,8 @@
      // è°ƒç”¨æ–°å»ºæŽ¥å£
      this.isWorking = true
      this.api.setLedContent({
        id: this.form.id,
        deviceId: this.form.id,
        speed: this.form.speed,
        content: this.form.title
      })
        .then(() => {
admin/src/views/business/deviceLed.vue
@@ -32,6 +32,16 @@
                </el-table-column>
                <el-table-column prop="ip" label="设备ip"></el-table-column>
                <el-table-column prop="port" label="设备端口"></el-table-column>
              <el-table-column
                  v-if="containPermissions(['business:device:update' ])"
                  label="操作"
                  min-width="120"
                  fixed="right"
              >
                <template slot-scope="{row}">
                  <el-button type="text" @click="$refs.OperaDeviceLedWindow.open('设置屏显内容', row)" icon="el-icon-edit" v-permissions="['business:device:update']">设置屏显内容</el-button>
                </template>
              </el-table-column>
            </el-table>
            <pagination
                @size-change="handleSizeChange"
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -36,6 +36,7 @@
    public static final int ONE = 1 ;
    public static final int TWO = 2 ;
    public static final String HK_PARAM ="HK_PARAM" ;
    public static final String LED_CONTENT_SPEED ="LED_CONTENT_SPEED" ;
    public static final String HK_HOST ="HK_HOST" ;
    public static final String HK_APPKEY ="HK_APPKEY" ;
    public static final String HK_APPSECRET ="HK_APPSECRET" ;
@@ -919,6 +920,64 @@
            this.info = info;
        }
    }
    /**
     * å¹¿æ’­é€šçŸ¥å†…容
     1. å«å·ä¸­ï¼šçš–A12345请前往1号月台等待作业
     2. ä½œä¸šå®Œæˆï¼šçš–A12345作业完成,请尽快驶离
     3. é”™è¯¯åœé ï¼šçš–A12345月台停靠错误,请尽快驶离
     4. è¶…时停靠:皖A12345月台停靠超时,请尽快驶离请尽快驶离
     */
    public  enum PlatformBroadcastContent {
        CALLING(1, "叫号中"," ${param}请前往${param2}等待作业"),
        DONE(2, "作业完成","${param}作业完成,请尽快驶离" ),
        WRONG_IN(3, "错误停靠","${param}月台停靠错误,请尽快驶离" ),
        TIMEOUT_IN(4, "超时停靠","${param}月台停靠超时,请尽快驶离请尽快驶离" ),
        ;
        // æˆå‘˜å˜é‡
        private int key;
        private String name;
        private String info;
        // æž„造方法
        PlatformBroadcastContent(int key, String name,String info ) {
            this.key = key;
            this.info = info;
            this.name = name;
        }
        public static String getName(int index) {
            for (PlatformBroadcastContent c : PlatformBroadcastContent.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/ImageBase64Util.java
@@ -122,7 +122,7 @@
    }
    public static void main(String[] args) {
        String url= "http://10.50.250.178:8088/file/member/20240910/c9a4d1cc-76ca-4aa1-bead-5dfd5daf1e76.jpg";// å¾…处理的图片
        String url= "http://10.50.250.253:8088/file/member/20240910/c9a4d1cc-76ca-4aa1-bead-5dfd5daf1e76.jpg";// å¾…处理的图片
        String imgbese = Image2Base64(url);
        System.out.println(imgbese.replace("\r\n", ""));
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java
@@ -12,6 +12,7 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.LargeScreenDataVO;
import com.doumee.dao.web.reqeust.*;
import com.doumee.dao.web.response.DriverHomeVO;
import com.doumee.dao.web.response.LineUpVO;
@@ -160,4 +161,11 @@
    }
    @LoginNoRequired
    @ApiOperation("签到大屏数据")
    @GetMapping("/getLargeScreenData")
    public ApiResponse<LargeScreenDataVO> getLargeScreenData() {
        return ApiResponse.success(platformJobService.getLargeScreenData());
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TransparentChannelSingleRequest.java
@@ -12,4 +12,6 @@
  */
 private String content    ; //String    true    å†…容
 private Integer deviceId; //    String    false    è®¾å¤‡ä¸»é”®
 private int speed; //    æ’­æ”¾é€Ÿåº¦
 private int color; // å­—体颜色(1:红色,2:绿色,4:黄色,8:蓝色,16:紫色,32:青色,64:白色)
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsDataRequest.java
@@ -6,7 +6,7 @@
@Data
public class EventPlatformCarsDataRequest {
    private List<EventPlatformCarsStatusInfoRequest> HPVehicleStatus;//
    private  EventPlatformCarsStatusInfoRequest  HPVehicleStatus;//
    private  EventPlatformAttrInfoRequest targetAttrs;//
   private String dataType;//HPVehicleStatus
        private String sendTime;//2017-04-22T15:39:01.000+08:00
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsInfoRequest.java
@@ -16,5 +16,5 @@
    private Integer  timeout    ;//Number    è„‰å†²è¶…æ—¶æ—¶é—´    æ˜¯        å•位:秒
    private String  happenTime    ;//String    äº‹ä»¶å‘生时间(设备时间)    æ˜¯    64
    private String   srcParentIndex    ;//String    äº‹ä»¶å‘生的事件源父设备编号    å¦    64
    private List<EventPlatformCarsDataRequest> data;
    private  EventPlatformCarsDataRequest  data;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformDeviceMapper.java
@@ -2,11 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.PlatformDevice;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/06/28 10:03
 */
public interface PlatformDeviceMapper extends BaseMapper<PlatformDevice> {
public interface PlatformDeviceMapper extends MPJBaseMapper<PlatformDevice> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformJobMapper.java
@@ -2,11 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.PlatformJob;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/06/28 10:03
 */
public interface PlatformJobMapper extends BaseMapper<PlatformJob> {
public interface PlatformJobMapper extends MPJBaseMapper<PlatformJob> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBroadcastLog.java
@@ -59,8 +59,8 @@
    @ExcelColumn(name="关联对象编码")
    private String objId;
    @ApiModelProperty(value = "关联对象类型 0月台作业", example = "1")
    @ExcelColumn(name="关联对象类型 0月台作业")
    @ApiModelProperty(value = "关联对象类型 0月台作业 1其他", example = "1")
    @ExcelColumn(name="关联对象类型 0月台作业 1其他")
    private Integer objType;
    @ApiModelProperty(value = "提醒次数", example = "1")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformDevice.java
@@ -78,5 +78,8 @@
    @ApiModelProperty(value = "设备状态 0在线 1离线", example = "1")
    @ExcelColumn(name="设备状态 0在线 1离线")
    private Integer status;
    @ApiModelProperty(value = "设备編碼")
    @ExcelColumn(name="设备編碼")
    private String hkNo;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -287,6 +287,10 @@
    @ExcelColumn(name="确认任务时间")
    private Date confirmTaskDate;
    @ApiModelProperty(value = "签到序号", example = "1")
    @ExcelColumn(name="签到序号")
    private Integer signNum;
    @ApiModelProperty(value = "最新叫号时间")
    @TableField(exist = false)
    private Date newCallDate;
@@ -393,12 +397,18 @@
    @TableField(exist = false)
    private BigDecimal workTimes ;
    @ApiModelProperty(value = "市公司车预约记录")
    @TableField(exist = false)
    private Integer bookId;
    @ApiModelProperty(value = "多状态查询 å¤šä¸ªä»¥,分割")
    @TableField(exist = false)
    private String queryStatus;
    @ApiModelProperty(value = "作业类型查询 å¤šä¸ªä»¥,分割")
    @TableField(exist = false)
    private String queryType;
    @ApiModelProperty(value = "电子锁状态:0=未上锁 1=不分上锁 2=全部上锁")
    @TableField(exist = false)
    private Integer  lockStatus;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/LargeScreenDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.doumee.dao.business.vo;
import com.doumee.dao.business.model.Approve;
import com.doumee.dao.business.model.PlatformJob;
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 LargeScreenDataVO {
    @ApiModelProperty(value = "全部数据列表")
    private List<PlatformJob> allList;
    @ApiModelProperty(value = "已月台叫号列表")
    private List<PlatformJob> waitWorkList;
    @ApiModelProperty(value = "二维码值")
    private String qrCode;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -5,6 +5,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.business.vo.LargeScreenDataVO;
import com.doumee.dao.openapi.request.*;
import com.doumee.dao.openapi.response.*;
import com.doumee.dao.web.reqeust.*;
@@ -225,4 +226,8 @@
    CarNumByStatusResponse carStatusNum(CarNumByStatusRequest param);
    PlatformQueuingListResponse queueList(PlatformQueuingListRequest param);
    LargeScreenDataVO getLargeScreenData();
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
@@ -1,6 +1,8 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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;
@@ -12,21 +14,21 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.PlatformBroadcastLogMapper;
import com.doumee.dao.business.model.Device;
import com.doumee.dao.business.model.PlatformBroadcastLog;
import com.doumee.service.business.DeviceService;
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 com.doumee.service.business.impl.hksync.HkSyncPushServiceImpl;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * è®¾å¤‡ä¿¡æ¯è¡¨Service实现
@@ -38,6 +40,10 @@
    @Autowired
    private DeviceMapper deviceMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private PlatformBroadcastLogMapper platformBroadcastLogMapper;
    @Override
@@ -230,15 +236,15 @@
                || !Constants.equalsInteger(device.getType(),Constants.TWO)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        TransparentChannelBodyRequest body = new TransparentChannelBodyRequest();
/*      TransparentChannelBodyRequest body = new TransparentChannelBodyRequest();
        TransparentChannelHeadRequest head = new TransparentChannelHeadRequest();
        TransparentChannelBodyParamRequest request = new TransparentChannelBodyParamRequest();
        TransparentChannelBodyRegionRequest regions = new TransparentChannelBodyRegionRequest();
        head.setAbility("cld");//固定值
        head.setTreatyType("haixuan_led_net");//固定值
        head.setDeviceIndexCode(device.getHkId());
        head.setDeviceIndexCode(device.getNo());
        body.setMethod("ControlLedGereral");//固定值
        request.setIndexCode(device.getHkId());
        request.setIndexCode(device.getNo());
        request.setOperationType(219);//固定值
        regions.setActionType(32);
        regions.setContent(model.getContent());
@@ -254,9 +260,36 @@
        regions.setRegionRightBottomYPos(31);
        request.setRegions(new ArrayList<>());
        request.getRegions().add(regions);
        regions.setSpeed(13);
        regions.setSpeed(8);
        body.setParams(request);
        BaseResponse response =  HKService.transparentchannel(head,body);
        BaseResponse response =  HKService.transparentchannel(head,body);*/
        if(model.getSpeed()<=0){
            int speed = 13;
            try {
                speed = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LED_CONTENT_SPEED).getCode());
            }catch (Exception e){
            }
            model.setSpeed(speed);
        }
        BaseResponse response =  HkSyncPushServiceImpl.dealLedContentBiz(device.getNo(),model.getContent(),model.getSpeed(),1);
        PlatformBroadcastLog log = new PlatformBroadcastLog();
        log.setCreateDate(new Date());
        log.setBizType(Constants.ONE);
        log.setHkDate(new Date());
        log.setDeviceType(Constants.ONE);
        log.setObjType(Constants.ONE);
        log.setHkId(device.getHkId());
        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
            log.setHkInfo("请求失败:"+JSONObject.toJSONString(response));
            log.setHkStatus(Constants.THREE);
        }else{
            log.setHkInfo("请求成功");
            log.setHkStatus(Constants.TWO);
        }
        log.setName("设置LED屏显内容");
        log.setInfo(model.getContent());
        log.setNum(Constants.ONE);
        platformBroadcastLogMapper.insert(log);
        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,屏幕内容设置失败"+(response!=null?response.getMsg():""));
        }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
@@ -273,10 +273,14 @@
                PlatformWorkVO platformWorkVO = PlatformGroupServiceImpl.getPlatformWorkVO(platform,platformJobList);
                platform.setPlatformWorkVO(platformWorkVO);
            }
            for (PlatformGroup platformGroup:platformGroups) {
                platformGroup.setPlatformList(allPlatformList.stream().filter(m->m.getShowConfig()&&Constants.equalsInteger(m.getGroupId(),platformGroup.getId())).collect(Collectors.toList()));
        }
        }else{
        for (PlatformGroup platformGroup:platformGroups) {
            platformGroup.setPlatformList(allPlatformList.stream().filter(m->Constants.equalsInteger(m.getGroupId(),platformGroup.getId())).collect(Collectors.toList()));
        }
        }
        return platformGroups;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -22,6 +22,7 @@
import com.doumee.dao.business.join.PlatformJobJoinMapper;
import com.doumee.dao.business.join.PlatformJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.LargeScreenDataVO;
import com.doumee.dao.openapi.request.*;
import com.doumee.dao.openapi.response.*;
import com.doumee.dao.system.model.SystemUser;
@@ -45,10 +46,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -256,6 +254,7 @@
                .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
                .apply(pageWrap.getModel().getQueryStatus() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatus()+"')")
                .apply(pageWrap.getModel().getQueryType() != null, " find_in_set(t.TYPE,'"+pageWrap.getModel().getQueryType()+"')")
                .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()))
@@ -290,11 +289,13 @@
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper
                .selectAll(PlatformJob.class)
                .selectAs(PlatformBooks::getId,PlatformJob::getBookId)
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                .leftJoin(PlatformBooks.class,PlatformBooks::getJobId,PlatformJob::getId)
                .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
                .like(pageWrap.getModel().getCarCodeFront() != null, PlatformJob::getCarCodeFront, pageWrap.getModel().getCarCodeFront())
@@ -556,7 +557,14 @@
        || System.currentTimeMillis() < DateUtil.getDateByString(DateUtil.getCurrDate() + " " + platformGroup.getStartTime() + ":00" ).getTime()){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未在工作时间["+platformGroup.getStartTime() + "-" + platformGroup.getEndTime() +"],无法进行签到");
        }
        //查询今日最大的签到数
        List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  "));
        if(CollectionUtils.isEmpty(signList)){
            platformJob.setSignNum(Constants.ONE);
        } else{
            int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList()));
            platformJob.setSignNum(maxNumber + Constants.ONE);
        }
        platformJob.setSignDate(new Date());
        platformJob.setSingType(signInDTO.getSignType());
        platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());
@@ -842,10 +850,10 @@
                            ParkReservationAddResponse parkReservationAddResponse = (ParkReservationAddResponse) response.getData();
                            visitPark.setHkId(parkReservationAddResponse.getReserveOrderNo());
                            visitPark.setHkStatus(Constants.ONE);
                            visitPark.setRemark("包期成功");
                            visitPark.setRemark("车辆权限下发成功");
                        }else{
                            visitPark.setHkStatus(Constants.TWO);
                            visitPark.setRemark("包期失败~");
                            visitPark.setRemark("车辆权限下发失败~");
                            //下发失败  æ ‡è®°ä¸»ä¸šåŠ¡çŠ¶æ€ä¸ºä¸‹å‘å¤±è´¥
                            sendStatus = false;
                        }
@@ -1665,5 +1673,51 @@
    }
    @Override
    public LargeScreenDataVO getLargeScreenData(){
        LargeScreenDataVO largeScreenDataVO = new LargeScreenDataVO();
        List<PlatformJob> platformJobList = platformJobJoinMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
                .selectAll(PlatformJob.class)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = 5 order by pl.CREATE_DATE desc  limit 1  ) as newStartDate  ")
                .select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = 4 order by pl.CREATE_DATE desc  limit 1  ) as newCallDate  ")
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .in(PlatformJob::getStatus,
                        Constants.PlatformJobStatus.WAIT_CALL.getKey(),
                        Constants.PlatformJobStatus.WORKING.getKey(),
                        Constants.PlatformJobStatus.CALLED.getKey(),
                        Constants.PlatformJobStatus.IN_WAIT.getKey()
                )
                .orderByDesc(PlatformJob::getStatus)
                .orderByAsc(PlatformJob::getSignDate)
        );
        if(CollectionUtils.isEmpty(platformJobList)){
            for (PlatformJob platformJob:platformJobList) {
                if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
                    //计算已作业时长 æ ¹æ®æœˆå°å·¥ä½œæ•ˆçއ è®¡ç®—任务量需要时间
                    if(Objects.isNull(platformJob.getTotalNum()) || Objects.isNull(platformJob.getWorkRate())){
                        platformJob.setOptTime(0L);
                    }else{
                        Integer workMinute = platformJob.getTotalNum().multiply(new BigDecimal(60)).divide(platformJob.getWorkRate()).intValue();
                        Date overDate = DateUtil.getXMinuteAfterDate(platformJob.getNewStartDate(),workMinute);
                        platformJob.setOptTime(overDate.getTime()/1000);
                    }
                }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())){
                    //计算已叫号时间
                    platformJob.dealTime();
                }
            }
            largeScreenDataVO.setAllList(platformJobList);
            List<PlatformJob> calledList = platformJobList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())).collect(Collectors.toList());
            largeScreenDataVO.setWaitWorkList(calledList);
        }
        largeScreenDataVO.setQrCode(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode());
        return largeScreenDataVO;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
@@ -79,6 +79,7 @@
                platformDevice.setType(Constants.ZERO);
                platformDevice.setDeviceId(ledId.toString());
                platformDevice.setHkId(device.getHkId());
                platformDevice.setHkNo(device.getNo());
                platformDevice.setName(device.getName());
                platformDeviceList.add(platformDevice);
            }
@@ -100,6 +101,7 @@
                platformDevice.setType(Constants.TWO);
                platformDevice.setDeviceId(broadcastId.toString());
                platformDevice.setHkId(device.getHkId());
                platformDevice.setHkNo(device.getNo());
                platformDevice.setName(device.getName());
                platformDeviceList.add(platformDevice);
            }
@@ -154,6 +156,7 @@
                platformDevice.setType(Constants.ZERO);
                platformDevice.setDeviceId(ledId.toString());
                platformDevice.setHkId(device.getHkId());
                platformDevice.setHkNo(device.getNo());
                platformDevice.setName(device.getName());
                platformDeviceList.add(platformDevice);
            }
@@ -177,6 +180,7 @@
                platformDevice.setType(Constants.TWO);
                platformDevice.setDeviceId(broadcastId.toString());
                platformDevice.setHkId(device.getHkId());
                platformDevice.setHkNo(device.getNo());
                platformDevice.setName(device.getName());
                platformDeviceList.add(platformDevice);
            }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
@@ -165,7 +165,9 @@
                    editList.add(model);
                    //清空监控点数据
                    platformDeviceMapper.delete(new UpdateWrapper<PlatformDevice>().lambda()
                            .eq(PlatformDevice::getPlatformId,model.getId()));
                            .eq(PlatformDevice::getPlatformId,model.getId())
                            .eq(PlatformDevice::getType,Constants.ONE)
                    );
                    deviceList.addAll(getCameraList(device.getCameras(),model));
                }else{
                    //如果不存在,则新增数据
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -3,10 +3,12 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.DataSyncConfig;
import com.doumee.config.SpringContextUtil;
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.*;
import com.doumee.core.haikang.model.param.request.event.acs.EventAcsInfoRequest;
import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
@@ -75,7 +77,11 @@
    @Autowired
    private PlatformMapper platformMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private PlatformDeviceMapper platformDeviceMapper;
    @Autowired
    private PlatformBroadcastLogMapper platformBroadcastLogMapper;
    @Autowired
    private PlatformJobMapper platformJobMapper;
    @Autowired
@@ -864,12 +870,12 @@
            List<EventPlatformCarsInfoRequest> events  = param.getParams().getEvents();
            List<PlatformEvent> eventList = new ArrayList<>();
            for(EventPlatformCarsInfoRequest request : events){
                if( request.getData() ==null ||  request.getData().size()==0){
                if( request.getData() ==null  ){
                    continue;
                }
                Integer  workStatus = 0;
                for(EventPlatformCarsDataRequest data :  request.getData()){
                    if( data.getHPVehicleStatus() ==null ||  data.getHPVehicleStatus().size() ==0){
                EventPlatformCarsDataRequest data = request.getData();
                if( data.getHPVehicleStatus() ==null  ){
                        continue;//如何推送状态集合为空,不处理跳过
                    }
                    PlatformDevice model = platformDeviceMapper.selectOne(new QueryWrapper<PlatformDevice>().lambda()
@@ -881,12 +887,15 @@
                    }
                    //各车道车辆状态
                    for(EventPlatformCarsStatusInfoRequest status : data.getHPVehicleStatus()){
                EventPlatformCarsStatusInfoRequest status = data.getHPVehicleStatus();
                        eventList.add(initPlatformEventModel(request,data,status));//封装事件(已月台通道为维度)
                        if(StringUtils.isBlank(status.getPlateNo())){
                            continue;//如果车辆信息为空,不处理直接跳过
                        }
                        PlatformJob job = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
                PlatformJob job = platformJobMapper.selectJoinOne(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
                        .selectAll(PlatformJob.class)
                        .selectAs(Platform::getName,PlatformJob::getPlatformName)
                        .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                                .eq(StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeFront,status.getPlateNo() )//前车牌号
                                .eq(!StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeBack,status.getPlateNo() )//后车牌号
                                .eq(PlatformJob::getIsdeleted,Constants.ZERO )
@@ -926,9 +935,6 @@
                        }
                        //暂时不做相关自动完成作业业务处理
//                        dealPlatformJobLogBiz(update,status);//记录作业日志
                    }
                    break;//只处理第一个数据状态
                }
            }
            if(eventList.size()>0){
                //生成事件
@@ -1039,35 +1045,107 @@
        savePlatformWarnEventDTO.setEventType(Constants.PlatformWarnEvent.STOP_ERROR.getKey());
        platformWarnEventService.savePlatformWarnEvent(savePlatformWarnEventDTO);
        int speed = 13;
        try {
            speed = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LED_CONTENT_SPEED).getCode());
        }catch (Exception e){
        }
        List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda()
                .eq(PlatformDevice::getPlatformId,model.getPlatformId())
                .eq(PlatformDevice::getIsdeleted,Constants.ZERO));
        if(deviceList ==null || deviceList.size() == 0){
            return;
        }
        String content ="车辆"+model.getCarCodeFront()+"停错月台了";
        String content =Constants.PlatformLedContent.WRONG_IN.getInfo();
        content = content.replace("${param}",model.getPlatformName());
        content = content.replace("${param2}",model.getCarCodeFront());
        List<String> broadcastList = new ArrayList<>();
        List<String> ledList = new ArrayList<>();
        List<PlatformBroadcastLog> logList = new ArrayList<>();
        for(PlatformDevice device : deviceList){
            if(StringUtils.isNotBlank(device.getHkId())){
                continue;
            }
            if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
                //如果是LED
                PlatformBroadcastLog log = new PlatformBroadcastLog();
                log.setCreateDate(new Date());
                log.setBizType(Constants.ONE);
                log.setHkDate(new Date());
                log.setObjType(Constants.ONE);
                log.setIds(device.getHkNo());
                log.setInfo(content);
                log.setNum(Constants.ONE);
                BaseResponse response = dealLedContentBiz(device.getHkNo(),content,speed,1);
                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                    log.setHkInfo("请求失败:"+JSONObject.toJSONString(response));
                    log.setHkStatus(Constants.THREE);
                }else{
                    log.setHkInfo("请求成功");
                    log.setHkStatus(Constants.TWO);
                }
                log.setDeviceType(Constants.ONE);
                log.setName("设置LED屏显内容");
                logList.add(log);
                ledList.add(device.getHkId());
            }else  if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
                //如果是广播点
                broadcastList.add(device.getHkId());
            }
        }
        if(broadcastList.size()>0){
            String content1 =Constants.PlatformBroadcastContent.WRONG_IN.getInfo();
            content1 = content1.replace("${param}",model.getCarCodeFront());
            PlatformBroadcastLog log = new PlatformBroadcastLog();
            log.setCreateDate(new Date());
            log.setBizType(Constants.ONE);
            log.setHkDate(new Date());
            log.setObjType(Constants.ONE);
            log.setInfo(content1);
            log.setNum(Constants.ONE);
            log.setIds(String.join(",",broadcastList));
            CustomBroadcastRequest request = new CustomBroadcastRequest();
            request.setAudioPointIndexCode(broadcastList);
            request.setPlayDuration(15);//单位秒
            request.setBroadCastMode("tts");
            request.setPriority(1);
            request.setState(1);//播放/停止标识 1-播放,0-停止
            request.setPlayTtsContent(content1);
            BaseResponse response =  HKService.customBroadcast(request);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                log.setHkInfo("请求失败:"+JSONObject.toJSONString(response));
                log.setHkStatus(Constants.THREE);
            }else{
                log.setHkInfo("请求成功");
                log.setHkStatus(Constants.TWO);
            }
            log.setDeviceType(Constants.ONE);
            log.setName("发送广播播报内容");
            logList.add(log);
        }
        if(logList.size()>0){
            platformBroadcastLogMapper.insert(logList);
        }
    }
    public static BaseResponse dealLedContentBiz(String hkNo, String content,int speed,int color) {
                TransparentChannelBodyRequest body = new TransparentChannelBodyRequest();
                TransparentChannelHeadRequest head = new TransparentChannelHeadRequest();
                TransparentChannelBodyParamRequest request = new TransparentChannelBodyParamRequest();
                TransparentChannelBodyRegionRequest regions = new TransparentChannelBodyRegionRequest();
                head.setAbility("cld");//固定值
                head.setTreatyType("haixuan_led_net");//固定值
                head.setDeviceIndexCode(device.getHkId());
        head.setDeviceIndexCode(hkNo);
                body.setMethod("ControlLedGereral");//固定值
                request.setIndexCode(device.getHkId());
        request.setIndexCode(hkNo);
                request.setOperationType(219);//固定值
                regions.setActionType(32);
                regions.setContent(content);
                regions.setRegionNo(1);
                regions.setRegionType(14);
                regions.setFontColor(1);
        regions.setFontColor(color>0?color:1);
                regions.setCircleTimes(1);//循环次数
                regions.setFontSize(32);//
                regions.setStayTime(1);//单位??
@@ -1077,24 +1155,8 @@
                regions.setRegionRightBottomYPos(31);
                request.setRegions(new ArrayList<>());
                request.getRegions().add(regions);
                regions.setSpeed(13);
        regions.setSpeed(speed>0?speed:13);
                body.setParams(request);
                HKService.transparentchannel(head,body);
            }else  if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
                //如果是广播点
                broadcastList.add(device.getHkId());
            }
        }
        if(broadcastList.size()>0){
            CustomBroadcastRequest request = new CustomBroadcastRequest();
            request.setAudioPointIndexCode(broadcastList);
            request.setPlayDuration(15);//单位秒
            request.setBroadCastMode("tts");
            request.setPriority(1);
            request.setState(1);//播放/停止标识 1-播放,0-停止
            request.setPlayTtsContent(content);
            HKService.customBroadcast(request);
        }
       return HKService.transparentchannel(head,body);
    }
}