src/main/java/com/zy/asrs/entity/BasCrnOpt.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/BasErrLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/BasCrnOptMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/BasErrLogMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/BasCrnOptService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/BasErrLogService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/BasCrnOptServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/BasErrLogServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensCrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/entity/BasCrnOpt.java
New file @@ -0,0 +1,334 @@ package com.zy.asrs.entity; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; import com.core.common.Cools; import com.core.common.SpringUtils; import com.zy.system.entity.User; import com.zy.system.service.UserService; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; @TableName("asr_bas_crn_opt") public class BasCrnOpt implements Serializable { private static final long serialVersionUID = 1L; /** * ID */ @ApiModelProperty(value= "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 任务号 */ @ApiModelProperty(value= "任务号") @TableField("wrk_no") private Integer wrkNo; /** * 堆垛机 */ @ApiModelProperty(value= "堆垛机") @TableField("crn_no") private Integer crnNo; /** * 下发时间 */ @ApiModelProperty(value= "下发时间") @TableField("send_time") private Date sendTime; /** * 模式 */ @ApiModelProperty(value= "模式") private String mode; /** * 源排 */ @ApiModelProperty(value= "源排") @TableField("source_row") private Integer sourceRow; /** * 源列 */ @ApiModelProperty(value= "源列") @TableField("source_bay") private Integer sourceBay; /** * 源层 */ @ApiModelProperty(value= "源层") @TableField("source_lev") private Integer sourceLev; /** * 源站 */ @ApiModelProperty(value= "源站") @TableField("source_sta") private Integer sourceSta; /** * 目标排 */ @ApiModelProperty(value= "目标排") @TableField("pos_row") private Integer posRow; /** * 目标列 */ @ApiModelProperty(value= "目标列") @TableField("pos_bay") private Integer posBay; /** * 目标层 */ @ApiModelProperty(value= "目标层") @TableField("pos_lev") private Integer posLev; /** * 目标站 */ @ApiModelProperty(value= "目标站") @TableField("pos_sta") private Integer posSta; /** * 响应结果 1: 正常 0: 失败 */ @ApiModelProperty(value= "响应结果 1: 正常 0: 失败 ") private Integer response; /** * 修改时间 */ @ApiModelProperty(value= "修改时间") @TableField("update_time") private Date updateTime; /** * 修改人员 */ @ApiModelProperty(value= "修改人员") @TableField("update_by") private Long updateBy; public BasCrnOpt() {} public BasCrnOpt(Integer wrkNo,Integer crnNo,Date sendTime,String mode,Integer sourceRow,Integer sourceBay,Integer sourceLev,Integer sourceSta,Integer posRow,Integer posBay,Integer posLev,Integer posSta,Integer response,Date updateTime,Long updateBy) { this.wrkNo = wrkNo; this.crnNo = crnNo; this.sendTime = sendTime; this.mode = mode; this.sourceRow = sourceRow; this.sourceBay = sourceBay; this.sourceLev = sourceLev; this.sourceSta = sourceSta; this.posRow = posRow; this.posBay = posBay; this.posLev = posLev; this.posSta = posSta; this.response = response; this.updateTime = updateTime; this.updateBy = updateBy; } // BasCrnOpt basCrnOpt = new BasCrnOpt( // null, // 任务号 // null, // 堆垛机[非空] // null, // 下发时间 // null, // 模式 // null, // 源排 // null, // 源列 // null, // 源层 // null, // 源站 // null, // 目标排 // null, // 目标列 // null, // 目标层 // null, // 目标站 // null, // 响应结果 // null, // 修改时间 // null // 修改人员 // ); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Integer getWrkNo() { return wrkNo; } public void setWrkNo(Integer wrkNo) { this.wrkNo = wrkNo; } public Integer getCrnNo() { return crnNo; } public void setCrnNo(Integer crnNo) { this.crnNo = crnNo; } public Date getSendTime() { return sendTime; } public String getSendTime$(){ if (Cools.isEmpty(this.sendTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime); } public void setSendTime(Date sendTime) { this.sendTime = sendTime; } public String getMode() { return mode; } public void setMode(String mode) { this.mode = mode; } public Integer getSourceRow() { return sourceRow; } public void setSourceRow(Integer sourceRow) { this.sourceRow = sourceRow; } public Integer getSourceBay() { return sourceBay; } public void setSourceBay(Integer sourceBay) { this.sourceBay = sourceBay; } public Integer getSourceLev() { return sourceLev; } public void setSourceLev(Integer sourceLev) { this.sourceLev = sourceLev; } public Integer getSourceSta() { return sourceSta; } public void setSourceSta(Integer sourceSta) { this.sourceSta = sourceSta; } public Integer getPosRow() { return posRow; } public void setPosRow(Integer posRow) { this.posRow = posRow; } public Integer getPosBay() { return posBay; } public void setPosBay(Integer posBay) { this.posBay = posBay; } public Integer getPosLev() { return posLev; } public void setPosLev(Integer posLev) { this.posLev = posLev; } public Integer getPosSta() { return posSta; } public void setPosSta(Integer posSta) { this.posSta = posSta; } public Integer getResponse() { return response; } public String getResponse$(){ if (null == this.response){ return null; } switch (this.response){ case 1: return "正常"; case 0: return "失败"; default: return String.valueOf(this.response); } } public void setResponse(Integer response) { this.response = response; } public Date getUpdateTime() { return updateTime; } public String getUpdateTime$(){ if (Cools.isEmpty(this.updateTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } public Long getUpdateBy() { return updateBy; } public String getUpdateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.updateBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getUsername()); } return null; } public void setUpdateBy(Long updateBy) { this.updateBy = updateBy; } } src/main/java/com/zy/asrs/entity/BasErrLog.java
New file @@ -0,0 +1,456 @@ package com.zy.asrs.entity; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; import com.core.common.Cools; import com.core.common.SpringUtils; import com.zy.system.entity.User; import com.zy.system.service.UserService; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; @TableName("asr_bas_err_log") public class BasErrLog implements Serializable { private static final long serialVersionUID = 1L; /** * ID */ @ApiModelProperty(value= "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 编号 */ @ApiModelProperty(value= "编号") private String uuid; /** * 工作号 */ @ApiModelProperty(value= "工作号") @TableField("wrk_no") private Integer wrkNo; /** * 发生时间 */ @ApiModelProperty(value= "发生时间") @TableField("start_time") private Date startTime; /** * 结束时间 */ @ApiModelProperty(value= "结束时间") @TableField("end_time") private Date endTime; /** * 工作状态 */ @ApiModelProperty(value= "工作状态") @TableField("wrk_sts") private Long wrkSts; /** * 入出库类型 */ @ApiModelProperty(value= "入出库类型") @TableField("io_type") private Integer ioType; /** * 堆垛机 */ @ApiModelProperty(value= "堆垛机") @TableField("crn_no") private Integer crnNo; /** * plc */ @ApiModelProperty(value= "plc") @TableField("plc_no") private Integer plcNo; /** * 目标库位 */ @ApiModelProperty(value= "目标库位") @TableField("loc_no") private String locNo; /** * 目标站 */ @ApiModelProperty(value= "目标站") @TableField("sta_no") private Integer staNo; /** * 源站 */ @ApiModelProperty(value= "源站") @TableField("source_sta_no") private Integer sourceStaNo; /** * 源库位 */ @ApiModelProperty(value= "源库位") @TableField("source_loc_no") private String sourceLocNo; /** * 条码 */ @ApiModelProperty(value= "条码") private String barcode; /** * 异常码 */ @ApiModelProperty(value= "异常码") @TableField("err_code") private Integer errCode; /** * 异常 */ @ApiModelProperty(value= "异常") private String error; /** * 异常情况 1: 未处理 2: 已修复 */ @ApiModelProperty(value= "异常情况 1: 未处理 2: 已修复 ") private Integer status; /** * 添加时间 */ @ApiModelProperty(value= "添加时间") @TableField("create_time") private Date createTime; /** * 添加人员 */ @ApiModelProperty(value= "添加人员") @TableField("create_by") private Long createBy; /** * 修改时间 */ @ApiModelProperty(value= "修改时间") @TableField("update_time") private Date updateTime; /** * 修改人员 */ @ApiModelProperty(value= "修改人员") @TableField("update_by") private Long updateBy; /** * 备注 */ @ApiModelProperty(value= "备注") private String memo; public BasErrLog() {} public BasErrLog(String uuid,Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer crnNo,Integer plcNo,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String barcode,Integer errCode,String error,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) { this.uuid = uuid; this.wrkNo = wrkNo; this.startTime = startTime; this.endTime = endTime; this.wrkSts = wrkSts; this.ioType = ioType; this.crnNo = crnNo; this.plcNo = plcNo; this.locNo = locNo; this.staNo = staNo; this.sourceStaNo = sourceStaNo; this.sourceLocNo = sourceLocNo; this.barcode = barcode; this.errCode = errCode; this.error = error; this.status = status; this.createTime = createTime; this.createBy = createBy; this.updateTime = updateTime; this.updateBy = updateBy; this.memo = memo; } // BasErrLog basErrLog = new BasErrLog( // null, // 编号 // null, // 工作号 // null, // 发生时间 // null, // 结束时间 // null, // 工作状态 // null, // 入出库类型 // null, // 堆垛机 // null, // plc // null, // 目标库位 // null, // 目标站 // null, // 源站 // null, // 源库位 // null, // 条码 // null, // 异常码 // null, // 异常 // null, // 异常情况 // null, // 添加时间 // null, // 添加人员 // null, // 修改时间 // null, // 修改人员 // null // 备注 // ); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } public Integer getWrkNo() { return wrkNo; } public void setWrkNo(Integer wrkNo) { this.wrkNo = wrkNo; } public Date getStartTime() { return startTime; } public String getStartTime$(){ if (Cools.isEmpty(this.startTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime); } public void setStartTime(Date startTime) { this.startTime = startTime; } public Date getEndTime() { return endTime; } public String getEndTime$(){ if (Cools.isEmpty(this.endTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); } public void setEndTime(Date endTime) { this.endTime = endTime; } public Long getWrkSts() { return wrkSts; } public void setWrkSts(Long wrkSts) { this.wrkSts = wrkSts; } public Integer getIoType() { return ioType; } public void setIoType(Integer ioType) { this.ioType = ioType; } public Integer getCrnNo() { return crnNo; } public void setCrnNo(Integer crnNo) { this.crnNo = crnNo; } public Integer getPlcNo() { return plcNo; } public void setPlcNo(Integer plcNo) { this.plcNo = plcNo; } public String getLocNo() { return locNo; } public void setLocNo(String locNo) { this.locNo = locNo; } public Integer getStaNo() { return staNo; } public void setStaNo(Integer staNo) { this.staNo = staNo; } public Integer getSourceStaNo() { return sourceStaNo; } public void setSourceStaNo(Integer sourceStaNo) { this.sourceStaNo = sourceStaNo; } public String getSourceLocNo() { return sourceLocNo; } public void setSourceLocNo(String sourceLocNo) { this.sourceLocNo = sourceLocNo; } public String getBarcode() { return barcode; } public void setBarcode(String barcode) { this.barcode = barcode; } public Integer getErrCode() { return errCode; } public void setErrCode(Integer errCode) { this.errCode = errCode; } public String getError() { return error; } public void setError(String error) { this.error = error; } public Integer getStatus() { return status; } public String getStatus$(){ if (null == this.status){ return null; } switch (this.status){ case 1: return "未处理"; case 2: return "已修复"; default: return String.valueOf(this.status); } } public void setStatus(Integer status) { this.status = status; } public Date getCreateTime() { return createTime; } public String getCreateTime$(){ if (Cools.isEmpty(this.createTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Long getCreateBy() { return createBy; } public String getCreateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.createBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getUsername()); } return null; } public void setCreateBy(Long createBy) { this.createBy = createBy; } public Date getUpdateTime() { return updateTime; } public String getUpdateTime$(){ if (Cools.isEmpty(this.updateTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } public Long getUpdateBy() { return updateBy; } public String getUpdateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.updateBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getUsername()); } return null; } public void setUpdateBy(Long updateBy) { this.updateBy = updateBy; } public String getMemo() { return memo; } public void setMemo(String memo) { this.memo = memo; } } src/main/java/com/zy/asrs/mapper/BasCrnOptMapper.java
New file @@ -0,0 +1,12 @@ package com.zy.asrs.mapper; import com.zy.asrs.entity.BasCrnOpt; import com.baomidou.mybatisplus.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface BasCrnOptMapper extends BaseMapper<BasCrnOpt> { } src/main/java/com/zy/asrs/mapper/BasErrLogMapper.java
New file @@ -0,0 +1,12 @@ package com.zy.asrs.mapper; import com.zy.asrs.entity.BasErrLog; import com.baomidou.mybatisplus.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface BasErrLogMapper extends BaseMapper<BasErrLog> { } src/main/java/com/zy/asrs/service/BasCrnOptService.java
New file @@ -0,0 +1,8 @@ package com.zy.asrs.service; import com.zy.asrs.entity.BasCrnOpt; import com.baomidou.mybatisplus.service.IService; public interface BasCrnOptService extends IService<BasCrnOpt> { } src/main/java/com/zy/asrs/service/BasErrLogService.java
New file @@ -0,0 +1,12 @@ package com.zy.asrs.service; import com.zy.asrs.entity.BasErrLog; import com.baomidou.mybatisplus.service.IService; public interface BasErrLogService extends IService<BasErrLog> { BasErrLog findLatestByTaskNo(Integer crnNo, Integer taskNo); BasErrLog findLatest(Integer crnNo); } src/main/java/com/zy/asrs/service/impl/BasCrnOptServiceImpl.java
New file @@ -0,0 +1,12 @@ package com.zy.asrs.service.impl; import com.zy.asrs.mapper.BasCrnOptMapper; import com.zy.asrs.entity.BasCrnOpt; import com.zy.asrs.service.BasCrnOptService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @Service("basCrnOptService") public class BasCrnOptServiceImpl extends ServiceImpl<BasCrnOptMapper, BasCrnOpt> implements BasCrnOptService { } src/main/java/com/zy/asrs/service/impl/BasErrLogServiceImpl.java
New file @@ -0,0 +1,34 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.mapper.BasErrLogMapper; import com.zy.asrs.entity.BasErrLog; import com.zy.asrs.service.BasErrLogService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; @Service("basErrLogService") public class BasErrLogServiceImpl extends ServiceImpl<BasErrLogMapper, BasErrLog> implements BasErrLogService { @Override public BasErrLog findLatestByTaskNo(Integer crnNo, Integer taskNo) { List<BasErrLog> basErrLogs = this.baseMapper.selectList(new EntityWrapper<BasErrLog>().eq("crn_no", crnNo).eq("wrk_no", taskNo).orderBy("start_time", false)); if (basErrLogs == null || basErrLogs.size() == 0) { return null; } else { return basErrLogs.get(0); } } @Override public BasErrLog findLatest(Integer crnNo) { List<BasErrLog> basErrLogs = this.baseMapper.selectList(new EntityWrapper<BasErrLog>().eq("crn_no", crnNo).orderBy("start_time", false)); if (basErrLogs == null || basErrLogs.size() == 0) { return null; } else { return basErrLogs.get(0); } } } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -6,6 +6,7 @@ import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.BasCrnErrorMapper; import com.zy.asrs.mapper.WaitPakinMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; @@ -94,6 +95,10 @@ private BasDevpService basDevpService; @Autowired private LocDetlService locDetlService; @Autowired private BasErrLogService basErrLogService; @Autowired private BasCrnErrorMapper basCrnErrorMapper; @Autowired private JdbcTemplate jdbcTemplate; @@ -721,8 +726,115 @@ /** * 堆垛机异常信息记录 */ @Async public void recCrnErr(){ Date now = new Date(); for (CrnSlave crn : slaveProperties.getCrn()) { // 获取堆垛机信息 CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { continue; } // 只在连线模式下记录 if (crnProtocol.getModeType() == CrnModeType.AUTO) { // 有任务 if (crnProtocol.getTaskNo() != 0) { BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue()); // 有异常 if (latest == null) { if (crnProtocol.getAlarm1() != null && crnProtocol.getAlarm1() > 0) { WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo()); BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1()); BasErrLog basErrLog = new BasErrLog( null, // 编号 wrkMast.getWrkNo(), // 工作号 now, // 发生时间 null, // 结束时间 wrkMast.getWrkSts(), // 工作状态 wrkMast.getIoType(), // 入出库类型 crn.getId(), // 堆垛机 null, // plc wrkMast.getLocNo(), // 目标库位 wrkMast.getStaNo(), // 目标站 wrkMast.getSourceStaNo(), // 源站 wrkMast.getSourceLocNo(), // 源库位 wrkMast.getBarcode(), // 条码 crnProtocol.getAlarm1().intValue(), // 异常码 crnError.getErrName(), // 异常 1, // 异常情况 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 "任务中异常" // 备注 ); if (!basErrLogService.insert(basErrLog)) { log.error("堆垛机plc异常记录失败 ===>> [id:{}] [error:{}]", crn.getId(), crnError.getErrName()); } } } else { // 异常修复 if (crnProtocol.getAlarm1() == null || crnProtocol.getAlarm1() == 0) { latest.setEndTime(now); latest.setUpdateTime(now); latest.setStatus(2); if (!basErrLogService.updateById(latest)) { log.error("堆垛机plc异常记录修复失败 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId()); } } } // 无任务 } else { BasErrLog latest = basErrLogService.findLatest(crn.getId()); // 有异常 if (crnProtocol.getAlarm1() != null && crnProtocol.getAlarm1() > 0) { // 记录新异常 if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm1().intValue())) { BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1()); BasErrLog basErrLog = new BasErrLog( null, // 编号 null, // 工作号 now, // 发生时间 null, // 结束时间 null, // 工作状态 null, // 入出库类型 crn.getId(), // 堆垛机 null, // plc null, // 目标库位 null, // 目标站 null, // 源站 null, // 源库位 null, // 条码 crnProtocol.getAlarm1().intValue(), // 异常码 crnError.getErrName(), // 异常 1, // 异常情况 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 "无任务异常" // 备注 ); if (!basErrLogService.insert(basErrLog)) { log.error("堆垛机plc异常记录失败 ===>> [id:{}] [error:{}]", crn.getId(), crnError.getErrName()); } } // 无异常 } else { // 异常修复 if (latest != null && latest.getStatus() == 1) { latest.setEndTime(now); latest.setUpdateTime(now); latest.setStatus(2); if (!basErrLogService.updateById(latest)) { log.error("堆垛机plc异常记录修复失败 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId()); } } } } } } } src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -8,7 +8,9 @@ import com.core.common.Arith; import com.core.common.DateUtils; import com.core.common.SpringUtils; import com.zy.asrs.entity.BasCrnOpt; import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.service.BasCrnOptService; import com.zy.asrs.service.BasCrnpService; import com.zy.core.CrnThread; import com.zy.core.cache.MessageQueue; @@ -197,6 +199,27 @@ array[8] = command.getDestinationPosZ(); OperateResult result = siemensNet.Write("DB8.0", array); if (result.IsSuccess) { // 日志记录 BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); BasCrnOpt basCrnOpt = new BasCrnOpt( command.getTaskNo().intValue(), // 任务号 command.getCrnNo(), // 堆垛机[非空] new Date(), // 下发时间 command.getTaskModeType().toString(), // 模式 command.getSourcePosX().intValue(), // 源排 command.getSourcePosY().intValue(), // 源列 command.getSourcePosZ().intValue(), // 源层 null, // 源站 command.getDestinationPosX().intValue(), // 目标排 command.getDestinationPosY().intValue(), // 目标列 command.getDestinationPosZ().intValue(), // 目标层 null, // 目标站 null, // 响应结果 null, // 修改时间 null // 修改人员 ); bean.insert(basCrnOpt); log.info("堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); return true;