| | |
| | | bootTime: "boot time", |
| | | workTime: "work time", |
| | | workDistance: "mileage", |
| | | tempQua: "temp", |
| | | backpack: "backpack", |
| | | password: "password", |
| | | }, |
| | | actionSts: { |
| | |
| | | bootTime: "开机时间", |
| | | workTime: "工作时间", |
| | | workDistance: "累计里程", |
| | | tempQua: "暂存数量", |
| | | backpack: "背篓", |
| | | password: "密码", |
| | | }, |
| | | actionSts: { |
| | |
| | | export const generateDynamicGraphic = (curZone, data, setCurSprite) => { |
| | | // console.log("ws", curZone, data); |
| | | |
| | | for (const agvVo of data.agvVos) { |
| | | showAgvSprite(curZone, agvVo, setCurSprite) |
| | | for (const agv of data.agvVos) { |
| | | showAgvSprite(curZone, agv, setCurSprite) |
| | | } |
| | | |
| | | } |
| | | |
| | | const showAgvSprite = (curZone, agvVo, setCurSprite) => { |
| | | const { agvNo, code, direction, backpack, battery, ...rest } = agvVo; |
| | | const showAgvSprite = (curZone, agv, setCurSprite) => { |
| | | const { agvNo, code, direction, backpack, battery, ...rest } = agv; |
| | | if (!code) { return } |
| | | const codeSprite = querySprite(DEVICE_TYPE.POINT, code); |
| | | if (!codeSprite) { return } |
| | | let agvSprite = querySprite(DEVICE_TYPE.AGV, agvNo); |
| | | if (!agvSprite) { |
| | | agvSprite = generateSprite(DEVICE_TYPE.AGV, generateAgvSpriteTexture(getAgvStatusMode(backpack, battery))); |
| | | agvSprite = generateSprite(DEVICE_TYPE.AGV, |
| | | generateAgvSpriteTexture(getAgvStatusMode(backpack.filter(item => item.loaded === true).length, battery)) |
| | | ); |
| | | initSprite(agvSprite, DEVICE_TYPE.AGV); |
| | | agvSprite.data.no = agvNo; |
| | | agvSprite.position.set(codeSprite.position.x, codeSprite.position.y); |
| | |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.agvDetail.tempQua" |
| | | source="tempQua" |
| | | label="table.field.agvDetail.backpack" |
| | | source="backpack" |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.agvDetail.tempQua" |
| | | source="tempQua" |
| | | label="table.field.agvDetail.backpack" |
| | | source="backpack" |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.agvDetail.tempQua" |
| | | property={record.tempQua} |
| | | title="table.field.agvDetail.backpack" |
| | | property={record.backpack} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
New file |
| | |
| | | package com.zy.acs.manager.core.domain; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 10/17/2024 |
| | | */ |
| | | @Data |
| | | public class BackpackDto { |
| | | |
| | | private Integer index; |
| | | |
| | | private Boolean loaded; |
| | | |
| | | public BackpackDto() { |
| | | } |
| | | |
| | | public BackpackDto(Integer index, Boolean loaded) { |
| | | this.index = index; |
| | | this.loaded = loaded; |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 10/14/2024 |
| | | */ |
| | |
| | | |
| | | private Double direction = 0.0; |
| | | |
| | | private Integer backpack = 0; |
| | | private List<BackpackDto> backpack = new ArrayList<>(); |
| | | |
| | | private Double battery; |
| | | private Integer battery; |
| | | |
| | | // public int getBackpackLoadedCount() { |
| | | // if (Cools.isEmpty(this.backpack)) { |
| | | // return 0; |
| | | // } |
| | | // return (int) this.backpack.stream().filter(BackpackDto::getLoaded).count(); |
| | | // } |
| | | |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.zy.acs.common.utils.GsonUtils; |
| | | import com.zy.acs.manager.core.domain.BackpackDto; |
| | | import com.zy.acs.manager.core.domain.MapWsAgvVo; |
| | | import com.zy.acs.manager.core.domain.MapWsVo; |
| | | import com.zy.acs.manager.manager.entity.Agv; |
| | |
| | | vo.setAgvNo(agv.getUuid()); |
| | | vo.setCode(code.getData()); |
| | | vo.setDirection(agvDetail.getAgvAngle()); |
| | | vo.setBackpack(agvDetail.getTempQua()); |
| | | vo.setBattery(vo.getBattery()); |
| | | vo.setBackpack(GsonUtils.fromJson(agvDetail.getBackpack(), List.class)); |
| | | vo.setBattery(agvDetail.getSoc()); |
| | | agvVos.add(vo); |
| | | } |
| | | |
| | | return agvVos; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | List<BackpackDto> backpackDtoList = new ArrayList<>(); |
| | | backpackDtoList.add(new BackpackDto(1, true)); |
| | | backpackDtoList.add(new BackpackDto(2, true)); |
| | | backpackDtoList.add(new BackpackDto(3, false)); |
| | | backpackDtoList.add(new BackpackDto(4, false)); |
| | | backpackDtoList.add(new BackpackDto(5, false)); |
| | | backpackDtoList.add(new BackpackDto(6, false)); |
| | | backpackDtoList.add(new BackpackDto(7, false)); |
| | | System.out.println(GsonUtils.toJson(backpackDtoList)); |
| | | } |
| | | |
| | | } |
| | |
| | | package com.zy.acs.manager.core.service; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.zy.acs.framework.common.Cools; |
| | | import com.zy.acs.common.constant.RedisConstant; |
| | | import com.zy.acs.common.domain.AgvProtocol; |
| | | import com.zy.acs.common.domain.protocol.*; |
| | | import com.zy.acs.common.utils.GsonUtils; |
| | | import com.zy.acs.common.utils.RedisSupport; |
| | | import com.zy.acs.framework.common.Cools; |
| | | import com.zy.acs.manager.common.domain.WebsocketDto; |
| | | import com.zy.acs.manager.core.domain.BackpackDto; |
| | | import com.zy.acs.manager.manager.entity.Agv; |
| | | import com.zy.acs.manager.manager.entity.AgvDetail; |
| | | import com.zy.acs.manager.manager.entity.Code; |
| | |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2023/6/16 |
| | |
| | | |
| | | detail.setSensorSts((long) mesBody.getSensorStatusFlags()); |
| | | |
| | | int tempQua = 0; |
| | | if (mesBody.isTempLoc1()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc2()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc3()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc4()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc5()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc6()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc7()) { |
| | | tempQua ++; |
| | | } |
| | | detail.setTempQua(tempQua); |
| | | List<BackpackDto> backpackDtoList = new ArrayList<>(); |
| | | backpackDtoList.add(new BackpackDto(1, mesBody.isTempLoc1())); |
| | | backpackDtoList.add(new BackpackDto(2, mesBody.isTempLoc2())); |
| | | backpackDtoList.add(new BackpackDto(3, mesBody.isTempLoc3())); |
| | | backpackDtoList.add(new BackpackDto(4, mesBody.isTempLoc4())); |
| | | backpackDtoList.add(new BackpackDto(5, mesBody.isTempLoc5())); |
| | | backpackDtoList.add(new BackpackDto(6, mesBody.isTempLoc6())); |
| | | backpackDtoList.add(new BackpackDto(7, mesBody.isTempLoc7())); |
| | | detail.setBackpack(GsonUtils.toJson(backpackDtoList)); |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | detail.setSensorSts((long) mesBody.getSensorStatusFlags()); |
| | | |
| | | int tempQua = 0; |
| | | if (mesBody.isTempLoc1()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc2()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc3()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc4()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc5()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc6()) { |
| | | tempQua ++; |
| | | } |
| | | if (mesBody.isTempLoc7()) { |
| | | tempQua ++; |
| | | } |
| | | detail.setTempQua(tempQua); |
| | | List<BackpackDto> backpackDtoList = new ArrayList<>(); |
| | | backpackDtoList.add(new BackpackDto(1, mesBody.isTempLoc1())); |
| | | backpackDtoList.add(new BackpackDto(2, mesBody.isTempLoc2())); |
| | | backpackDtoList.add(new BackpackDto(3, mesBody.isTempLoc3())); |
| | | backpackDtoList.add(new BackpackDto(4, mesBody.isTempLoc4())); |
| | | backpackDtoList.add(new BackpackDto(5, mesBody.isTempLoc5())); |
| | | backpackDtoList.add(new BackpackDto(6, mesBody.isTempLoc6())); |
| | | backpackDtoList.add(new BackpackDto(7, mesBody.isTempLoc7())); |
| | | detail.setBackpack(GsonUtils.toJson(backpackDtoList)); |
| | | |
| | | } |
| | | |
| | |
| | | * 暂存数量 |
| | | */ |
| | | @ApiModelProperty(value= "暂存数量") |
| | | private Integer tempQua; |
| | | private String backpack; |
| | | |
| | | /** |
| | | * 密码 |
| | |
| | | private String memo; |
| | | |
| | | public AgvDetail() {} |
| | | |
| | | public AgvDetail(String uuid,Long agvId,String title,Long code,Long lastCode,String codeOffsert,Double straightVal,Double agvAngle,Double gyroAngle,Double encoderAngle,Integer high,Long sensorSts,Integer vol,Integer soc,Integer soh,Integer batteryFail,String tempe,String motorFail,String failSign,Integer bootTime,Integer workTime,Double workDistance,Integer tempQua,String password,Integer status,Integer deleted,Long tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { |
| | | this.uuid = uuid; |
| | | this.agvId = agvId; |
| | | this.title = title; |
| | | this.code = code; |
| | | this.lastCode = lastCode; |
| | | this.codeOffsert = codeOffsert; |
| | | this.straightVal = straightVal; |
| | | this.agvAngle = agvAngle; |
| | | this.gyroAngle = gyroAngle; |
| | | this.encoderAngle = encoderAngle; |
| | | this.high = high; |
| | | this.sensorSts = sensorSts; |
| | | this.vol = vol; |
| | | this.soc = soc; |
| | | this.soh = soh; |
| | | this.batteryFail = batteryFail; |
| | | this.tempe = tempe; |
| | | this.motorFail = motorFail; |
| | | this.failSign = failSign; |
| | | this.bootTime = bootTime; |
| | | this.workTime = workTime; |
| | | this.workDistance = workDistance; |
| | | this.tempQua = tempQua; |
| | | this.password = password; |
| | | this.status = status; |
| | | this.deleted = deleted; |
| | | this.tenantId = tenantId; |
| | | this.createBy = createBy; |
| | | this.createTime = createTime; |
| | | this.updateBy = updateBy; |
| | | this.updateTime = updateTime; |
| | | this.memo = memo; |
| | | } |
| | | |
| | | // AgvDetail agvDetail = new AgvDetail( |
| | | // null, // 编号 |
| | | // null, // Agv[非空] |
| | | // null, // 标题 |
| | | // null, // 条码 |
| | | // null, // 邻接条码 |
| | | // null, // 地面码偏移 |
| | | // null, // 直行距离 |
| | | // null, // 当前角度 |
| | | // null, // 陀螺仪角度 |
| | | // null, // 编码器角度 |
| | | // null, // 当前高度 |
| | | // null, // 传感器状态 |
| | | // null, // 电压 |
| | | // null, // 电量 |
| | | // null, // 健康 |
| | | // null, // 电池故障 |
| | | // null, // 温度 |
| | | // null, // 电机故障 |
| | | // null, // 故障标识 |
| | | // null, // 开机时间 |
| | | // null, // 工作时间 |
| | | // null, // 累计里程 |
| | | // null, // 暂存数量 |
| | | // null, // 密码 |
| | | // null, // 状态[非空] |
| | | // null, // 是否删除[非空] |
| | | // null, // 租户 |
| | | // null, // 添加人员 |
| | | // null, // 添加时间[非空] |
| | | // null, // 修改人员 |
| | | // null, // 修改时间 |
| | | // null // 备注 |
| | | // ); |
| | | |
| | | public String getAgvId$(){ |
| | | AgvService service = SpringUtils.getBean(AgvService.class); |