Commit 9d7953d8 authored by wanghao's avatar wanghao

1 接收标定数据后只更新实时数据,一键解绑后 去 记录 历史数据 和 上传MES调整,上传失败后记录失败记录。可再次上传。

2 解绑完成时 形成  历史数据 和 上传MES失败记录 两份数据及界面展示 调整。
3 老化过程中 读取设备数据,如果没读到数据 记录 通信异常。
parent 315e3959
package com.zehong.web.controller.equipment;
import com.zehong.common.core.controller.BaseController;
import com.zehong.common.core.domain.AjaxResult;
import com.zehong.common.core.page.TableDataInfo;
import com.zehong.common.utils.poi.ExcelUtil;
import com.zehong.system.domain.PalletDeviceUploadFailure;
import com.zehong.system.service.IPalletDeviceUploadFailureService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 上传失败历史记录Controller
*
* @author zehong
* @date 2026-01-16
*/
@RestController
@RequestMapping("/palletDevice/binding/failure")
public class PalletDeviceUploadFailureController extends BaseController
{
@Autowired
private IPalletDeviceUploadFailureService palletDeviceUploadFailureService;
/**
* 查询上传失败历史记录列表
*/
@GetMapping("/list")
public TableDataInfo list(PalletDeviceUploadFailure palletDeviceUploadFailure)
{
startPage();
List<PalletDeviceUploadFailure> list = palletDeviceUploadFailureService.selectPalletDeviceUploadFailureList(palletDeviceUploadFailure);
return getDataTable(list);
}
/**
* 重新上传
*/
@GetMapping("/handleReUpload")
public AjaxResult handleReUpload(){
return palletDeviceUploadFailureService.handleReUpload();
}
/**
* 导出上传失败历史记录列表
*/
@GetMapping("/export")
public AjaxResult export(PalletDeviceUploadFailure palletDeviceUploadFailure)
{
List<PalletDeviceUploadFailure> list = palletDeviceUploadFailureService.selectPalletDeviceUploadFailureList(palletDeviceUploadFailure);
ExcelUtil<PalletDeviceUploadFailure> util = new ExcelUtil<PalletDeviceUploadFailure>(PalletDeviceUploadFailure.class);
return util.exportExcel(list, "上传失败历史记录数据");
}
/**
* 获取上传失败历史记录详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(palletDeviceUploadFailureService.selectPalletDeviceUploadFailureById(id));
}
/**
* 新增上传失败历史记录
*/
@PostMapping
public AjaxResult add(@RequestBody PalletDeviceUploadFailure palletDeviceUploadFailure)
{
return toAjax(palletDeviceUploadFailureService.insertPalletDeviceUploadFailure(palletDeviceUploadFailure));
}
/**
* 修改上传失败历史记录
*/
@PutMapping
public AjaxResult edit(@RequestBody PalletDeviceUploadFailure palletDeviceUploadFailure)
{
return toAjax(palletDeviceUploadFailureService.updatePalletDeviceUploadFailure(palletDeviceUploadFailure));
}
/**
* 删除上传失败历史记录
*/
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(palletDeviceUploadFailureService.deletePalletDeviceUploadFailureByIds(ids));
}
}
...@@ -64,14 +64,6 @@ public class PalletDeviceUploadHistoryController extends BaseController ...@@ -64,14 +64,6 @@ public class PalletDeviceUploadHistoryController extends BaseController
return toAjax(palletDeviceUploadHistoryService.insertPalletDeviceUploadHistory(palletDeviceUploadHistory)); return toAjax(palletDeviceUploadHistoryService.insertPalletDeviceUploadHistory(palletDeviceUploadHistory));
} }
/**
* 重新上传
*/
@GetMapping("/handleReUpload")
public AjaxResult handleReUpload(){
return palletDeviceUploadHistoryService.handleReUpload();
}
/** /**
* 修改未上传成功的历史数据列 * 修改未上传成功的历史数据列
*/ */
......
...@@ -33,7 +33,7 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -33,7 +33,7 @@ public class PalletDeviceBinding extends BaseEntity
private String storeyCode; private String storeyCode;
/** 绑定的设备编号 */ /** 绑定的设备编号 */
@Excel(name = "绑定的设备编号") @Excel(name = "绑定的设备编号")
private String deviceCode; private String motherboardCode;
/** 行 */ /** 行 */
@Excel(name = "行") @Excel(name = "行")
...@@ -64,9 +64,9 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -64,9 +64,9 @@ public class PalletDeviceBinding extends BaseEntity
private Date unbindingTime; private Date unbindingTime;
/** /**
* 状态 0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障 * 状态 0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障;-9999 通讯异常
*/ */
private String status; private String deviceStatus;
/** /**
* modbus 通信设置时间 年 * modbus 通信设置时间 年
...@@ -180,12 +180,24 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -180,12 +180,24 @@ public class PalletDeviceBinding extends BaseEntity
*/ */
private Integer networkStatus; private Integer networkStatus;
public String getStatus() { /**
return status; * 解绑状态 (0:否, 1:是)
*/
private String calibrationUnbindStatus;
/**
* 第一个解绑的设备编号
* 这个字段就是为了区分第一个解绑的设备编号标志,如果是的话,则 需要存 历史,上传MES,生成 标检 质检 等。
* 1 是 0 不是
*/
private String firstUnboundDeviceFlag;
public String getDeviceStatus() {
return deviceStatus;
} }
public void setStatus(String status) { public void setDeviceStatus(String deviceStatus) {
this.status = status; this.deviceStatus = deviceStatus;
} }
public void setPalletDeviceBindingId(Long palletDeviceBindingId) public void setPalletDeviceBindingId(Long palletDeviceBindingId)
...@@ -206,15 +218,15 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -206,15 +218,15 @@ public class PalletDeviceBinding extends BaseEntity
{ {
return trayId; return trayId;
} }
public void setDeviceCode(String deviceCode)
{ public String getMotherboardCode() {
this.deviceCode = deviceCode; return motherboardCode;
} }
public String getDeviceCode() public void setMotherboardCode(String motherboardCode) {
{ this.motherboardCode = motherboardCode;
return deviceCode;
} }
public void setRow(Integer row) public void setRow(Integer row)
{ {
this.row = row; this.row = row;
...@@ -460,6 +472,22 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -460,6 +472,22 @@ public class PalletDeviceBinding extends BaseEntity
this.storeyCode = storeyCode; this.storeyCode = storeyCode;
} }
public String getFirstUnboundDeviceFlag() {
return firstUnboundDeviceFlag;
}
public void setFirstUnboundDeviceFlag(String firstUnboundDeviceFlag) {
this.firstUnboundDeviceFlag = firstUnboundDeviceFlag;
}
public String getCalibrationUnbindStatus() {
return calibrationUnbindStatus;
}
public void setCalibrationUnbindStatus(String calibrationUnbindStatus) {
this.calibrationUnbindStatus = calibrationUnbindStatus;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
...@@ -467,14 +495,14 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -467,14 +495,14 @@ public class PalletDeviceBinding extends BaseEntity
.append("trayId", getTrayId()) .append("trayId", getTrayId())
.append("storeyCode", getStoreyCode()) .append("storeyCode", getStoreyCode())
.append("fTrayCode", getfTrayCode()) .append("fTrayCode", getfTrayCode())
.append("deviceCode", getDeviceCode()) .append("motherboardCode", getMotherboardCode())
.append("row", getRow()) .append("row", getRow())
.append("col", getCol()) .append("col", getCol())
.append("index", getIndex()) .append("index", getIndex())
.append("number", getNumber()) .append("number", getNumber())
.append("bindingTime", getBindingTime()) .append("bindingTime", getBindingTime())
.append("unbindingTime", getUnbindingTime()) .append("unbindingTime", getUnbindingTime())
.append("status", getStatus()) .append("deviceStatus", getDeviceStatus())
.append("recordYear", getRecordYear()) .append("recordYear", getRecordYear())
.append("recordMonth", getRecordMonth()) .append("recordMonth", getRecordMonth())
.append("recordDate", getRecordDate()) .append("recordDate", getRecordDate())
...@@ -501,6 +529,7 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -501,6 +529,7 @@ public class PalletDeviceBinding extends BaseEntity
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.append("createBy", getCreateBy()) .append("createBy", getCreateBy())
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
.append("calibrationUnbindStatus", getCalibrationUnbindStatus())
.toString(); .toString();
} }
} }
package com.zehong.system.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zehong.common.annotation.Excel;
import com.zehong.common.core.domain.BaseEntity;
/**
* 上传失败历史记录对象 t_pallet_device_upload_failure
*
* @author zehong
* @date 2026-01-16
*/
public class PalletDeviceUploadFailure extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 托盘id */
private Long id;
/** 托盘id */
private Long trayId;
/** 托盘编号 */
@Excel(name = "托盘编号")
private String trayCode;
/** 绑定层编号 */
@Excel(name = "绑定层编号")
private String storeyCode;
/** 绑定的设备编号 */
@Excel(name = "绑定的设备编号")
private String motherboardCode;
/** 行 */
@Excel(name = "行")
private Integer row;
/** 列 */
@Excel(name = "列")
private Integer col;
/** 第几个 */
@Excel(name = "第几个")
private Integer index;
/** 编号 */
@Excel(name = "编号")
private Integer number;
/** 绑定时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "绑定时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date bindingTime;
/** 解绑时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date unbindingTime;
/** 0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障 -9999通讯异常*/
@Excel(name = "0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障;-9999-通讯异常")
private String deviceStatus;
/** 设置-年 */
@Excel(name = "设置-年")
private String recordYear;
/** 设置-月 */
@Excel(name = "设置-月")
private String recordMonth;
/** 设置-日 */
@Excel(name = "设置-日")
private String recordDate;
/** 设置-时 */
@Excel(name = "设置-时")
private String recordHour;
/** 设置-分 */
@Excel(name = "设置-分")
private String recordMinute;
/** 写入时间状态;0-失败;1-成功 */
@Excel(name = "写入时间状态;0-失败;1-成功")
private String writeTimeStatus;
/** 调零AD */
@Excel(name = "调零AD")
private String adjustmentZeroAd;
/** 合格;不合格 */
@Excel(name = "合格;不合格")
private String zeroStatus;
/** 标定AD */
@Excel(name = "标定AD")
private String calibrationAd;
/** 合格;不合格 */
@Excel(name = "合格;不合格")
private String calibrationAdStatus;
/** 浓度值 */
@Excel(name = "浓度值")
private String concentration;
/** 写入时间状态;0-失败;1-成功 */
@Excel(name = "写入时间状态;0-失败;1-成功")
private String runTimeStatus;
/** 实时AD值 */
@Excel(name = "实时AD值")
private Integer realTimeAd;
/** 实时AD状态;0-异常;1-正常 */
@Excel(name = "实时AD状态;0-异常;1-正常")
private String realTimeStatus;
/** 标定浓度值 */
@Excel(name = "标定浓度值")
private BigDecimal calibrationConcentration;
/** 标定浓度状态(0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障; 只有是4的时候显示正常,其他的都是异常) */
@Excel(name = "标定浓度状态(0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障; 只有是4的时候显示正常,其他的都是异常)")
private String calibrationConcentrationStatus;
/** 写入自检状态(可以是空,0-失败,1-成功) */
@Excel(name = "写入自检状态(可以是空,0-失败,1-成功)")
private Integer writeSelfCheckStatus;
/** 继电器状态(0-初始,1-动作) */
@Excel(name = "继电器状态(0-初始,1-动作)")
private Integer relayStatus;
/** 脉冲状态(0-初始,1-动作) */
@Excel(name = "脉冲状态(0-初始,1-动作)")
private Integer pulseStatus;
/** 模组状态(0-异常,1-正常) */
@Excel(name = "模组状态(0-异常,1-正常)")
private Integer moduleStatus;
/** SIM卡状态(0-异常,1-正常) */
@Excel(name = "SIM卡状态(0-异常,1-正常)")
private Integer simCardStatus;
/** 网络状态(0-异常,1-正常) */
@Excel(name = "网络状态(0-异常,1-正常)")
private Integer networkStatus;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setTrayId(Long trayId)
{
this.trayId = trayId;
}
public Long getTrayId()
{
return trayId;
}
public void setStoreyCode(String storeyCode)
{
this.storeyCode = storeyCode;
}
public String getStoreyCode()
{
return storeyCode;
}
public String getMotherboardCode() {
return motherboardCode;
}
public void setMotherboardCode(String motherboardCode) {
this.motherboardCode = motherboardCode;
}
public void setRow(Integer row)
{
this.row = row;
}
public Integer getRow()
{
return row;
}
public void setCol(Integer col)
{
this.col = col;
}
public Integer getCol()
{
return col;
}
public void setIndex(Integer index)
{
this.index = index;
}
public Integer getIndex()
{
return index;
}
public void setNumber(Integer number)
{
this.number = number;
}
public Integer getNumber()
{
return number;
}
public void setBindingTime(Date bindingTime)
{
this.bindingTime = bindingTime;
}
public Date getBindingTime()
{
return bindingTime;
}
public void setUnbindingTime(Date unbindingTime)
{
this.unbindingTime = unbindingTime;
}
public Date getUnbindingTime()
{
return unbindingTime;
}
public String getDeviceStatus() {
return deviceStatus;
}
public void setDeviceStatus(String deviceStatus) {
this.deviceStatus = deviceStatus;
}
public void setRecordYear(String recordYear)
{
this.recordYear = recordYear;
}
public String getRecordYear()
{
return recordYear;
}
public void setRecordMonth(String recordMonth)
{
this.recordMonth = recordMonth;
}
public String getRecordMonth()
{
return recordMonth;
}
public void setRecordDate(String recordDate)
{
this.recordDate = recordDate;
}
public String getRecordDate()
{
return recordDate;
}
public void setRecordHour(String recordHour)
{
this.recordHour = recordHour;
}
public String getRecordHour()
{
return recordHour;
}
public void setRecordMinute(String recordMinute)
{
this.recordMinute = recordMinute;
}
public String getRecordMinute()
{
return recordMinute;
}
public void setWriteTimeStatus(String writeTimeStatus)
{
this.writeTimeStatus = writeTimeStatus;
}
public String getWriteTimeStatus()
{
return writeTimeStatus;
}
public void setAdjustmentZeroAd(String adjustmentZeroAd)
{
this.adjustmentZeroAd = adjustmentZeroAd;
}
public String getAdjustmentZeroAd()
{
return adjustmentZeroAd;
}
public void setZeroStatus(String zeroStatus)
{
this.zeroStatus = zeroStatus;
}
public String getZeroStatus()
{
return zeroStatus;
}
public void setCalibrationAd(String calibrationAd)
{
this.calibrationAd = calibrationAd;
}
public String getCalibrationAd()
{
return calibrationAd;
}
public String getCalibrationAdStatus() {
return calibrationAdStatus;
}
public void setCalibrationAdStatus(String calibrationAdStatus) {
this.calibrationAdStatus = calibrationAdStatus;
}
public void setConcentration(String concentration)
{
this.concentration = concentration;
}
public String getConcentration()
{
return concentration;
}
public void setRunTimeStatus(String runTimeStatus)
{
this.runTimeStatus = runTimeStatus;
}
public String getRunTimeStatus()
{
return runTimeStatus;
}
public void setRealTimeAd(Integer realTimeAd)
{
this.realTimeAd = realTimeAd;
}
public Integer getRealTimeAd()
{
return realTimeAd;
}
public String getRealTimeStatus() {
return realTimeStatus;
}
public void setRealTimeStatus(String realTimeStatus) {
this.realTimeStatus = realTimeStatus;
}
public void setCalibrationConcentration(BigDecimal calibrationConcentration)
{
this.calibrationConcentration = calibrationConcentration;
}
public BigDecimal getCalibrationConcentration()
{
return calibrationConcentration;
}
public void setCalibrationConcentrationStatus(String calibrationConcentrationStatus)
{
this.calibrationConcentrationStatus = calibrationConcentrationStatus;
}
public String getCalibrationConcentrationStatus()
{
return calibrationConcentrationStatus;
}
public void setWriteSelfCheckStatus(Integer writeSelfCheckStatus)
{
this.writeSelfCheckStatus = writeSelfCheckStatus;
}
public Integer getWriteSelfCheckStatus()
{
return writeSelfCheckStatus;
}
public void setRelayStatus(Integer relayStatus)
{
this.relayStatus = relayStatus;
}
public Integer getRelayStatus()
{
return relayStatus;
}
public void setPulseStatus(Integer pulseStatus)
{
this.pulseStatus = pulseStatus;
}
public Integer getPulseStatus()
{
return pulseStatus;
}
public void setModuleStatus(Integer moduleStatus)
{
this.moduleStatus = moduleStatus;
}
public Integer getModuleStatus()
{
return moduleStatus;
}
public void setSimCardStatus(Integer simCardStatus)
{
this.simCardStatus = simCardStatus;
}
public Integer getSimCardStatus()
{
return simCardStatus;
}
public void setNetworkStatus(Integer networkStatus)
{
this.networkStatus = networkStatus;
}
public Integer getNetworkStatus()
{
return networkStatus;
}
public String getTrayCode() {
return trayCode;
}
public void setTrayCode(String trayCode) {
this.trayCode = trayCode;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("trayId", getTrayId())
.append("storeyCode", getStoreyCode())
.append("motherboardCode", getMotherboardCode())
.append("row", getRow())
.append("col", getCol())
.append("index", getIndex())
.append("number", getNumber())
.append("bindingTime", getBindingTime())
.append("unbindingTime", getUnbindingTime())
.append("createTime", getCreateTime())
.append("deviceStatus", getDeviceStatus())
.append("recordYear", getRecordYear())
.append("recordMonth", getRecordMonth())
.append("recordDate", getRecordDate())
.append("recordHour", getRecordHour())
.append("recordMinute", getRecordMinute())
.append("writeTimeStatus", getWriteTimeStatus())
.append("adjustmentZeroAd", getAdjustmentZeroAd())
.append("zeroStatus", getZeroStatus())
.append("calibrationAd", getCalibrationAd())
.append("calibrationAdStatus", getCalibrationAdStatus())
.append("concentration", getConcentration())
.append("runTimeStatus", getRunTimeStatus())
.append("realTimeAd", getRealTimeAd())
.append("realTimeStatus", getRealTimeStatus())
.append("calibrationConcentration", getCalibrationConcentration())
.append("calibrationConcentrationStatus", getCalibrationConcentrationStatus())
.append("writeSelfCheckStatus", getWriteSelfCheckStatus())
.append("relayStatus", getRelayStatus())
.append("pulseStatus", getPulseStatus())
.append("moduleStatus", getModuleStatus())
.append("simCardStatus", getSimCardStatus())
.append("networkStatus", getNetworkStatus())
.append("trayCode", getTrayCode())
.toString();
}
}
...@@ -33,7 +33,7 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -33,7 +33,7 @@ public class PalletDeviceUploadHistory extends BaseEntity
/** 绑定的设备编号 */ /** 绑定的设备编号 */
@Excel(name = "设备编号") @Excel(name = "设备编号")
private String deviceCode; private String motherboardCode;
/** 行 */ /** 行 */
@Excel(name = "行") @Excel(name = "行")
...@@ -58,12 +58,11 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -58,12 +58,11 @@ public class PalletDeviceUploadHistory extends BaseEntity
/** 解绑时间 */ /** 解绑时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "解绑时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date unbindingTime; private Date unbindingTime;
/** 0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障 */ /** 0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障 ;-9999-通讯异常*/
@Excel(name = "状态") @Excel(name = "状态")
private String status; private String deviceStatus;
/** 设置-年 */ /** 设置-年 */
@Excel(name = "设置-年") @Excel(name = "设置-年")
...@@ -103,7 +102,7 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -103,7 +102,7 @@ public class PalletDeviceUploadHistory extends BaseEntity
/** 合格;不合格 */ /** 合格;不合格 */
@Excel(name = "标定状态0-不合格;1-合格") @Excel(name = "标定状态0-不合格;1-合格")
private String calibrationStatus; private String calibrationAdStatus;
/** 浓度值 */ /** 浓度值 */
@Excel(name = "浓度值") @Excel(name = "浓度值")
...@@ -119,7 +118,7 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -119,7 +118,7 @@ public class PalletDeviceUploadHistory extends BaseEntity
/** 实时AD状态;0-异常;1-正常 */ /** 实时AD状态;0-异常;1-正常 */
@Excel(name = "实时AD状态;0-异常;1-正常 ") @Excel(name = "实时AD状态;0-异常;1-正常 ")
private String realTimeAdStatus; private String realTimeStatus;
/** /**
* 传感器校准浓度 * 传感器校准浓度
...@@ -187,14 +186,13 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -187,14 +186,13 @@ public class PalletDeviceUploadHistory extends BaseEntity
{ {
return trayId; return trayId;
} }
public void setDeviceCode(String deviceCode)
{ public String getMotherboardCode() {
this.deviceCode = deviceCode; return motherboardCode;
} }
public String getDeviceCode() public void setMotherboardCode(String motherboardCode) {
{ this.motherboardCode = motherboardCode;
return deviceCode;
} }
public void setRow(Integer row) public void setRow(Integer row)
{ {
...@@ -250,15 +248,15 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -250,15 +248,15 @@ public class PalletDeviceUploadHistory extends BaseEntity
{ {
return unbindingTime; return unbindingTime;
} }
public void setStatus(String status)
{ public String getDeviceStatus() {
this.status = status; return deviceStatus;
} }
public String getStatus() public void setDeviceStatus(String deviceStatus) {
{ this.deviceStatus = deviceStatus;
return status;
} }
public void setRecordYear(String recordYear) public void setRecordYear(String recordYear)
{ {
this.recordYear = recordYear; this.recordYear = recordYear;
...@@ -340,15 +338,15 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -340,15 +338,15 @@ public class PalletDeviceUploadHistory extends BaseEntity
{ {
return calibrationAd; return calibrationAd;
} }
public void setCalibrationStatus(String calibrationStatus)
{ public String getCalibrationAdStatus() {
this.calibrationStatus = calibrationStatus; return calibrationAdStatus;
} }
public String getCalibrationStatus() public void setCalibrationAdStatus(String calibrationAdStatus) {
{ this.calibrationAdStatus = calibrationAdStatus;
return calibrationStatus;
} }
public void setConcentration(String concentration) public void setConcentration(String concentration)
{ {
this.concentration = concentration; this.concentration = concentration;
...@@ -376,14 +374,13 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -376,14 +374,13 @@ public class PalletDeviceUploadHistory extends BaseEntity
{ {
return realTimeAd; return realTimeAd;
} }
public void setRealTimeAdStatus(String realTimeAdStatus)
{ public String getRealTimeStatus() {
this.realTimeAdStatus = realTimeAdStatus; return realTimeStatus;
} }
public String getRealTimeAdStatus() public void setRealTimeStatus(String realTimeStatus) {
{ this.realTimeStatus = realTimeStatus;
return realTimeAdStatus;
} }
public String getTrayCode() { public String getTrayCode() {
...@@ -473,14 +470,14 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -473,14 +470,14 @@ public class PalletDeviceUploadHistory extends BaseEntity
", trayId=" + trayId + ", trayId=" + trayId +
", storeyCode=" + storeyCode + ", storeyCode=" + storeyCode +
", trayCode='" + trayCode + '\'' + ", trayCode='" + trayCode + '\'' +
", deviceCode='" + deviceCode + '\'' + ", motherboardCode='" + motherboardCode + '\'' +
", row=" + row + ", row=" + row +
", col=" + col + ", col=" + col +
", index=" + index + ", index=" + index +
", number=" + number + ", number=" + number +
", bindingTime=" + bindingTime + ", bindingTime=" + bindingTime +
", unbindingTime=" + unbindingTime + ", unbindingTime=" + unbindingTime +
", status='" + status + '\'' + ", deviceStatus='" + deviceStatus + '\'' +
", recordYear='" + recordYear + '\'' + ", recordYear='" + recordYear + '\'' +
", recordMonth='" + recordMonth + '\'' + ", recordMonth='" + recordMonth + '\'' +
", recordDate='" + recordDate + '\'' + ", recordDate='" + recordDate + '\'' +
...@@ -490,11 +487,11 @@ public class PalletDeviceUploadHistory extends BaseEntity ...@@ -490,11 +487,11 @@ public class PalletDeviceUploadHistory extends BaseEntity
", adjustmentZeroAd='" + adjustmentZeroAd + '\'' + ", adjustmentZeroAd='" + adjustmentZeroAd + '\'' +
", zeroStatus='" + zeroStatus + '\'' + ", zeroStatus='" + zeroStatus + '\'' +
", calibrationAd='" + calibrationAd + '\'' + ", calibrationAd='" + calibrationAd + '\'' +
", calibrationStatus='" + calibrationStatus + '\'' + ", calibrationAdStatus='" + calibrationAdStatus + '\'' +
", concentration='" + concentration + '\'' + ", concentration='" + concentration + '\'' +
", runTimeStatus='" + runTimeStatus + '\'' + ", runTimeStatus='" + runTimeStatus + '\'' +
", realTimeAd=" + realTimeAd + ", realTimeAd=" + realTimeAd +
", realTimeAdStatus='" + realTimeAdStatus + '\'' + ", realTimeStatus='" + realTimeStatus + '\'' +
", calibrationConcentration=" + calibrationConcentration + ", calibrationConcentration=" + calibrationConcentration +
", calibrationConcentrationStatus='" + calibrationConcentrationStatus + '\'' + ", calibrationConcentrationStatus='" + calibrationConcentrationStatus + '\'' +
", writeSelfCheckStatus=" + writeSelfCheckStatus + ", writeSelfCheckStatus=" + writeSelfCheckStatus +
......
...@@ -48,6 +48,8 @@ public interface PalletDeviceBindingMapper ...@@ -48,6 +48,8 @@ public interface PalletDeviceBindingMapper
public int countDeviceByTrayId(Long trayId); public int countDeviceByTrayId(Long trayId);
public List<PalletDeviceBinding> listByTrayId(Long trayId);
/** /**
* 新增托盘绑定的设备列 * 新增托盘绑定的设备列
* *
...@@ -72,6 +74,8 @@ public interface PalletDeviceBindingMapper ...@@ -72,6 +74,8 @@ public interface PalletDeviceBindingMapper
public int unbindDevice(Long palletDeviceBindingId); public int unbindDevice(Long palletDeviceBindingId);
public int unbindDeviceByCalibrationUnbindStatus(Long palletDeviceBindingId);
public int resetAll(Long trayId); public int resetAll(Long trayId);
public int batchUpdateDeviceCode(@Param("palletDeviceBindingList") List<PalletDeviceBinding> palletDeviceBindingList); public int batchUpdateDeviceCode(@Param("palletDeviceBindingList") List<PalletDeviceBinding> palletDeviceBindingList);
......
package com.zehong.system.mapper;
import java.util.List;
import com.zehong.system.domain.PalletDeviceBinding;
import com.zehong.system.domain.PalletDeviceUploadFailure;
import com.zehong.system.domain.PalletDeviceUploadHistory;
/**
* 上传失败历史记录Mapper接口
*
* @author zehong
* @date 2026-01-16
*/
public interface PalletDeviceUploadFailureMapper
{
/**
* 查询上传失败历史记录
*
* @param id 上传失败历史记录ID
* @return 上传失败历史记录
*/
public PalletDeviceUploadFailure selectPalletDeviceUploadFailureById(Long id);
public int batchInsert(List<PalletDeviceUploadFailure> list);
public int batchInsertRealTimeData(List<PalletDeviceBinding> list);
/**
* 查询上传失败历史记录列表
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 上传失败历史记录集合
*/
public List<PalletDeviceUploadFailure> selectPalletDeviceUploadFailureList(PalletDeviceUploadFailure palletDeviceUploadFailure);
/**
* 新增上传失败历史记录
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 结果
*/
public int insertPalletDeviceUploadFailure(PalletDeviceUploadFailure palletDeviceUploadFailure);
/**
* 修改上传失败历史记录
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 结果
*/
public int updatePalletDeviceUploadFailure(PalletDeviceUploadFailure palletDeviceUploadFailure);
/**
* 删除上传失败历史记录
*
* @param id 上传失败历史记录ID
* @return 结果
*/
public int deletePalletDeviceUploadFailureById(Long id);
/**
* 批量删除上传失败历史记录
*
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deletePalletDeviceUploadFailureByIds(Long[] ids);
}
package com.zehong.system.mapper; package com.zehong.system.mapper;
import java.util.List; import java.util.List;
import com.zehong.system.domain.PalletDeviceBinding;
import com.zehong.system.domain.PalletDeviceUploadHistory; import com.zehong.system.domain.PalletDeviceUploadHistory;
/** /**
...@@ -37,6 +39,8 @@ public interface PalletDeviceUploadHistoryMapper ...@@ -37,6 +39,8 @@ public interface PalletDeviceUploadHistoryMapper
public int batchInsert(List<PalletDeviceUploadHistory> list); public int batchInsert(List<PalletDeviceUploadHistory> list);
public int batchInsertRealTimeData(List<PalletDeviceBinding> list);
/** /**
* 修改未上传成功的历史数据列 * 修改未上传成功的历史数据列
* *
......
...@@ -127,7 +127,7 @@ public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> { ...@@ -127,7 +127,7 @@ public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> {
// 4. 校验数据长度并处理 // 4. 校验数据长度并处理
if (data.length >= 2) { if (data.length >= 2) {
// 更新设备状态 // 更新设备状态
palletDeviceBinding.setStatus(String.valueOf(data[1])); palletDeviceBinding.setDeviceStatus(String.valueOf(data[1]));
// 校验状态是否允许写时间 // 校验状态是否允许写时间
if (data[1] == 1 || data[1] == 3 || data[1] == 4) { if (data[1] == 1 || data[1] == 3 || data[1] == 4) {
...@@ -143,16 +143,16 @@ public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> { ...@@ -143,16 +143,16 @@ public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> {
} catch (ModbusInitException e) { } catch (ModbusInitException e) {
log.error("Modbus初始化异常:ip={}, port={}", ip, port, e); log.error("Modbus初始化异常:ip={}, port={}", ip, port, e);
palletDeviceBinding.setStatus("5"); palletDeviceBinding.setDeviceStatus("5");
recordAlarm(palletDeviceBinding, "Modbus初始化失败:" + e.getMessage()); recordAlarm(palletDeviceBinding, "Modbus初始化失败:" + e.getMessage());
} catch (ModbusTransportException e) { } catch (ModbusTransportException e) {
log.error("Modbus传输异常:ip={}, port={}, deviceId={}", ip, port, deviceId, e); log.error("Modbus传输异常:ip={}, port={}, deviceId={}", ip, port, deviceId, e);
palletDeviceBinding.setStatus("5"); palletDeviceBinding.setDeviceStatus("5");
recordAlarm(palletDeviceBinding, "Modbus写时间失败:" + e.getMessage()); recordAlarm(palletDeviceBinding, "Modbus写时间失败:" + e.getMessage());
} catch (Exception e) { } catch (Exception e) {
// 捕获其他异常(如NPE、数据溢出) // 捕获其他异常(如NPE、数据溢出)
log.error("处理Modbus数据异常:ip={}, port={}, deviceId={}", ip, port, deviceId, e); log.error("处理Modbus数据异常:ip={}, port={}, deviceId={}", ip, port, deviceId, e);
palletDeviceBinding.setStatus("5"); palletDeviceBinding.setDeviceStatus("5");
recordAlarm(palletDeviceBinding, "数据处理异常:" + e.getMessage()); recordAlarm(palletDeviceBinding, "数据处理异常:" + e.getMessage());
} finally { } finally {
// 关键:关闭Modbus连接,避免资源泄漏 // 关键:关闭Modbus连接,避免资源泄漏
...@@ -258,7 +258,7 @@ public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> { ...@@ -258,7 +258,7 @@ public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> {
* 统一告警记录(修复字段错误,确保写入成功) * 统一告警记录(修复字段错误,确保写入成功)
*/ */
private void recordAlarm(PalletDeviceBinding binding, String alarmMsg) { private void recordAlarm(PalletDeviceBinding binding, String alarmMsg) {
String equipmentCode = binding != null ? binding.getDeviceCode() : "unknown"; String equipmentCode = binding != null ? binding.getMotherboardCode() : "unknown";
recordAlarm(binding, equipmentCode, alarmMsg); recordAlarm(binding, equipmentCode, alarmMsg);
} }
......
...@@ -74,90 +74,11 @@ public class CalibrationResultEventHandler { ...@@ -74,90 +74,11 @@ public class CalibrationResultEventHandler {
processCalibrationResultHistoryService.insertProcessCalibrationResultHistory(processCalibrationResultHistory); processCalibrationResultHistoryService.insertProcessCalibrationResultHistory(processCalibrationResultHistory);
// 例如:更新校准状态、保存校准数据、通知前端等 // 例如:更新校准状态、保存校准数据、通知前端等
// 1 根据信息拿到点位信息 假如说1L是传过来的 // 1 根据信息拿到点位信息 假如说1L是传过来的
List<PalletDeviceBinding> palletDeviceBindings = initAdAndStatus(message); initAdAndStatus(message);
// 2 解析数据上传MES 返回如果失败则记录失败,等下次有时间再上传 // 2 解析数据上传MES 返回如果失败则记录失败,等下次有时间再上传
initMesDataAndUpload(palletDeviceBindings); // 20260116 调整 接收标定结果后 不存历史,解绑的时候才去处理。
} //initMesDataAndUpload(palletDeviceBindings);
/**
* 初始化MES数据并上传
*/
private void initMesDataAndUpload(List<PalletDeviceBinding> palletDeviceBindings) {
if(palletDeviceBindings.isEmpty()) {
log.info("initMesDataAndUpload:没有数据需要处理");
return;
}
List<MesDeviceDomain> mesDeviceDomains = new ArrayList<>();
for (PalletDeviceBinding palletDeviceBinding : palletDeviceBindings) {
MesDeviceDomain mesDeviceDomain = new MesDeviceDomain();
// 如果设备编号为空 则不处理改设备
if(StringUtils.isBlank(palletDeviceBinding.getDeviceCode())) continue;
// 主板码
mesDeviceDomain.setMotherboardCode(palletDeviceBinding.getDeviceCode());
// 浓度
mesDeviceDomain.setConcentration(palletDeviceBinding.getConcentration());
// 设备状态
mesDeviceDomain.setDeviceStatus(palletDeviceBinding.getStatus());
// 实时AD
mesDeviceDomain.setRealTimeAd(palletDeviceBinding.getRealTimeAd());
// 实时状态
mesDeviceDomain.setRealTimeStatus(palletDeviceBinding.getRealTimeStatus());
// 写时间状态
mesDeviceDomain.setWriteTimeStatus(palletDeviceBinding.getWriteTimeStatus());
// 运行时间状态
mesDeviceDomain.setRunTimeStatus(palletDeviceBinding.getRunTimeStatus());
// 标定浓度值
mesDeviceDomain.setCalibrationConcentration(palletDeviceBinding.getCalibrationConcentration());
// 标定状态
mesDeviceDomain.setCalibrationConcentrationStatus(palletDeviceBinding.getCalibrationConcentrationStatus());
mesDeviceDomain.setRecordYear(palletDeviceBinding.getRecordYear());
mesDeviceDomain.setRecordMonth(palletDeviceBinding.getRecordMonth());
mesDeviceDomain.setRecordDate(palletDeviceBinding.getRecordDate());
mesDeviceDomain.setRecordHour(palletDeviceBinding.getRecordHour());
mesDeviceDomain.setRecordMinute(palletDeviceBinding.getRecordMinute());
// 写入自检状态 继电器状态 脉冲状态 模块状态 SIM状态 网络状态
mesDeviceDomain.setWriteSelfCheckStatus(palletDeviceBinding.getWriteSelfCheckStatus());
mesDeviceDomain.setRelayStatus(palletDeviceBinding.getRelayStatus());
mesDeviceDomain.setPulseStatus(palletDeviceBinding.getPulseStatus());
mesDeviceDomain.setModuleStatus(palletDeviceBinding.getModuleStatus());
mesDeviceDomain.setSimCardStatus(palletDeviceBinding.getSimCardStatus());
mesDeviceDomain.setNetworkStatus(palletDeviceBinding.getNetworkStatus());
mesDeviceDomains.add(mesDeviceDomain);
}
String mesUploadAddress = sysConfigService.directSelectConfigByKey(RoboticArmConstans.UPLOAD_MES_ADDRESS);
if(StringUtils.isNotBlank(mesUploadAddress)) {
try{
String result = HttpUtils.sendPost(mesUploadAddress, JSON.toJSONString(mesDeviceDomains));
UploadMesResultHistory uploadMesResultHistory = new UploadMesResultHistory();
uploadMesResultHistory.setMessage(result);
uploadMesResultHistoryService.insertUploadMesResultHistory(uploadMesResultHistory);
if(StringUtils.isNotBlank(result)) {
JSONObject jsonObject = JSON.parseObject(result);
// if(jsonObject.getInteger("code") != 200) {
// String data = jsonObject.getString("data");
// if(StringUtils.isNotBlank(data)) {
// processPalletDeviceUploadHistory(palletDeviceBindings,data);
// } else {
// directProcessPaalletDeviceUploadHistory(palletDeviceBindings);
// }
// }
// 20251210 领导说 先 保存所有历史数据
directProcessPaalletDeviceUploadHistory(palletDeviceBindings);
} else {
directProcessPaalletDeviceUploadHistory(palletDeviceBindings);
}
}catch (Exception e){
directProcessPaalletDeviceUploadHistory(palletDeviceBindings);
}
} else {
directProcessPaalletDeviceUploadHistory(palletDeviceBindings);
}
} }
/** /**
...@@ -353,113 +274,6 @@ public class CalibrationResultEventHandler { ...@@ -353,113 +274,6 @@ public class CalibrationResultEventHandler {
} }
} }
/**
* 处理托盘设备上传历史数据
*/
private void processPalletDeviceUploadHistory(List<PalletDeviceBinding> palletDeviceBindings,String data){
JSONObject jsonObject = JSON.parseObject(data);
if (!jsonObject.containsKey("failedCodes")) {
return;
} else {
log.info("上传失败;没有返回正确数据");
}
JSONArray failedCodes = jsonObject.getJSONArray("failedCodes");
if (failedCodes == null || failedCodes.isEmpty()) {
return;
}
// 使用Set提高查找效率
Set<String> failedCodeSet = failedCodes.stream()
.map(Object::toString)
.collect(Collectors.toSet());
List<PalletDeviceUploadHistory> palletDeviceUploadHistories = palletDeviceBindings.stream()
.filter(binding -> failedCodeSet.contains(binding.getDeviceCode()))
.map(this::convertToUploadHistory)
.collect(Collectors.toList());
if (!palletDeviceUploadHistories.isEmpty()) {
palletDeviceUploadHistoryService.batchInsert(palletDeviceUploadHistories);
}
}
/**
* 直接处理托盘设备上传历史数据
*/
private void directProcessPaalletDeviceUploadHistory(List<PalletDeviceBinding> palletDeviceBindings) {
List<PalletDeviceUploadHistory> collect = palletDeviceBindings.stream().map(this::convertToUploadHistory).collect(Collectors.toList());
palletDeviceUploadHistoryService.batchInsert(collect);
}
/**
* 转换对象
*/
private PalletDeviceUploadHistory convertToUploadHistory(PalletDeviceBinding binding) {
PalletDeviceUploadHistory history = new PalletDeviceUploadHistory();
// 基础信息字段
history.setTrayId(binding.getTrayId());
history.setStoreyCode(binding.getStoreyCode());
history.setDeviceCode(binding.getDeviceCode());
history.setRow(binding.getRow());
history.setCol(binding.getCol());
history.setIndex(binding.getIndex());
history.setNumber(binding.getNumber());
history.setBindingTime(binding.getBindingTime());
history.setUnbindingTime(binding.getUnbindingTime());
// 状态字段
history.setStatus(binding.getStatus());
// 时间记录字段
history.setRecordYear(binding.getRecordYear());
history.setRecordMonth(binding.getRecordMonth());
history.setRecordDate(binding.getRecordDate());
history.setRecordHour(binding.getRecordHour());
history.setRecordMinute(binding.getRecordMinute());
// 写入状态字段
history.setWriteTimeStatus(binding.getWriteTimeStatus());
history.setRunTimeStatus(binding.getRunTimeStatus());
// 调零相关字段
history.setAdjustmentZeroAd(binding.getAdjustmentZeroAd());
history.setZeroStatus(binding.getZeroStatus());
// 标定相关字段 - 注意字段名称不同
history.setCalibrationAd(binding.getCalibrationAd());
history.setCalibrationStatus(binding.getCalibrationAdStatus()); // 注意:这里字段名不同
// 浓度字段
history.setConcentration(binding.getConcentration());
// 实时AD相关字段
history.setRealTimeAd(binding.getRealTimeAd());
history.setRealTimeAdStatus(binding.getRealTimeStatus()); // 注意:这里字段名不同
// 托盘编号字段 - 注意字段名称不同
history.setTrayCode(binding.getfTrayCode()); // 注意:这里字段名不同
// 创建时间和更新时间(如果需要)
history.setCreateTime(binding.getCreateTime());
history.setUpdateTime(binding.getUpdateTime());
// 标定浓度字段 - 注意字段名称不同
history.setCalibrationConcentration(binding.getCalibrationConcentration());
history.setCalibrationConcentrationStatus(binding.getCalibrationConcentrationStatus());
// 写入自检状态 继电器状态 脉冲状态 模组状态 SIM卡状态 网络状态
history.setWriteSelfCheckStatus(binding.getWriteSelfCheckStatus());
history.setRelayStatus(binding.getRelayStatus());
history.setPulseStatus(binding.getPulseStatus());
history.setModuleStatus(binding.getModuleStatus());
history.setSimCardStatus(binding.getSimCardStatus());
history.setNetworkStatus(binding.getNetworkStatus());
return history;
}
/** /**
* 设备数据内部类(如果需要存储设备类型,可以扩展此类) * 设备数据内部类(如果需要存储设备类型,可以扩展此类)
*/ */
......
package com.zehong.system.service;
import java.util.List;
import com.zehong.common.core.domain.AjaxResult;
import com.zehong.system.domain.PalletDeviceBinding;
import com.zehong.system.domain.PalletDeviceUploadFailure;
import com.zehong.system.domain.PalletDeviceUploadHistory;
/**
* 上传失败历史记录Service接口
*
* @author zehong
* @date 2026-01-16
*/
public interface IPalletDeviceUploadFailureService
{
/**
* 查询上传失败历史记录
*
* @param id 上传失败历史记录ID
* @return 上传失败历史记录
*/
public PalletDeviceUploadFailure selectPalletDeviceUploadFailureById(Long id);
public AjaxResult handleReUpload();
/**
* 查询上传失败历史记录列表
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 上传失败历史记录集合
*/
public List<PalletDeviceUploadFailure> selectPalletDeviceUploadFailureList(PalletDeviceUploadFailure palletDeviceUploadFailure);
/**
* 新增上传失败历史记录
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 结果
*/
public int insertPalletDeviceUploadFailure(PalletDeviceUploadFailure palletDeviceUploadFailure);
public int batchInsert(List<PalletDeviceUploadFailure> palletDeviceUploadFailures);
public int batchInsertRealTimeData(List<PalletDeviceBinding> palletDeviceBindings);
/**
* 修改上传失败历史记录
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 结果
*/
public int updatePalletDeviceUploadFailure(PalletDeviceUploadFailure palletDeviceUploadFailure);
/**
* 批量删除上传失败历史记录
*
* @param ids 需要删除的上传失败历史记录ID
* @return 结果
*/
public int deletePalletDeviceUploadFailureByIds(Long[] ids);
/**
* 删除上传失败历史记录信息
*
* @param id 上传失败历史记录ID
* @return 结果
*/
public int deletePalletDeviceUploadFailureById(Long id);
}
...@@ -3,6 +3,7 @@ package com.zehong.system.service; ...@@ -3,6 +3,7 @@ package com.zehong.system.service;
import java.util.List; import java.util.List;
import com.zehong.common.core.domain.AjaxResult; import com.zehong.common.core.domain.AjaxResult;
import com.zehong.system.domain.PalletDeviceBinding;
import com.zehong.system.domain.PalletDeviceUploadHistory; import com.zehong.system.domain.PalletDeviceUploadHistory;
/** /**
...@@ -31,6 +32,8 @@ public interface IPalletDeviceUploadHistoryService ...@@ -31,6 +32,8 @@ public interface IPalletDeviceUploadHistoryService
public int batchInsert(List<PalletDeviceUploadHistory> palletDeviceUploadHistoryList); public int batchInsert(List<PalletDeviceUploadHistory> palletDeviceUploadHistoryList);
public int batchInsertRealTimeData(List<PalletDeviceBinding> palletDeviceBindings);
/** /**
* 新增未上传成功的历史数据列 * 新增未上传成功的历史数据列
* *
...@@ -39,8 +42,6 @@ public interface IPalletDeviceUploadHistoryService ...@@ -39,8 +42,6 @@ public interface IPalletDeviceUploadHistoryService
*/ */
public int insertPalletDeviceUploadHistory(PalletDeviceUploadHistory palletDeviceUploadHistory); public int insertPalletDeviceUploadHistory(PalletDeviceUploadHistory palletDeviceUploadHistory);
public AjaxResult handleReUpload();
/** /**
* 修改未上传成功的历史数据列 * 修改未上传成功的历史数据列
* *
......
package com.zehong.system.service.impl; package com.zehong.system.service.impl;
import java.util.List; import com.alibaba.fastjson.JSON;
import java.util.stream.Collectors; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zehong.common.constant.RoboticArmConstans;
import com.zehong.common.core.domain.AjaxResult; import com.zehong.common.core.domain.AjaxResult;
import com.zehong.common.utils.DateUtils; import com.zehong.common.utils.DateUtils;
import com.zehong.common.utils.StringUtils; import com.zehong.common.utils.StringUtils;
import com.zehong.system.domain.TTrayInfo; import com.zehong.common.utils.http.HttpUtils;
import com.zehong.system.domain.*;
import com.zehong.system.mapper.PalletDeviceBindingMapper;
import com.zehong.system.mapper.TTrayInfoMapper; import com.zehong.system.mapper.TTrayInfoMapper;
import com.zehong.system.service.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.zehong.system.mapper.PalletDeviceBindingMapper; import org.springframework.transaction.annotation.Transactional;
import com.zehong.system.domain.PalletDeviceBinding;
import com.zehong.system.service.IPalletDeviceBindingService;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* 托盘绑定的设备列Service业务层处理 * 托盘绑定的设备列Service业务层处理
...@@ -24,9 +30,19 @@ import javax.annotation.Resource; ...@@ -24,9 +30,19 @@ import javax.annotation.Resource;
@Service @Service
public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingService public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingService
{ {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(PalletDeviceBindingServiceImpl.class);
@Resource
private IUploadMesResultHistoryService uploadMesResultHistoryService;
@Resource @Resource
private PalletDeviceBindingMapper palletDeviceBindingMapper; private PalletDeviceBindingMapper palletDeviceBindingMapper;
@Resource
private IPalletDeviceUploadHistoryService palletDeviceUploadHistoryService;
@Resource
private IPalletDeviceUploadFailureService iPalletDeviceUploadFailureService;
@Resource
private ISysConfigService sysConfigService;
@Resource @Resource
private TTrayInfoMapper tTrayInfoMapper; private TTrayInfoMapper tTrayInfoMapper;
...@@ -129,8 +145,8 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi ...@@ -129,8 +145,8 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi
// 获取所有不为空的 deviceCode // 获取所有不为空的 deviceCode
List<String> validDeviceCodes = palletDeviceBindingList.stream() List<String> validDeviceCodes = palletDeviceBindingList.stream()
.filter(item -> StringUtils.isNotBlank(item.getDeviceCode())) .filter(item -> StringUtils.isNotBlank(item.getMotherboardCode()))
.map(PalletDeviceBinding::getDeviceCode) .map(PalletDeviceBinding::getMotherboardCode)
.collect(Collectors.toList()); .collect(Collectors.toList());
int i1 = palletDeviceBindingMapper.checkRepeat(validDeviceCodes); int i1 = palletDeviceBindingMapper.checkRepeat(validDeviceCodes);
...@@ -142,6 +158,8 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi ...@@ -142,6 +158,8 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi
palletDeviceBinding.setUpdateTime(DateUtils.getNowDate()); palletDeviceBinding.setUpdateTime(DateUtils.getNowDate());
palletDeviceBinding.setCreateTime(DateUtils.getNowDate()); palletDeviceBinding.setCreateTime(DateUtils.getNowDate());
palletDeviceBinding.setBindingTime(DateUtils.getNowDate()); palletDeviceBinding.setBindingTime(DateUtils.getNowDate());
// 默认状态为未解除绑定
palletDeviceBinding.setCalibrationUnbindStatus("0");
}); });
TTrayInfo tTrayInfo = new TTrayInfo(); TTrayInfo tTrayInfo = new TTrayInfo();
...@@ -159,7 +177,7 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi ...@@ -159,7 +177,7 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi
public int batchUpdateDeviceCode(List<PalletDeviceBinding> palletDeviceBindingList) { public int batchUpdateDeviceCode(List<PalletDeviceBinding> palletDeviceBindingList) {
check(palletDeviceBindingList); check(palletDeviceBindingList);
palletDeviceBindingList.forEach(palletDeviceBinding -> { palletDeviceBindingList.forEach(palletDeviceBinding -> {
palletDeviceBinding.setStatus("1"); palletDeviceBinding.setDeviceStatus("1");
palletDeviceBinding.setUpdateTime(DateUtils.getNowDate()); palletDeviceBinding.setUpdateTime(DateUtils.getNowDate());
}); });
...@@ -175,7 +193,7 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi ...@@ -175,7 +193,7 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi
throw new RuntimeException("数据不能为空"); throw new RuntimeException("数据不能为空");
} }
boolean b = palletDeviceBindingList.stream().allMatch(item->StringUtils.isBlank(item.getDeviceCode())); boolean b = palletDeviceBindingList.stream().allMatch(item->StringUtils.isBlank(item.getMotherboardCode()));
if(b) { if(b) {
throw new RuntimeException("不能所有设备号都为空!!!"); throw new RuntimeException("不能所有设备号都为空!!!");
} }
...@@ -184,7 +202,7 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi ...@@ -184,7 +202,7 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi
@Override @Override
public int batchUpdateDeviceCodeAndUnbindingTime(List<PalletDeviceBinding> palletDeviceBindingList) { public int batchUpdateDeviceCodeAndUnbindingTime(List<PalletDeviceBinding> palletDeviceBindingList) {
palletDeviceBindingList.forEach(palletDeviceBinding -> { palletDeviceBindingList.forEach(palletDeviceBinding -> {
palletDeviceBinding.setStatus("1"); palletDeviceBinding.setDeviceStatus("1");
palletDeviceBinding.setUpdateTime(DateUtils.getNowDate()); palletDeviceBinding.setUpdateTime(DateUtils.getNowDate());
}); });
...@@ -236,21 +254,20 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi ...@@ -236,21 +254,20 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi
* @return 删除结果 * @return 删除结果
*/ */
@Override @Override
public AjaxResult unbindAllDevice(Long trayId) { @Transactional(rollbackFor = Exception.class)
public synchronized AjaxResult unbindAllDevice(Long trayId) {
if(trayId == null) { if(trayId == null) {
return AjaxResult.error("参数错误"); return AjaxResult.error("参数错误");
} }
// 所有设备都是正常的一键解绑
initMesDataAndUpload(trayId);
int i = palletDeviceBindingMapper.unbindAllDevice(trayId); // 解绑设备
if(i <=0) { palletDeviceBindingMapper.unbindAllDevice(trayId);
return AjaxResult.error("无设备绑定");
}
int i1 = tTrayInfoMapper.initStatusByTrayId(trayId); // 初始托盘状态
if(i1 <=0) { tTrayInfoMapper.initStatusByTrayId(trayId);
return AjaxResult.error("更新托盘状态失败");
}
return AjaxResult.success(); return AjaxResult.success();
} }
...@@ -262,32 +279,101 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi ...@@ -262,32 +279,101 @@ public class PalletDeviceBindingServiceImpl implements IPalletDeviceBindingServi
* @return 删除结果 * @return 删除结果
*/ */
@Override @Override
public AjaxResult unbindDevice(PalletDeviceBinding palletDeviceBinding) { @Transactional(rollbackFor = Exception.class)
public synchronized AjaxResult unbindDevice(PalletDeviceBinding palletDeviceBinding) {
if(palletDeviceBinding.getPalletDeviceBindingId() == null || StringUtils.isBlank(palletDeviceBinding.getDeviceCode())) { if(palletDeviceBinding.getPalletDeviceBindingId() == null || StringUtils.isBlank(palletDeviceBinding.getMotherboardCode())) {
return AjaxResult.error("参数错误"); return AjaxResult.error("参数错误");
} }
PalletDeviceBinding palletDeviceBindingDb = palletDeviceBindingMapper.selectPalletDeviceBindingById(palletDeviceBinding.getPalletDeviceBindingId()); PalletDeviceBinding palletDeviceBindingDb = palletDeviceBindingMapper.selectPalletDeviceBindingById(palletDeviceBinding.getPalletDeviceBindingId());
if(palletDeviceBindingDb == null) { if(palletDeviceBindingDb == null) {
return AjaxResult.error("数据不存在"); return AjaxResult.error("数据不存在");
} }
if(!palletDeviceBindingDb.getDeviceCode().equals(palletDeviceBinding.getDeviceCode())) { if(!palletDeviceBindingDb.getMotherboardCode().equals(palletDeviceBinding.getMotherboardCode())) {
return AjaxResult.error("设备码错误"); return AjaxResult.error("设备码错误");
} }
int i = palletDeviceBindingMapper.unbindDevice(palletDeviceBindingDb.getPalletDeviceBindingId()); int i = palletDeviceBindingMapper.unbindDeviceByCalibrationUnbindStatus(palletDeviceBindingDb.getPalletDeviceBindingId());
if (i > 0) { if (i > 0) {
return AjaxResult.success();
}
return AjaxResult.error();
}
// 成功之后 判断 是否还有设备,如果没有设备的话则 初始化托盘状态 // 成功之后 判断 是否还有设备,如果没有设备的话则 初始化托盘状态
int count = palletDeviceBindingMapper.countDeviceByTrayId(palletDeviceBindingDb.getTrayId()); // int count = palletDeviceBindingMapper.countDeviceByTrayId(palletDeviceBindingDb.getTrayId());
if(count == 0) { // if(count == 0) {
tTrayInfoMapper.initStatusByTrayId(palletDeviceBindingDb.getTrayId()); // tTrayInfoMapper.initStatusByTrayId(palletDeviceBindingDb.getTrayId());
// }
/**
* 初始化MES数据并上传
*/
private void initMesDataAndUpload(Long trayId) {
List<PalletDeviceBinding> palletDeviceBindings = palletDeviceBindingMapper.listByTrayId(trayId);
if(palletDeviceBindings == null || palletDeviceBindings.size() == 0) return;
List<PalletDeviceBinding> mesDeviceDomains = palletDeviceBindings.stream().filter(item -> item.getMotherboardCode() != null).collect(Collectors.toList());
if(mesDeviceDomains.size() == 0) return;
// 20251210 领导说 先 保存所有历史数据
palletDeviceUploadHistoryService.batchInsertRealTimeData(mesDeviceDomains);
String mesUploadAddress = sysConfigService.directSelectConfigByKey(RoboticArmConstans.UPLOAD_MES_ADDRESS);
if(StringUtils.isNotBlank(mesUploadAddress)) {
try {
String result = HttpUtils.sendPost(mesUploadAddress, JSON.toJSONString(mesDeviceDomains));
UploadMesResultHistory uploadMesResultHistory = new UploadMesResultHistory();
uploadMesResultHistory.setMessage(result);
uploadMesResultHistoryService.insertUploadMesResultHistory(uploadMesResultHistory);
if(StringUtils.isNotBlank(result)) {
JSONObject jsonObject = JSON.parseObject(result);
if(jsonObject.getInteger("code") != 200) {
String data = jsonObject.getString("data");
// 处理错误数据逻辑,再弄个错误数据的表
if(StringUtils.isNotBlank(data)) {
// 存失败记录
processPalletDeviceUploadFailure(palletDeviceBindings,data);
}
}
}
} catch (Exception e) {
iPalletDeviceUploadFailureService.batchInsertRealTimeData(palletDeviceBindings);
}
}
} }
return AjaxResult.success(); /**
* 处理托盘设备上传历史数据
*/
private void processPalletDeviceUploadFailure(List<PalletDeviceBinding> palletDeviceBindings,String data){
JSONObject jsonObject = JSON.parseObject(data);
if (!jsonObject.containsKey("failedCodes")) {
return;
} else {
log.info("上传失败;没有返回正确数据");
}
JSONArray failedCodes = jsonObject.getJSONArray("failedCodes");
if (failedCodes == null || failedCodes.isEmpty()) {
return;
}
// 使用Set提高查找效率
Set<String> failedCodeSet = failedCodes.stream()
.map(Object::toString)
.collect(Collectors.toSet());
List<PalletDeviceBinding> palletDeviceUploadFailureList = palletDeviceBindings.stream()
.filter(binding -> failedCodeSet.contains(binding.getMotherboardCode()))
.collect(Collectors.toList());
if (!palletDeviceUploadFailureList.isEmpty()) {
iPalletDeviceUploadFailureService.batchInsertRealTimeData(palletDeviceUploadFailureList);
} }
return AjaxResult.error();
} }
} }
package com.zehong.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zehong.common.constant.RoboticArmConstans;
import com.zehong.common.core.domain.AjaxResult;
import com.zehong.common.utils.DateUtils;
import com.zehong.common.utils.StringUtils;
import com.zehong.common.utils.http.HttpUtils;
import com.zehong.system.domain.MesDeviceDomain;
import com.zehong.system.domain.PalletDeviceBinding;
import com.zehong.system.domain.PalletDeviceUploadFailure;
import com.zehong.system.domain.PalletDeviceUploadHistory;
import com.zehong.system.mapper.PalletDeviceUploadFailureMapper;
import com.zehong.system.service.IPalletDeviceUploadFailureService;
import com.zehong.system.service.ISysConfigService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* 上传失败历史记录Service业务层处理
*
* @author zehong
* @date 2026-01-16
*/
@Service
public class PalletDeviceUploadFailureServiceImpl implements IPalletDeviceUploadFailureService
{
@Resource
private PalletDeviceUploadFailureMapper palletDeviceUploadFailureMapper;
@Resource
private ISysConfigService sysConfigService;
/**
* 查询上传失败历史记录
*
* @param id 上传失败历史记录ID
* @return 上传失败历史记录
*/
@Override
public PalletDeviceUploadFailure selectPalletDeviceUploadFailureById(Long id)
{
return palletDeviceUploadFailureMapper.selectPalletDeviceUploadFailureById(id);
}
/**
* 查询上传失败历史记录列表
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 上传失败历史记录
*/
@Override
public List<PalletDeviceUploadFailure> selectPalletDeviceUploadFailureList(PalletDeviceUploadFailure palletDeviceUploadFailure)
{
return palletDeviceUploadFailureMapper.selectPalletDeviceUploadFailureList(palletDeviceUploadFailure);
}
/**
* 新增上传失败历史记录
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 结果
*/
@Override
public int insertPalletDeviceUploadFailure(PalletDeviceUploadFailure palletDeviceUploadFailure)
{
palletDeviceUploadFailure.setCreateTime(DateUtils.getNowDate());
return palletDeviceUploadFailureMapper.insertPalletDeviceUploadFailure(palletDeviceUploadFailure);
}
@Override
public int batchInsert(List<PalletDeviceUploadFailure> palletDeviceUploadFailures) {
return palletDeviceUploadFailureMapper.batchInsert(palletDeviceUploadFailures);
}
/**
* 批量处理未上传成功的数据
* @return r
*/
@Override
public int batchInsertRealTimeData(List<PalletDeviceBinding> palletDeviceBindings) {
return palletDeviceUploadFailureMapper.batchInsertRealTimeData(palletDeviceBindings);
}
/**
* 修改上传失败历史记录
*
* @param palletDeviceUploadFailure 上传失败历史记录
* @return 结果
*/
@Override
public int updatePalletDeviceUploadFailure(PalletDeviceUploadFailure palletDeviceUploadFailure)
{
return palletDeviceUploadFailureMapper.updatePalletDeviceUploadFailure(palletDeviceUploadFailure);
}
/**
* 批量删除上传失败历史记录
*
* @param ids 需要删除的上传失败历史记录ID
* @return 结果
*/
@Override
public int deletePalletDeviceUploadFailureByIds(Long[] ids)
{
return palletDeviceUploadFailureMapper.deletePalletDeviceUploadFailureByIds(ids);
}
/**
* 删除上传失败历史记录信息
*
* @param id 上传失败历史记录ID
* @return 结果
*/
@Override
public int deletePalletDeviceUploadFailureById(Long id)
{
return palletDeviceUploadFailureMapper.deletePalletDeviceUploadFailureById(id);
}
/**
* 批量处理未上传成功的数据
* @return r
*/
@Override
public AjaxResult handleReUpload() {
AjaxResult ajax = AjaxResult.success();
List<PalletDeviceUploadFailure> palletDeviceUploadFailures = palletDeviceUploadFailureMapper.selectPalletDeviceUploadFailureList(new PalletDeviceUploadFailure());
if (palletDeviceUploadFailures == null || palletDeviceUploadFailures.isEmpty()) {
ajax.put("code", 200);
ajax.put("msg", "上传数据列表不能为空");
return ajax;
}
List<PalletDeviceUploadFailure> palletDeviceUploadHistories = palletDeviceUploadFailures.stream().filter(item -> StringUtils.isNotBlank(item.getMotherboardCode())).collect(Collectors.toList());
try {
// 1. 初始化MES数据并上传
List<PalletDeviceUploadFailure> failedUploads = initMesDataAndUpload(palletDeviceUploadHistories);
// 2. 处理上传结果
if (failedUploads.isEmpty()) {
// 全部成功,删除所有历史数据
List<Long> successIds = palletDeviceUploadHistories.stream()
.map(PalletDeviceUploadFailure::getId)
.collect(Collectors.toList());
if (!successIds.isEmpty()) {
int deleteCount = deletePalletDeviceUploadFailureByIds(successIds.toArray(new Long[0]));
return AjaxResult.success("所有数据上传成功,已删除 " + deleteCount + " 条历史记录");
}
} else {
// 部分成功,只删除成功的数据
List<Long> successIds = palletDeviceUploadHistories.stream()
.filter(item -> !failedUploads.contains(item))
.map(PalletDeviceUploadFailure::getId)
.collect(Collectors.toList());
int successCount = 0;
if (!successIds.isEmpty()) {
successCount = deletePalletDeviceUploadFailureByIds(successIds.toArray(new Long[0]));
}
// 构建失败设备列表
List<String> failedDeviceCodes = failedUploads.stream()
.map(PalletDeviceUploadFailure::getMotherboardCode)
.collect(Collectors.toList());
Map<String, Object> result = new HashMap<>();
result.put("successCount", successCount);
result.put("failedCount", failedUploads.size());
result.put("failedDeviceCodes", failedDeviceCodes);
ajax.put("code", 200);
ajax.put("msg", "部分数据上传失败,成功 " + successCount + " 条,失败 " + failedUploads.size() + " 条");
ajax.put("data", result);
return ajax;
}
return AjaxResult.success("数据处理完成");
} catch (Exception e) {
ajax.put("code", 200);
ajax.put("msg", "处理上传数据时发生异常" + e.getMessage());
return ajax;
}
}
/**
* 初始化MES数据并上传,返回上传失败的设备列表
*/
private List<PalletDeviceUploadFailure> initMesDataAndUpload(List<PalletDeviceUploadFailure> palletDeviceUploadFailureList) {
boolean hasInvalid = palletDeviceUploadFailureList.stream()
.anyMatch(palletDeviceBinding ->
StringUtils.isBlank(palletDeviceBinding.getMotherboardCode()) ||
palletDeviceBinding.getCalibrationConcentration() == null ||
StringUtils.isBlank(palletDeviceBinding.getCalibrationConcentrationStatus()) ||
StringUtils.isBlank(palletDeviceBinding.getConcentration()) ||
palletDeviceBinding.getRealTimeAd() == null ||
StringUtils.isBlank(palletDeviceBinding.getRealTimeStatus())
);
if (hasInvalid) {
throw new RuntimeException("数据不完整");
}
String mesUploadAddress = sysConfigService.directSelectConfigByKey(RoboticArmConstans.UPLOAD_MES_ADDRESS);
if (StringUtils.isBlank(mesUploadAddress)) {
throw new RuntimeException("MES上传地址未配置");
}
try {
String result = HttpUtils.sendPost(mesUploadAddress, JSON.toJSONString(palletDeviceUploadFailureList));
if (StringUtils.isBlank(result)) {
throw new RuntimeException("MES接口返回为空");
}
JSONObject jsonObject = JSON.parseObject(result);
if (jsonObject.getInteger("code") == 200) {
// 全部成功,返回空列表
return new ArrayList<>();
} else {
// 部分失败,处理失败的数据
String data = jsonObject.getString("data");
if (StringUtils.isNotBlank(data)) {
return processPalletDeviceUploadFailure(palletDeviceUploadFailureList, data);
} else {
JSONObject jsonObject1 = JSON.parseObject(data);
throw new RuntimeException("调用MES接口失败: " + jsonObject1.get("msg").toString());
}
}
} catch (Exception e) {
throw new RuntimeException("调用MES接口失败: " + e.getMessage());
}
}
/**
* 处理托盘设备上传历史数据,返回上传失败的设备列表
*/
private List<PalletDeviceUploadFailure> processPalletDeviceUploadFailure(List<PalletDeviceUploadFailure> palletDeviceBindings, String data) {
JSONObject jsonObject = JSON.parseObject(data);
if (!jsonObject.containsKey("failedCount")) {
return new ArrayList<>(palletDeviceBindings);
}
JSONArray failedCodes = jsonObject.getJSONArray("failedCodes");
if (failedCodes == null || failedCodes.isEmpty()) {
return new ArrayList<>();
}
// 使用Set提高查找效率
Set<String> failedCodeSet = failedCodes.stream()
.map(Object::toString)
.collect(Collectors.toSet());
// 返回失败的数据列表
return palletDeviceBindings.stream()
.filter(binding -> failedCodeSet.contains(binding.getMotherboardCode()))
.collect(Collectors.toList());
}
}
package com.zehong.system.service.impl; package com.zehong.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zehong.common.constant.RoboticArmConstans;
import com.zehong.common.core.domain.AjaxResult;
import com.zehong.common.utils.DateUtils; import com.zehong.common.utils.DateUtils;
import com.zehong.common.utils.StringUtils;
import com.zehong.common.utils.bean.BeanUtils;
import com.zehong.common.utils.http.HttpUtils;
import com.zehong.system.domain.MesDeviceDomain;
import com.zehong.system.domain.PalletDeviceBinding; import com.zehong.system.domain.PalletDeviceBinding;
import com.zehong.system.domain.PalletDeviceUploadHistory; import com.zehong.system.domain.PalletDeviceUploadHistory;
import com.zehong.system.mapper.PalletDeviceUploadHistoryMapper; import com.zehong.system.mapper.PalletDeviceUploadHistoryMapper;
import com.zehong.system.netty.handler.NettyUdpServerHandler;
import com.zehong.system.service.IPalletDeviceUploadHistoryService; import com.zehong.system.service.IPalletDeviceUploadHistoryService;
import com.zehong.system.service.ISysConfigService; import com.zehong.system.service.ISysConfigService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 未上传成功的历史数据列Service业务层处理 * 未上传成功的历史数据列Service业务层处理
...@@ -68,6 +57,11 @@ public class PalletDeviceUploadHistoryServiceImpl implements IPalletDeviceUpload ...@@ -68,6 +57,11 @@ public class PalletDeviceUploadHistoryServiceImpl implements IPalletDeviceUpload
return palletDeviceUploadHistoryMapper.batchInsert(palletDeviceUploadHistoryList); return palletDeviceUploadHistoryMapper.batchInsert(palletDeviceUploadHistoryList);
} }
@Override
public int batchInsertRealTimeData(List<PalletDeviceBinding> palletDeviceBindings) {
return palletDeviceUploadHistoryMapper.batchInsertRealTimeData(palletDeviceBindings);
}
/** /**
* 新增未上传成功的历史数据列 * 新增未上传成功的历史数据列
* *
...@@ -81,181 +75,6 @@ public class PalletDeviceUploadHistoryServiceImpl implements IPalletDeviceUpload ...@@ -81,181 +75,6 @@ public class PalletDeviceUploadHistoryServiceImpl implements IPalletDeviceUpload
return palletDeviceUploadHistoryMapper.insertPalletDeviceUploadHistory(palletDeviceUploadHistory); return palletDeviceUploadHistoryMapper.insertPalletDeviceUploadHistory(palletDeviceUploadHistory);
} }
/**
* 批量处理未上传成功的数据
* @return r
*/
@Override
public AjaxResult handleReUpload() {
AjaxResult ajax = AjaxResult.success();
List<PalletDeviceUploadHistory> palletDeviceUploadHistoriesDb = palletDeviceUploadHistoryMapper.selectPalletDeviceUploadHistoryList(new PalletDeviceUploadHistory());
if (palletDeviceUploadHistoriesDb == null || palletDeviceUploadHistoriesDb.isEmpty()) {
ajax.put("code", 200);
ajax.put("msg", "上传数据列表不能为空");
return ajax;
}
List<PalletDeviceUploadHistory> palletDeviceUploadHistories = palletDeviceUploadHistoriesDb.stream().filter(item -> StringUtils.isNotBlank(item.getDeviceCode())).collect(Collectors.toList());
try {
// 1. 初始化MES数据并上传
List<PalletDeviceUploadHistory> failedUploads = initMesDataAndUpload(palletDeviceUploadHistories);
// 2. 处理上传结果
if (failedUploads.isEmpty()) {
// 全部成功,删除所有历史数据
List<Long> successIds = palletDeviceUploadHistories.stream()
.map(PalletDeviceUploadHistory::getId)
.collect(Collectors.toList());
if (!successIds.isEmpty()) {
int deleteCount = deletePalletDeviceUploadHistoryByIds(successIds.toArray(new Long[0]));
return AjaxResult.success("所有数据上传成功,已删除 " + deleteCount + " 条历史记录");
}
} else {
// 部分成功,只删除成功的数据
List<Long> successIds = palletDeviceUploadHistories.stream()
.filter(item -> !failedUploads.contains(item))
.map(PalletDeviceUploadHistory::getId)
.collect(Collectors.toList());
int successCount = 0;
if (!successIds.isEmpty()) {
successCount = deletePalletDeviceUploadHistoryByIds(successIds.toArray(new Long[0]));
}
// 构建失败设备列表
List<String> failedDeviceCodes = failedUploads.stream()
.map(PalletDeviceUploadHistory::getDeviceCode)
.collect(Collectors.toList());
Map<String, Object> result = new HashMap<>();
result.put("successCount", successCount);
result.put("failedCount", failedUploads.size());
result.put("failedDeviceCodes", failedDeviceCodes);
ajax.put("code", 200);
ajax.put("msg", "部分数据上传失败,成功 " + successCount + " 条,失败 " + failedUploads.size() + " 条");
ajax.put("data", result);
return ajax;
}
return AjaxResult.success("数据处理完成");
} catch (Exception e) {
ajax.put("code", 200);
ajax.put("msg", "处理上传数据时发生异常" + e.getMessage());
return ajax;
}
}
/**
* 初始化MES数据并上传,返回上传失败的设备列表
*/
private List<PalletDeviceUploadHistory> initMesDataAndUpload(List<PalletDeviceUploadHistory> palletDeviceUploadHistoryList) {
List<MesDeviceDomain> mesDeviceDomains = new ArrayList<>();
for (PalletDeviceUploadHistory palletDeviceBinding : palletDeviceUploadHistoryList) {
MesDeviceDomain mesDeviceDomain = new MesDeviceDomain();
if(StringUtils.isBlank(palletDeviceBinding.getDeviceCode())
|| palletDeviceBinding.getCalibrationConcentration()== null
|| StringUtils.isBlank(palletDeviceBinding.getCalibrationConcentrationStatus())
|| StringUtils.isBlank(palletDeviceBinding.getConcentration())
|| palletDeviceBinding.getRealTimeAd() == null
|| StringUtils.isBlank(palletDeviceBinding.getRealTimeAdStatus())) {
throw new RuntimeException("数据不完整");
}
// 主板码
mesDeviceDomain.setMotherboardCode(palletDeviceBinding.getDeviceCode());
// 浓度
mesDeviceDomain.setConcentration(palletDeviceBinding.getConcentration());
// 设备状态
mesDeviceDomain.setDeviceStatus(palletDeviceBinding.getStatus());
// 实时AD
mesDeviceDomain.setRealTimeAd(palletDeviceBinding.getRealTimeAd());
// 实时状态
mesDeviceDomain.setRealTimeStatus(palletDeviceBinding.getRealTimeAdStatus());
// 写时间状态
mesDeviceDomain.setWriteTimeStatus(palletDeviceBinding.getWriteTimeStatus());
// 运行时间状态
mesDeviceDomain.setRunTimeStatus(palletDeviceBinding.getRunTimeStatus());
// 标定浓度值
mesDeviceDomain.setCalibrationConcentration(palletDeviceBinding.getCalibrationConcentration());
// 标定状态
mesDeviceDomain.setCalibrationConcentrationStatus(palletDeviceBinding.getCalibrationConcentrationStatus());
mesDeviceDomain.setRecordYear(palletDeviceBinding.getRecordYear());
mesDeviceDomain.setRecordMonth(palletDeviceBinding.getRecordMonth());
mesDeviceDomain.setRecordDate(palletDeviceBinding.getRecordDate());
mesDeviceDomain.setRecordHour(palletDeviceBinding.getRecordHour());
mesDeviceDomain.setRecordMinute(palletDeviceBinding.getRecordMinute());
mesDeviceDomains.add(mesDeviceDomain);
}
String mesUploadAddress = sysConfigService.directSelectConfigByKey(RoboticArmConstans.UPLOAD_MES_ADDRESS);
if (StringUtils.isBlank(mesUploadAddress)) {
throw new RuntimeException("MES上传地址未配置");
}
try {
String result = HttpUtils.sendPost(mesUploadAddress, JSON.toJSONString(mesDeviceDomains));
if (StringUtils.isBlank(result)) {
throw new RuntimeException("MES接口返回为空");
}
JSONObject jsonObject = JSON.parseObject(result);
if (jsonObject.getInteger("code") == 200) {
// 全部成功,返回空列表
return new ArrayList<>();
} else {
// 部分失败,处理失败的数据
String data = jsonObject.getString("data");
if (StringUtils.isNotBlank(data)) {
return processPalletDeviceUploadHistory(palletDeviceUploadHistoryList, data);
} else {
JSONObject jsonObject1 = JSON.parseObject(data);
throw new RuntimeException("调用MES接口失败: " + jsonObject1.get("msg").toString());
}
}
} catch (Exception e) {
throw new RuntimeException("调用MES接口失败: " + e.getMessage());
}
}
/**
* 处理托盘设备上传历史数据,返回上传失败的设备列表
*/
private List<PalletDeviceUploadHistory> processPalletDeviceUploadHistory(List<PalletDeviceUploadHistory> palletDeviceBindings, String data) {
JSONObject jsonObject = JSON.parseObject(data);
if (!jsonObject.containsKey("failedCount")) {
return new ArrayList<>(palletDeviceBindings);
}
JSONArray failedCodes = jsonObject.getJSONArray("failedCodes");
if (failedCodes == null || failedCodes.isEmpty()) {
return new ArrayList<>();
}
// 使用Set提高查找效率
Set<String> failedCodeSet = failedCodes.stream()
.map(Object::toString)
.collect(Collectors.toSet());
// 返回失败的数据列表
return palletDeviceBindings.stream()
.filter(binding -> failedCodeSet.contains(binding.getDeviceCode()))
.collect(Collectors.toList());
}
/**
* 转换对象 - 修正方法签名(如果需要的话)
*/
private PalletDeviceUploadHistory convertToUploadHistory(PalletDeviceUploadHistory binding) {
PalletDeviceUploadHistory history = new PalletDeviceUploadHistory();
// 正确的参数顺序:源对象在前,目标对象在后
BeanUtils.copyProperties(binding, history);
return history;
}
/** /**
* 修改未上传成功的历史数据列 * 修改未上传成功的历史数据列
* *
......
...@@ -588,6 +588,9 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService ...@@ -588,6 +588,9 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService
throw new RuntimeException(e); throw new RuntimeException(e);
} }
tStoreyInfo.setfStatus("0");
tStoreyInfoMapper.updateStatusByCode(tStoreyInfo);
return AjaxResult.success(); return AjaxResult.success();
} }
......
...@@ -153,7 +153,7 @@ public class AgingStageOneProcessJob implements Job { ...@@ -153,7 +153,7 @@ public class AgingStageOneProcessJob implements Job {
int[] result = Modbus4jUtils.readDeviceWithRetry(ip, port, deviceId); int[] result = Modbus4jUtils.readDeviceWithRetry(ip, port, deviceId);
// 3. 更新设备状态 // 3. 更新设备状态
binding.setStatus(String.valueOf(result[1])); binding.setDeviceStatus(String.valueOf(result[1]));
// 4. 更新浓度值 // 4. 更新浓度值
binding.setConcentration(String.valueOf(result[0])); binding.setConcentration(String.valueOf(result[0]));
...@@ -194,8 +194,7 @@ public class AgingStageOneProcessJob implements Job { ...@@ -194,8 +194,7 @@ public class AgingStageOneProcessJob implements Job {
} catch (Exception e) { } catch (Exception e) {
log.info("设备{}处理异常: ip={}, port={}", deviceId, ip, port, e); log.info("设备{}处理异常: ip={}, port={}", deviceId, ip, port, e);
binding.setStatus("5"); binding.setDeviceStatus("-9999");
binding.setWriteTimeStatus("0");
palletDeviceBindingMapper.updatePalletDeviceBinding(binding); palletDeviceBindingMapper.updatePalletDeviceBinding(binding);
errorCount.incrementAndGet(); errorCount.incrementAndGet();
return false; return false;
...@@ -322,7 +321,7 @@ public class AgingStageOneProcessJob implements Job { ...@@ -322,7 +321,7 @@ public class AgingStageOneProcessJob implements Job {
* 统一告警记录(修复字段错误,确保写入成功) * 统一告警记录(修复字段错误,确保写入成功)
*/ */
private void recordAlarmByBinding(PalletDeviceBinding binding, String alarmMsg) { private void recordAlarmByBinding(PalletDeviceBinding binding, String alarmMsg) {
String equipmentCode = binding != null ? binding.getDeviceCode() : "unknown"; String equipmentCode = binding != null ? binding.getMotherboardCode() : "unknown";
recordAlarmByBingding(equipmentCode, alarmMsg); recordAlarmByBingding(equipmentCode, alarmMsg);
} }
......
...@@ -166,7 +166,7 @@ public class AgingStageThreeProcessJob implements Job { ...@@ -166,7 +166,7 @@ public class AgingStageThreeProcessJob implements Job {
int[] result = Modbus4jUtils.readDeviceWithRetry(ip, port, deviceId); int[] result = Modbus4jUtils.readDeviceWithRetry(ip, port, deviceId);
// 3. 更新设备状态 // 3. 更新设备状态
binding.setStatus(String.valueOf(result[1])); binding.setDeviceStatus(String.valueOf(result[1]));
// 3. 更新浓度值 // 3. 更新浓度值
binding.setConcentration(String.valueOf(result[0])); binding.setConcentration(String.valueOf(result[0]));
...@@ -205,7 +205,7 @@ public class AgingStageThreeProcessJob implements Job { ...@@ -205,7 +205,7 @@ public class AgingStageThreeProcessJob implements Job {
binding.setNetworkStatus(1); binding.setNetworkStatus(1);
} }
if("5".equals(binding.getStatus())) { if("5".equals(binding.getDeviceStatus())) {
binding.setWriteTimeStatus("0"); binding.setWriteTimeStatus("0");
} }
...@@ -217,7 +217,7 @@ public class AgingStageThreeProcessJob implements Job { ...@@ -217,7 +217,7 @@ public class AgingStageThreeProcessJob implements Job {
} catch (Exception e) { } catch (Exception e) {
log.error("设备{}处理异常: ip={}, port={}", deviceId, ip, port, e); log.error("设备{}处理异常: ip={}, port={}", deviceId, ip, port, e);
binding.setStatus("5"); binding.setDeviceStatus("-9999");
binding.setWriteTimeStatus("0"); binding.setWriteTimeStatus("0");
binding.setRunTimeStatus("0"); binding.setRunTimeStatus("0");
palletDeviceBindingMapper.updatePalletDeviceBinding(binding); palletDeviceBindingMapper.updatePalletDeviceBinding(binding);
...@@ -436,7 +436,7 @@ public class AgingStageThreeProcessJob implements Job { ...@@ -436,7 +436,7 @@ public class AgingStageThreeProcessJob implements Job {
* 统一告警记录(修复字段错误,确保写入成功) * 统一告警记录(修复字段错误,确保写入成功)
*/ */
private void recordAlarmByBinding(PalletDeviceBinding binding, String alarmMsg) { private void recordAlarmByBinding(PalletDeviceBinding binding, String alarmMsg) {
String equipmentCode = binding != null ? binding.getDeviceCode() : "unknown"; String equipmentCode = binding != null ? binding.getMotherboardCode() : "unknown";
recordAlarmByBingding(equipmentCode, alarmMsg); recordAlarmByBingding(equipmentCode, alarmMsg);
} }
......
...@@ -232,7 +232,7 @@ public class AgingStageTwoProcessJob implements Job { ...@@ -232,7 +232,7 @@ public class AgingStageTwoProcessJob implements Job {
} catch (Exception e) { } catch (Exception e) {
log.info("设备{}处理异常: ip={}, port={}", deviceId, ip, port, e); log.info("设备{}处理异常: ip={}, port={}", deviceId, ip, port, e);
binding.setStatus("5"); binding.setDeviceStatus("-9999");
palletDeviceBindingMapper.updatePalletDeviceBinding(binding); palletDeviceBindingMapper.updatePalletDeviceBinding(binding);
errorCount.incrementAndGet(); errorCount.incrementAndGet();
return false; return false;
......
...@@ -403,7 +403,7 @@ public abstract class BaseDeviceCommJob implements Job { ...@@ -403,7 +403,7 @@ public abstract class BaseDeviceCommJob implements Job {
try { try {
palletDeviceBinding = palletDeviceBindingMapper.selectByTrayIdAndIndex(ip, deviceId); palletDeviceBinding = palletDeviceBindingMapper.selectByTrayIdAndIndex(ip, deviceId);
if(palletDeviceBinding != null) { if(palletDeviceBinding != null) {
palletDeviceBinding.setStatus("4"); palletDeviceBinding.setDeviceStatus("4");
} }
} catch (Exception e) { } catch (Exception e) {
log.info("查询PalletDeviceBinding异常:ip={}, deviceId={}", ip, deviceId, e); log.info("查询PalletDeviceBinding异常:ip={}, deviceId={}", ip, deviceId, e);
......
...@@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="palletDeviceBindingId" column="f_pallet_device_binding_id" /> <result property="palletDeviceBindingId" column="f_pallet_device_binding_id" />
<result property="trayId" column="f_tray_id" /> <result property="trayId" column="f_tray_id" />
<result property="storeyCode" column="f_storey_code" /> <result property="storeyCode" column="f_storey_code" />
<result property="deviceCode" column="f_device_code" /> <result property="motherboardCode" column="f_motherboard_code" />
<result property="row" column="f_row" /> <result property="row" column="f_row" />
<result property="col" column="f_col" /> <result property="col" column="f_col" />
<result property="index" column="f_index" /> <result property="index" column="f_index" />
...@@ -16,7 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -16,7 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="bindingTime" column="f_binding_time" /> <result property="bindingTime" column="f_binding_time" />
<result property="unbindingTime" column="f_unbinding_time" /> <result property="unbindingTime" column="f_unbinding_time" />
<result property="createTime" column="f_create_time" /> <result property="createTime" column="f_create_time" />
<result property="status" column="f_status" /> <result property="deviceStatus" column="f_device_status" />
<result property="recordYear" column="f_record_year" /> <result property="recordYear" column="f_record_year" />
<result property="recordMonth" column="f_record_month" /> <result property="recordMonth" column="f_record_month" />
<result property="recordDate" column="f_record_date" /> <result property="recordDate" column="f_record_date" />
...@@ -44,6 +44,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -44,6 +44,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="simCardStatus" column="f_sim_card_status" /> <result property="simCardStatus" column="f_sim_card_status" />
<result property="networkStatus" column="f_network_status" /> <result property="networkStatus" column="f_network_status" />
<result property="calibrationUnbindStatus" column="f_calibration_unbind_status" />
</resultMap> </resultMap>
<sql id="selectPalletDeviceBindingVo"> <sql id="selectPalletDeviceBindingVo">
...@@ -51,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -51,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
palDeviceBinding.f_tray_id, palDeviceBinding.f_tray_id,
palDeviceBinding.f_storey_code, palDeviceBinding.f_storey_code,
trayInfo.f_tray_code as fTrayCode, trayInfo.f_tray_code as fTrayCode,
palDeviceBinding.f_device_code, palDeviceBinding.f_motherboard_code,
palDeviceBinding.f_row, palDeviceBinding.f_row,
palDeviceBinding.f_col, palDeviceBinding.f_col,
palDeviceBinding.f_index, palDeviceBinding.f_index,
...@@ -59,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -59,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
palDeviceBinding.f_binding_time, palDeviceBinding.f_binding_time,
palDeviceBinding.f_unbinding_time, palDeviceBinding.f_unbinding_time,
palDeviceBinding.f_create_time, palDeviceBinding.f_create_time,
palDeviceBinding.f_status, palDeviceBinding.f_device_status,
palDeviceBinding.f_record_year, palDeviceBinding.f_record_year,
palDeviceBinding.f_record_month, palDeviceBinding.f_record_month,
palDeviceBinding.f_record_date, palDeviceBinding.f_record_date,
...@@ -81,7 +83,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -81,7 +83,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
palDeviceBinding.f_pulse_status, palDeviceBinding.f_pulse_status,
palDeviceBinding.f_module_status, palDeviceBinding.f_module_status,
palDeviceBinding.f_sim_card_status, palDeviceBinding.f_sim_card_status,
palDeviceBinding.f_network_status palDeviceBinding.f_network_status,
palDeviceBinding.f_calibration_unbind_status
from t_pallet_device_binding palDeviceBinding from t_pallet_device_binding palDeviceBinding
left join t_tray_info trayInfo on trayInfo.f_tray_id = palDeviceBinding.f_tray_id left join t_tray_info trayInfo on trayInfo.f_tray_id = palDeviceBinding.f_tray_id
</sql> </sql>
...@@ -89,7 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -89,7 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="countErrorByTrayId" parameterType="Long" resultType="int"> <select id="countErrorByTrayId" parameterType="Long" resultType="int">
select count(1) from t_pallet_device_binding palDeviceBinding select count(1) from t_pallet_device_binding palDeviceBinding
where palDeviceBinding.f_tray_id = #{trayId} where palDeviceBinding.f_tray_id = #{trayId}
and (palDeviceBinding.f_status = '0' or palDeviceBinding.f_status = '5') and (palDeviceBinding.f_device_status = '0' or palDeviceBinding.f_device_status = '5')
</select> </select>
<select id="countByTrayId" parameterType="Long" resultType="int"> <select id="countByTrayId" parameterType="Long" resultType="int">
select count(1) from t_pallet_device_binding palDeviceBinding select count(1) from t_pallet_device_binding palDeviceBinding
...@@ -98,14 +101,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -98,14 +101,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="countDeviceByTrayId" parameterType="long" resultType="int"> <select id="countDeviceByTrayId" parameterType="long" resultType="int">
select count(1) from t_pallet_device_binding palDeviceBinding select count(1) from t_pallet_device_binding palDeviceBinding
where palDeviceBinding.f_tray_id = #{trayId} where palDeviceBinding.f_tray_id = #{trayId}
and palDeviceBinding.f_device_code is not null and palDeviceBinding.f_motherboard_code is not null
and palDeviceBinding.f_device_code != '' and palDeviceBinding.f_motherboard_code != ''
and palDeviceBinding.f_calibration_unbind_status = '0'
</select>
<select id="listByTrayId" parameterType="long" resultMap="PalletDeviceBindingResult">
<include refid="selectPalletDeviceBindingVo"/>
where palDeviceBinding.f_tray_id = #{trayId}
</select> </select>
<select id="selectPalletDeviceBindingList" parameterType="PalletDeviceBinding" resultMap="PalletDeviceBindingResult"> <select id="selectPalletDeviceBindingList" parameterType="PalletDeviceBinding" resultMap="PalletDeviceBindingResult">
<include refid="selectPalletDeviceBindingVo"/> <include refid="selectPalletDeviceBindingVo"/>
<where> <where>
<if test="trayId != null "> and palDeviceBinding.f_tray_id = #{trayId}</if> <if test="trayId != null "> and palDeviceBinding.f_tray_id = #{trayId}</if>
<if test="deviceCode != null and deviceCode != ''"> and palDeviceBinding.f_device_code like concat('%',#{deviceCode},'%') </if> <if test="motherboardCode != null and motherboardCode != ''"> and palDeviceBinding.f_motherboard_code like concat('%',#{motherboardCode},'%') </if>
<if test="fTrayCode != null and fTrayCode != ''"> and trayInfo.f_tray_code like concat('%',#{fTrayCode},'%')</if> <if test="fTrayCode != null and fTrayCode != ''"> and trayInfo.f_tray_code like concat('%',#{fTrayCode},'%')</if>
<if test="row != null "> and palDeviceBinding.f_row = #{row}</if> <if test="row != null "> and palDeviceBinding.f_row = #{row}</if>
<if test="col != null "> and palDeviceBinding.f_col = #{col}</if> <if test="col != null "> and palDeviceBinding.f_col = #{col}</if>
...@@ -114,7 +122,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -114,7 +122,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bindingTime != null "> and palDeviceBinding.f_binding_time = #{bindingTime}</if> <if test="bindingTime != null "> and palDeviceBinding.f_binding_time = #{bindingTime}</if>
<if test="unbindingTime != null "> and palDeviceBinding.f_unbinding_time = #{unbindingTime}</if> <if test="unbindingTime != null "> and palDeviceBinding.f_unbinding_time = #{unbindingTime}</if>
<if test="createTime != null "> and palDeviceBinding.f_create_time = #{createTime}</if> <if test="createTime != null "> and palDeviceBinding.f_create_time = #{createTime}</if>
<if test="status != null and status != '' "> and palDeviceBinding.f_status = #{status}</if> <if test="deviceStatus != null and deviceStatus != '' "> and palDeviceBinding.f_device_status = #{deviceStatus}</if>
</where> </where>
order by trayInfo.f_tray_code ,palDeviceBinding.f_number asc order by trayInfo.f_tray_code ,palDeviceBinding.f_number asc
</select> </select>
...@@ -136,7 +144,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -136,7 +144,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select f_pallet_device_binding_id, select f_pallet_device_binding_id,
f_storey_code, f_storey_code,
f_tray_id, f_tray_id,
f_device_code, f_motherboard_code,
f_row, f_row,
f_col, f_col,
f_index, f_index,
...@@ -144,7 +152,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -144,7 +152,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
f_binding_time, f_binding_time,
f_unbinding_time, f_unbinding_time,
f_create_time, f_create_time,
f_status, f_device_status,
f_record_year, f_record_year,
f_record_month, f_record_month,
f_record_date, f_record_date,
...@@ -166,7 +174,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -166,7 +174,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
f_pulse_status, f_pulse_status,
f_module_status, f_module_status,
f_sim_card_status, f_sim_card_status,
f_network_status f_network_status,
f_calibration_unbind_status
from t_pallet_device_binding palDeviceBinding where palDeviceBinding.f_tray_id = ( from t_pallet_device_binding palDeviceBinding where palDeviceBinding.f_tray_id = (
SELECT SELECT
trayInfo.f_tray_id trayInfo.f_tray_id
...@@ -181,7 +190,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -181,7 +190,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="checkRepeat" parameterType="list" resultType="int"> <select id="checkRepeat" parameterType="list" resultType="int">
select count(1) from t_pallet_device_binding palDeviceBinding select count(1) from t_pallet_device_binding palDeviceBinding
<if test="validDeviceCodes != null and validDeviceCodes.size() > 0"> <if test="validDeviceCodes != null and validDeviceCodes.size() > 0">
where palDeviceBinding.f_device_code in where palDeviceBinding.f_motherboard_code in
<foreach item="item" collection="validDeviceCodes" index="index" <foreach item="item" collection="validDeviceCodes" index="index"
open="(" separator="," close=")"> open="(" separator="," close=")">
#{item} #{item}
...@@ -192,13 +201,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -192,13 +201,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if> </if>
</select> </select>
<insert id="batchInsertPalletDeviceBinding" parameterType="list" useGeneratedKeys="true" keyProperty="palletDeviceBindingId"> <insert id="batchInsertPalletDeviceBinding" parameterType="list" useGeneratedKeys="true" keyProperty="palletDeviceBindingId">
insert into t_pallet_device_binding (f_tray_id,f_storey_code ,f_device_code,f_row,f_col,f_index,f_number,f_binding_time, insert into t_pallet_device_binding (f_tray_id,f_storey_code ,f_motherboard_code,f_row,f_col,f_index,f_number,f_binding_time,
f_create_time,f_status) f_create_time,f_device_status,f_calibration_unbind_status)
values values
<foreach collection="palletDeviceBindingList" item="item" index="index" separator=","> <foreach collection="palletDeviceBindingList" item="item" index="index" separator=",">
( (
#{item.trayId}, #{item.storeyCode}, #{item.deviceCode}, #{item.row}, #{item.col},#{item.index},#{item.number}, #{item.trayId}, #{item.storeyCode}, #{item.motherboardCode}, #{item.row}, #{item.col},#{item.index},#{item.number},
#{item.bindingTime},#{item.createTime},#{item.status} #{item.bindingTime},#{item.createTime},#{item.deviceStatus},#{item.calibrationUnbindStatus}
) )
</foreach> </foreach>
</insert> </insert>
...@@ -207,12 +216,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -207,12 +216,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<update id="resetAll" parameterType="long"> <update id="resetAll" parameterType="long">
update t_pallet_device_binding update t_pallet_device_binding
set f_device_code = null, set f_motherboard_code = null,
f_storey_code = null, f_storey_code = null,
f_status = null, f_device_status = null,
f_binding_time = null, f_binding_time = null,
f_unbinding_time = null, f_unbinding_time = null,
f_status = null, f_device_status = null,
f_record_year = null, f_record_year = null,
f_record_month = null, f_record_month = null,
f_record_date = null, f_record_date = null,
...@@ -242,7 +251,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -242,7 +251,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
insert into t_pallet_device_binding insert into t_pallet_device_binding
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="trayId != null">f_tray_id,</if> <if test="trayId != null">f_tray_id,</if>
<if test="deviceCode != null">f_device_code,</if> <if test="motherboardCode != null">f_motherboard_code,</if>
<if test="storeyCode != null">f_storey_code,</if> <if test="storeyCode != null">f_storey_code,</if>
<if test="row != null">f_row,</if> <if test="row != null">f_row,</if>
<if test="col != null">f_col,</if> <if test="col != null">f_col,</if>
...@@ -251,11 +260,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -251,11 +260,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bindingTime != null">f_binding_time,</if> <if test="bindingTime != null">f_binding_time,</if>
<if test="unbindingTime != null">f_unbinding_time,</if> <if test="unbindingTime != null">f_unbinding_time,</if>
<if test="createTime != null">f_create_time,</if> <if test="createTime != null">f_create_time,</if>
<if test="status != null">f_status,</if> <if test="deviceStatus != null">f_device_status,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="trayId != null">#{trayId},</if> <if test="trayId != null">#{trayId},</if>
<if test="deviceCode != null">#{deviceCode},</if> <if test="motherboardCode != null">#{motherboardCode},</if>
<if test="storeyCode != null">#{storeyCode},</if> <if test="storeyCode != null">#{storeyCode},</if>
<if test="row != null">#{row},</if> <if test="row != null">#{row},</if>
<if test="col != null">#{col},</if> <if test="col != null">#{col},</if>
...@@ -264,15 +273,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -264,15 +273,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bindingTime != null">#{bindingTime},</if> <if test="bindingTime != null">#{bindingTime},</if>
<if test="unbindingTime != null">#{unbindingTime},</if> <if test="unbindingTime != null">#{unbindingTime},</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
<if test="status != null">#{status},</if> <if test="deviceStatus != null">#{deviceStatus},</if>
</trim> </trim>
</insert> </insert>
<update id="unbindDeviceByCalibrationUnbindStatus" parameterType="long">
update t_pallet_device_binding set f_calibration_unbind_status = '1' where f_pallet_device_binding_id = #{palletDeviceBindingId}
</update>
<update id="unbindDevice" parameterType="long"> <update id="unbindDevice" parameterType="long">
update t_pallet_device_binding update t_pallet_device_binding
set f_device_code = null, set f_motherboard_code = null,
f_storey_code = null, f_storey_code = null,
f_status = null, f_device_status = null,
f_unbinding_time = NOW(), f_unbinding_time = NOW(),
f_record_year = null, f_record_year = null,
f_record_month = null, f_record_month = null,
...@@ -303,8 +315,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -303,8 +315,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="trayId != null">f_tray_id = #{trayId},</if> <if test="trayId != null">f_tray_id = #{trayId},</if>
<if test="storeyCode != null">f_storey_code = #{storeyCode},</if> <if test="storeyCode != null">f_storey_code = #{storeyCode},</if>
<if test="deviceCode != null">f_device_code = #{deviceCode},</if> <if test="motherboardCode != null">f_motherboard_code = #{motherboardCode},</if>
<if test="deviceCode == null">f_device_code = null,</if> <if test="motherboardCode == null">f_motherboard_code = null,</if>
<if test="row != null">f_row = #{row},</if> <if test="row != null">f_row = #{row},</if>
<if test="col != null">f_col = #{col},</if> <if test="col != null">f_col = #{col},</if>
<if test="index != null">f_index = #{index},</if> <if test="index != null">f_index = #{index},</if>
...@@ -312,7 +324,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -312,7 +324,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bindingTime != null">f_binding_time = #{bindingTime},</if> <if test="bindingTime != null">f_binding_time = #{bindingTime},</if>
<if test="unbindingTime != null">f_unbinding_time = #{unbindingTime},</if> <if test="unbindingTime != null">f_unbinding_time = #{unbindingTime},</if>
<if test="createTime != null">f_create_time = #{createTime},</if> <if test="createTime != null">f_create_time = #{createTime},</if>
<if test="status != null">f_status = #{status},</if> <if test="deviceStatus != null">f_device_status = #{deviceStatus},</if>
<if test="recordYear != null">f_record_year = #{recordYear},</if> <if test="recordYear != null">f_record_year = #{recordYear},</if>
<if test="recordMonth != null">f_record_month = #{recordMonth},</if> <if test="recordMonth != null">f_record_month = #{recordMonth},</if>
...@@ -338,14 +350,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -338,14 +350,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="simCardStatus != null">f_sim_card_status = #{simCardStatus},</if> <if test="simCardStatus != null">f_sim_card_status = #{simCardStatus},</if>
<if test="networkStatus != null">f_network_status = #{networkStatus},</if> <if test="networkStatus != null">f_network_status = #{networkStatus},</if>
</trim> </trim>
where f_pallet_device_binding_id = #{palletDeviceBindingId} and f_device_code is not null where f_pallet_device_binding_id = #{palletDeviceBindingId} and f_motherboard_code is not null
</update> </update>
<update id="batchUpdateDeviceCode" parameterType="list"> <update id="batchUpdateDeviceCode" parameterType="list">
<foreach collection="palletDeviceBindingList" item="item" index="index" separator=";"> <foreach collection="palletDeviceBindingList" item="item" index="index" separator=";">
UPDATE t_pallet_device_binding UPDATE t_pallet_device_binding
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="item.deviceCode != null">f_device_code = #{item.deviceCode},</if> <if test="item.motherboardCode != null">f_motherboard_code = #{item.motherboardCode},</if>
<if test="item.deviceCode == null">f_device_code = null,</if> <if test="item.motherboardCode == null">f_motherboard_code = null,</if>
</trim> </trim>
WHERE f_pallet_device_binding_id = #{item.palletDeviceBindingId} WHERE f_pallet_device_binding_id = #{item.palletDeviceBindingId}
</foreach> </foreach>
...@@ -361,7 +373,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -361,7 +373,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="item.calibrationConcentration != null">f_calibration_concentration = #{item.calibrationConcentration},</if> <if test="item.calibrationConcentration != null">f_calibration_concentration = #{item.calibrationConcentration},</if>
<if test="item.calibrationConcentrationStatus != null">f_calibration_concentration_status = #{item.calibrationConcentrationStatus},</if> <if test="item.calibrationConcentrationStatus != null">f_calibration_concentration_status = #{item.calibrationConcentrationStatus},</if>
</trim> </trim>
where f_pallet_device_binding_id = #{item.palletDeviceBindingId} and f_device_code is not null where f_pallet_device_binding_id = #{item.palletDeviceBindingId} and f_motherboard_code is not null
</foreach> </foreach>
</update> </update>
<update id="batchUpdateDeviceCodeAndUnbindingTime" parameterType="list"> <update id="batchUpdateDeviceCodeAndUnbindingTime" parameterType="list">
...@@ -370,7 +382,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -370,7 +382,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
f_storey_code = null, f_storey_code = null,
f_unbinding_time = null, f_unbinding_time = null,
f_status = null, f_device_status = null,
f_binding_time = NOW(), f_binding_time = NOW(),
f_record_year = null, f_record_year = null,
f_record_month = null, f_record_month = null,
...@@ -393,10 +405,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -393,10 +405,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
f_pulse_status = null, f_pulse_status = null,
f_module_status = null, f_module_status = null,
f_sim_card_status = null, f_sim_card_status = null,
f_network_status = null f_network_status = null,
f_calibration_unbind_status = '0'
<choose> <choose>
<when test="item.deviceCode != null"> <when test="item.motherboardCode != null">
, f_device_code = #{item.deviceCode} , f_motherboard_code = #{item.motherboardCode}
</when> </when>
</choose> </choose>
</trim> </trim>
...@@ -405,9 +418,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -405,9 +418,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<update id="unbindAllDevice" parameterType="long"> <update id="unbindAllDevice" parameterType="long">
update t_pallet_device_binding update t_pallet_device_binding
set f_device_code = null, set f_motherboard_code = null,
f_storey_code = null, f_storey_code = null,
f_status = null, f_device_status = null,
f_binding_time = null, f_binding_time = null,
f_unbinding_time = null, f_unbinding_time = null,
f_record_year = null, f_record_year = null,
...@@ -431,7 +444,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -431,7 +444,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
f_pulse_status = null, f_pulse_status = null,
f_module_status = null, f_module_status = null,
f_sim_card_status = null, f_sim_card_status = null,
f_network_status = null f_network_status = null,
f_calibration_unbind_status = null
where f_tray_id = #{trayId} where f_tray_id = #{trayId}
</update> </update>
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zehong.system.mapper.PalletDeviceUploadFailureMapper">
<resultMap type="PalletDeviceUploadFailure" id="PalletDeviceUploadFailureResult">
<result property="id" column="f_id" />
<result property="trayId" column="f_tray_id" />
<result property="storeyCode" column="f_storey_code" />
<result property="motherboardCode" column="f_motherboard_code" />
<result property="row" column="f_row" />
<result property="col" column="f_col" />
<result property="index" column="f_index" />
<result property="number" column="f_number" />
<result property="bindingTime" column="f_binding_time" />
<result property="unbindingTime" column="f_unbinding_time" />
<result property="createTime" column="f_create_time" />
<result property="deviceStatus" column="f_device_status" />
<result property="recordYear" column="f_record_year" />
<result property="recordMonth" column="f_record_month" />
<result property="recordDate" column="f_record_date" />
<result property="recordHour" column="f_record_hour" />
<result property="recordMinute" column="f_record_minute" />
<result property="writeTimeStatus" column="f_write_time_status" />
<result property="adjustmentZeroAd" column="f_adjustment_zero_ad" />
<result property="zeroStatus" column="f_zero_status" />
<result property="calibrationAd" column="f_calibration_ad" />
<result property="calibrationAdStatus" column="f_calibration_status" />
<result property="concentration" column="f_concentration" />
<result property="runTimeStatus" column="f_run_time_status" />
<result property="realTimeAd" column="f_real_time_ad" />
<result property="realTimeStatus" column="f_real_time_ad_status" />
<result property="calibrationConcentration" column="f_calibration_concentration" />
<result property="calibrationConcentrationStatus" column="f_calibration_concentration_status" />
<result property="writeSelfCheckStatus" column="f_write_self_check_status" />
<result property="relayStatus" column="f_relay_status" />
<result property="pulseStatus" column="f_pulse_status" />
<result property="moduleStatus" column="f_module_status" />
<result property="simCardStatus" column="f_sim_card_status" />
<result property="networkStatus" column="f_network_status" />
</resultMap>
<sql id="selectPalletDeviceUploadFailureVo">
select palDeviceBinding.f_id,
palDeviceBinding.f_tray_id,
trayInfo.f_tray_code as trayCode,
palDeviceBinding.f_storey_code,
palDeviceBinding.f_motherboard_code,
palDeviceBinding.f_row,
palDeviceBinding.f_col,
palDeviceBinding.f_index,
palDeviceBinding.f_number,
palDeviceBinding.f_binding_time,
palDeviceBinding.f_unbinding_time,
palDeviceBinding.f_create_time,
palDeviceBinding.f_device_status,
palDeviceBinding.f_record_year,
palDeviceBinding.f_record_month,
palDeviceBinding.f_record_date,
palDeviceBinding.f_record_hour,
palDeviceBinding.f_record_minute,
palDeviceBinding.f_write_time_status,
palDeviceBinding.f_adjustment_zero_ad,
palDeviceBinding.f_zero_status,
palDeviceBinding.f_calibration_ad,
palDeviceBinding.f_calibration_status,
palDeviceBinding.f_concentration,
palDeviceBinding.f_run_time_status,
palDeviceBinding.f_real_time_ad,
palDeviceBinding.f_real_time_ad_status,
palDeviceBinding.f_calibration_concentration,
palDeviceBinding.f_calibration_concentration_status,
palDeviceBinding.f_write_self_check_status,
palDeviceBinding.f_relay_status,
palDeviceBinding.f_pulse_status,
palDeviceBinding.f_module_status,
palDeviceBinding.f_sim_card_status,
palDeviceBinding.f_network_status
from t_pallet_device_upload_failure palDeviceBinding
left join t_tray_info trayInfo on trayInfo.f_tray_id = palDeviceBinding.f_tray_id
</sql>
<select id="selectPalletDeviceUploadFailureList" parameterType="PalletDeviceUploadFailure" resultMap="PalletDeviceUploadFailureResult">
<include refid="selectPalletDeviceUploadFailureVo"/>
<where>
<if test="trayId != null "> and f_tray_id = #{trayId}</if>
<if test="storeyCode != null and storeyCode != ''"> and f_storey_code = #{storeyCode}</if>
<if test="motherboardCode != null and motherboardCode != ''"> and f_motherboard_code = #{motherboardCode}</if>
<if test="row != null "> and f_row = #{row}</if>
<if test="col != null "> and f_col = #{col}</if>
<if test="index != null "> and f_index = #{index}</if>
<if test="number != null "> and f_number = #{number}</if>
<if test="bindingTime != null "> and f_binding_time = #{bindingTime}</if>
<if test="unbindingTime != null "> and f_unbinding_time = #{unbindingTime}</if>
<if test="createTime != null "> and f_create_time = #{createTime}</if>
<if test="deviceStatus != null and deviceStatus != ''"> and f_device_status = #{deviceStatus}</if>
<if test="recordYear != null and recordYear != ''"> and f_record_year = #{recordYear}</if>
<if test="recordMonth != null and recordMonth != ''"> and f_record_month = #{recordMonth}</if>
<if test="recordDate != null and recordDate != ''"> and f_record_date = #{recordDate}</if>
<if test="recordHour != null and recordHour != ''"> and f_record_hour = #{recordHour}</if>
<if test="recordMinute != null and recordMinute != ''"> and f_record_minute = #{recordMinute}</if>
<if test="writeTimeStatus != null and writeTimeStatus != ''"> and f_write_time_status = #{writeTimeStatus}</if>
<if test="adjustmentZeroAd != null and adjustmentZeroAd != ''"> and f_adjustment_zero_ad = #{adjustmentZeroAd}</if>
<if test="zeroStatus != null and zeroStatus != ''"> and f_zero_status = #{zeroStatus}</if>
<if test="calibrationAd != null and calibrationAd != ''"> and f_calibration_ad = #{calibrationAd}</if>
<if test="calibrationAdStatus != null and calibrationAdStatus != ''"> and f_calibration_status = #{calibrationAdStatus}</if>
<if test="concentration != null and concentration != ''"> and f_concentration = #{concentration}</if>
<if test="runTimeStatus != null and runTimeStatus != ''"> and f_run_time_status = #{runTimeStatus}</if>
<if test="realTimeAd != null "> and f_real_time_ad = #{realTimeAd}</if>
<if test="realTimeStatus != null and realTimeStatus != ''"> and f_real_time_ad_status = #{realTimeStatus}</if>
<if test="calibrationConcentration != null "> and f_calibration_concentration = #{calibrationConcentration}</if>
<if test="calibrationConcentrationStatus != null and calibrationConcentrationStatus != ''"> and f_calibration_concentration_status = #{calibrationConcentrationStatus}</if>
<if test="writeSelfCheckStatus != null "> and f_write_self_check_status = #{writeSelfCheckStatus}</if>
<if test="relayStatus != null "> and f_relay_status = #{relayStatus}</if>
<if test="pulseStatus != null "> and f_pulse_status = #{pulseStatus}</if>
<if test="moduleStatus != null "> and f_module_status = #{moduleStatus}</if>
<if test="simCardStatus != null "> and f_sim_card_status = #{simCardStatus}</if>
<if test="networkStatus != null "> and f_network_status = #{networkStatus}</if>
</where>
</select>
<select id="selectPalletDeviceUploadFailureById" parameterType="Long" resultMap="PalletDeviceUploadFailureResult">
<include refid="selectPalletDeviceUploadFailureVo"/>
where palDeviceBinding.f_id = #{id}
</select>
<insert id="batchInsertRealTimeData" parameterType="list">
insert into t_pallet_device_upload_failure
<trim prefix="(" suffix=")" suffixOverrides=",">
f_tray_id,
f_storey_code,
f_motherboard_code,
f_row,
f_col,
f_index,
f_number,
f_binding_time,
f_unbinding_time,
f_create_time,
f_device_status,
f_record_year,
f_record_month,
f_record_date,
f_record_hour,
f_record_minute,
f_write_time_status,
f_adjustment_zero_ad,
f_zero_status,
f_calibration_ad,
f_calibration_status,
f_concentration,
f_run_time_status,
f_real_time_ad,
f_real_time_ad_status,
f_calibration_concentration,
f_calibration_concentration_status,
f_write_self_check_status,
f_relay_status,
f_pulse_status,
f_module_status,
f_sim_card_status,
f_network_status
</trim>
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
#{item.trayId},
#{item.storeyCode},
#{item.motherboardCode},
#{item.row},
#{item.col},
#{item.index},
#{item.number},
#{item.bindingTime},
#{item.unbindingTime},
#{item.createTime},
#{item.deviceStatus},
#{item.recordYear},
#{item.recordMonth},
#{item.recordDate},
#{item.recordHour},
#{item.recordMinute},
#{item.writeTimeStatus},
#{item.adjustmentZeroAd},
#{item.zeroStatus},
#{item.calibrationAd},
#{item.calibrationAdStatus},
#{item.concentration},
#{item.runTimeStatus},
#{item.realTimeAd},
#{item.realTimeStatus},
#{item.calibrationConcentration},
#{item.calibrationConcentrationStatus},
#{item.writeSelfCheckStatus},
#{item.relayStatus},
#{item.pulseStatus},
#{item.moduleStatus},
#{item.simCardStatus},
#{item.networkStatus}
</trim>
</foreach>
</insert>
<insert id="batchInsert" parameterType="list">
insert into t_pallet_device_upload_failure
<trim prefix="(" suffix=")" suffixOverrides=",">
f_tray_id,
f_storey_code,
f_motherboard_code,
f_row,
f_col,
f_index,
f_number,
f_binding_time,
f_unbinding_time,
f_create_time,
f_device_status,
f_record_year,
f_record_month,
f_record_date,
f_record_hour,
f_record_minute,
f_write_time_status,
f_adjustment_zero_ad,
f_zero_status,
f_calibration_ad,
f_calibration_status,
f_concentration,
f_run_time_status,
f_real_time_ad,
f_real_time_ad_status,
f_calibration_concentration,
f_calibration_concentration_status,
f_write_self_check_status,
f_relay_status,
f_pulse_status,
f_module_status,
f_sim_card_status,
f_network_status
</trim>
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
#{item.trayId},
#{item.storeyCode},
#{item.motherboardCode},
#{item.row},
#{item.col},
#{item.index},
#{item.number},
#{item.bindingTime},
#{item.unbindingTime},
#{item.createTime},
#{item.deviceStatus},
#{item.recordYear},
#{item.recordMonth},
#{item.recordDate},
#{item.recordHour},
#{item.recordMinute},
#{item.writeTimeStatus},
#{item.adjustmentZeroAd},
#{item.zeroStatus},
#{item.calibrationAd},
#{item.calibrationStatus},
#{item.concentration},
#{item.runTimeStatus},
#{item.realTimeAd},
#{item.realTimeStatus},
#{item.calibrationConcentration},
#{item.calibrationConcentrationStatus},
#{item.writeSelfCheckStatus},
#{item.relayStatus},
#{item.pulseStatus},
#{item.moduleStatus},
#{item.simCardStatus},
#{item.networkStatus}
</trim>
</foreach>
</insert>
<insert id="insertPalletDeviceUploadFailure" parameterType="PalletDeviceUploadFailure" useGeneratedKeys="true" keyProperty="id">
insert into t_pallet_device_upload_failure
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="trayId != null">f_tray_id,</if>
<if test="storeyCode != null">f_storey_code,</if>
<if test="motherboardCode != null">f_motherboard_code,</if>
<if test="row != null">f_row,</if>
<if test="col != null">f_col,</if>
<if test="index != null">f_index,</if>
<if test="number != null">f_number,</if>
<if test="bindingTime != null">f_binding_time,</if>
<if test="unbindingTime != null">f_unbinding_time,</if>
<if test="createTime != null">f_create_time,</if>
<if test="deviceStatus != null">f_device_status,</if>
<if test="recordYear != null">f_record_year,</if>
<if test="recordMonth != null">f_record_month,</if>
<if test="recordDate != null">f_record_date,</if>
<if test="recordHour != null">f_record_hour,</if>
<if test="recordMinute != null">f_record_minute,</if>
<if test="writeTimeStatus != null">f_write_time_status,</if>
<if test="adjustmentZeroAd != null">f_adjustment_zero_ad,</if>
<if test="zeroStatus != null">f_zero_status,</if>
<if test="calibrationAd != null">f_calibration_ad,</if>
<if test="calibrationAdStatus != null">f_calibration_status,</if>
<if test="concentration != null">f_concentration,</if>
<if test="runTimeStatus != null">f_run_time_status,</if>
<if test="realTimeAd != null">f_real_time_ad,</if>
<if test="realTimeStatus != null">f_real_time_ad_status,</if>
<if test="calibrationConcentration != null">f_calibration_concentration,</if>
<if test="calibrationConcentrationStatus != null">f_calibration_concentration_status,</if>
<if test="writeSelfCheckStatus != null">f_write_self_check_status,</if>
<if test="relayStatus != null">f_relay_status,</if>
<if test="pulseStatus != null">f_pulse_status,</if>
<if test="moduleStatus != null">f_module_status,</if>
<if test="simCardStatus != null">f_sim_card_status,</if>
<if test="networkStatus != null">f_network_status,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="trayId != null">#{trayId},</if>
<if test="storeyCode != null">#{storeyCode},</if>
<if test="motherboardCode != null">#{motherboardCode},</if>
<if test="row != null">#{row},</if>
<if test="col != null">#{col},</if>
<if test="index != null">#{index},</if>
<if test="number != null">#{number},</if>
<if test="bindingTime != null">#{bindingTime},</if>
<if test="unbindingTime != null">#{unbindingTime},</if>
<if test="createTime != null">#{createTime},</if>
<if test="deviceStatus != null">#{deviceStatus},</if>
<if test="recordYear != null">#{recordYear},</if>
<if test="recordMonth != null">#{recordMonth},</if>
<if test="recordDate != null">#{recordDate},</if>
<if test="recordHour != null">#{recordHour},</if>
<if test="recordMinute != null">#{recordMinute},</if>
<if test="writeTimeStatus != null">#{writeTimeStatus},</if>
<if test="adjustmentZeroAd != null">#{adjustmentZeroAd},</if>
<if test="zeroStatus != null">#{zeroStatus},</if>
<if test="calibrationAd != null">#{calibrationAd},</if>
<if test="calibrationAdStatus != null">#{calibrationAdStatus},</if>
<if test="concentration != null">#{concentration},</if>
<if test="runTimeStatus != null">#{runTimeStatus},</if>
<if test="realTimeAd != null">#{realTimeAd},</if>
<if test="realTimeStatus != null">#{realTimeStatus},</if>
<if test="calibrationConcentration != null">#{calibrationConcentration},</if>
<if test="calibrationConcentrationStatus != null">#{calibrationConcentrationStatus},</if>
<if test="writeSelfCheckStatus != null">#{writeSelfCheckStatus},</if>
<if test="relayStatus != null">#{relayStatus},</if>
<if test="pulseStatus != null">#{pulseStatus},</if>
<if test="moduleStatus != null">#{moduleStatus},</if>
<if test="simCardStatus != null">#{simCardStatus},</if>
<if test="networkStatus != null">#{networkStatus},</if>
</trim>
</insert>
<update id="updatePalletDeviceUploadFailure" parameterType="PalletDeviceUploadFailure">
update t_pallet_device_upload_failure
<trim prefix="SET" suffixOverrides=",">
<if test="trayId != null">f_tray_id = #{trayId},</if>
<if test="storeyCode != null">f_storey_code = #{storeyCode},</if>
<if test="motherboardCode != null">f_motherboard_code = #{motherboardCode},</if>
<if test="row != null">f_row = #{row},</if>
<if test="col != null">f_col = #{col},</if>
<if test="index != null">f_index = #{index},</if>
<if test="number != null">f_number = #{number},</if>
<if test="bindingTime != null">f_binding_time = #{bindingTime},</if>
<if test="unbindingTime != null">f_unbinding_time = #{unbindingTime},</if>
<if test="createTime != null">f_create_time = #{createTime},</if>
<if test="deviceStatus != null">f_device_status = #{deviceStatus},</if>
<if test="recordYear != null">f_record_year = #{recordYear},</if>
<if test="recordMonth != null">f_record_month = #{recordMonth},</if>
<if test="recordDate != null">f_record_date = #{recordDate},</if>
<if test="recordHour != null">f_record_hour = #{recordHour},</if>
<if test="recordMinute != null">f_record_minute = #{recordMinute},</if>
<if test="writeTimeStatus != null">f_write_time_status = #{writeTimeStatus},</if>
<if test="adjustmentZeroAd != null">f_adjustment_zero_ad = #{adjustmentZeroAd},</if>
<if test="zeroStatus != null">f_zero_status = #{zeroStatus},</if>
<if test="calibrationAd != null">f_calibration_ad = #{calibrationAd},</if>
<if test="calibrationAdStatus != null">f_calibration_status = #{calibrationAdStatus},</if>
<if test="concentration != null">f_concentration = #{concentration},</if>
<if test="runTimeStatus != null">f_run_time_status = #{runTimeStatus},</if>
<if test="realTimeAd != null">f_real_time_ad = #{realTimeAd},</if>
<if test="realTimeStatus != null">f_real_time_ad_status = #{realTimeStatus},</if>
<if test="calibrationConcentration != null">f_calibration_concentration = #{calibrationConcentration},</if>
<if test="calibrationConcentrationStatus != null">f_calibration_concentration_status = #{calibrationConcentrationStatus},</if>
<if test="writeSelfCheckStatus != null">f_write_self_check_status = #{writeSelfCheckStatus},</if>
<if test="relayStatus != null">f_relay_status = #{relayStatus},</if>
<if test="pulseStatus != null">f_pulse_status = #{pulseStatus},</if>
<if test="moduleStatus != null">f_module_status = #{moduleStatus},</if>
<if test="simCardStatus != null">f_sim_card_status = #{simCardStatus},</if>
<if test="networkStatus != null">f_network_status = #{networkStatus},</if>
</trim>
where f_id = #{id}
</update>
<delete id="deletePalletDeviceUploadFailureById" parameterType="Long">
delete from t_pallet_device_upload_failure where f_id = #{id}
</delete>
<delete id="deletePalletDeviceUploadFailureByIds" parameterType="String">
delete from t_pallet_device_upload_failure where f_id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
...@@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="id" column="f_id" /> <result property="id" column="f_id" />
<result property="trayId" column="f_tray_id" /> <result property="trayId" column="f_tray_id" />
<result property="storeyCode" column="f_storey_code" /> <result property="storeyCode" column="f_storey_code" />
<result property="deviceCode" column="f_device_code" /> <result property="motherboardCode" column="f_motherboard_code" />
<result property="row" column="f_row" /> <result property="row" column="f_row" />
<result property="col" column="f_col" /> <result property="col" column="f_col" />
<result property="index" column="f_index" /> <result property="index" column="f_index" />
...@@ -16,7 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -16,7 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="bindingTime" column="f_binding_time" /> <result property="bindingTime" column="f_binding_time" />
<result property="unbindingTime" column="f_unbinding_time" /> <result property="unbindingTime" column="f_unbinding_time" />
<result property="createTime" column="f_create_time" /> <result property="createTime" column="f_create_time" />
<result property="status" column="f_status" /> <result property="deviceStatus" column="f_device_status" />
<result property="recordYear" column="f_record_year" /> <result property="recordYear" column="f_record_year" />
<result property="recordMonth" column="f_record_month" /> <result property="recordMonth" column="f_record_month" />
<result property="recordDate" column="f_record_date" /> <result property="recordDate" column="f_record_date" />
...@@ -26,11 +26,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -26,11 +26,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="adjustmentZeroAd" column="f_adjustment_zero_ad" /> <result property="adjustmentZeroAd" column="f_adjustment_zero_ad" />
<result property="zeroStatus" column="f_zero_status" /> <result property="zeroStatus" column="f_zero_status" />
<result property="calibrationAd" column="f_calibration_ad" /> <result property="calibrationAd" column="f_calibration_ad" />
<result property="calibrationStatus" column="f_calibration_status" /> <result property="calibrationAdStatus" column="f_calibration_status" />
<result property="concentration" column="f_concentration" /> <result property="concentration" column="f_concentration" />
<result property="runTimeStatus" column="f_run_time_status" /> <result property="runTimeStatus" column="f_run_time_status" />
<result property="realTimeAd" column="f_real_time_ad" /> <result property="realTimeAd" column="f_real_time_ad" />
<result property="realTimeAdStatus" column="f_real_time_ad_status" /> <result property="realTimeStatus" column="f_real_time_ad_status" />
<result property="calibrationConcentration" column="f_calibration_concentration" /> <result property="calibrationConcentration" column="f_calibration_concentration" />
<result property="calibrationConcentrationStatus" column="f_calibration_concentration_status" /> <result property="calibrationConcentrationStatus" column="f_calibration_concentration_status" />
...@@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
palDeviceBinding.f_tray_id, palDeviceBinding.f_tray_id,
palDeviceBinding.f_storey_code, palDeviceBinding.f_storey_code,
trayInfo.f_tray_code as trayCode, trayInfo.f_tray_code as trayCode,
palDeviceBinding.f_device_code, palDeviceBinding.f_motherboard_code,
palDeviceBinding.f_row, palDeviceBinding.f_row,
palDeviceBinding.f_col, palDeviceBinding.f_col,
palDeviceBinding.f_index, palDeviceBinding.f_index,
...@@ -56,7 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -56,7 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
palDeviceBinding.f_binding_time, palDeviceBinding.f_binding_time,
palDeviceBinding.f_unbinding_time, palDeviceBinding.f_unbinding_time,
palDeviceBinding.f_create_time, palDeviceBinding.f_create_time,
palDeviceBinding.f_status, palDeviceBinding.f_device_status,
palDeviceBinding.f_record_year, palDeviceBinding.f_record_year,
palDeviceBinding.f_record_month, palDeviceBinding.f_record_month,
palDeviceBinding.f_record_date, palDeviceBinding.f_record_date,
...@@ -86,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -86,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectPalletDeviceUploadHistoryList" parameterType="PalletDeviceUploadHistory" resultMap="PalletDeviceUploadHistoryResult"> <select id="selectPalletDeviceUploadHistoryList" parameterType="PalletDeviceUploadHistory" resultMap="PalletDeviceUploadHistoryResult">
<include refid="selectPalletDeviceUploadHistoryVo"/> <include refid="selectPalletDeviceUploadHistoryVo"/>
<where> <where>
<if test="deviceCode != null and deviceCode != ''"> and palDeviceBinding.f_device_code like concat('%',#{deviceCode},'%') </if> <if test="motherboardCode != null and motherboardCode != ''"> and palDeviceBinding.f_motherboard_code like concat('%',#{motherboardCode},'%') </if>
<if test="trayCode != null and trayCode != ''"> and trayInfo.f_tray_code like concat('%',#{trayCode},'%') </if> <if test="trayCode != null and trayCode != ''"> and trayInfo.f_tray_code like concat('%',#{trayCode},'%') </if>
</where> </where>
</select> </select>
...@@ -96,12 +96,89 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -96,12 +96,89 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where palDeviceBinding.f_id = #{id} where palDeviceBinding.f_id = #{id}
</select> </select>
<insert id="batchInsertRealTimeData" parameterType="list">
insert into t_pallet_device_upload_history
<trim prefix="(" suffix=")" suffixOverrides=",">
f_tray_id,
f_storey_code,
f_motherboard_code,
f_row,
f_col,
f_index,
f_number,
f_binding_time,
f_unbinding_time,
f_create_time,
f_device_status,
f_record_year,
f_record_month,
f_record_date,
f_record_hour,
f_record_minute,
f_write_time_status,
f_adjustment_zero_ad,
f_zero_status,
f_calibration_ad,
f_calibration_status,
f_concentration,
f_run_time_status,
f_real_time_ad,
f_real_time_ad_status,
f_calibration_concentration,
f_calibration_concentration_status,
f_write_self_check_status,
f_relay_status,
f_pulse_status,
f_module_status,
f_sim_card_status,
f_network_status
</trim>
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
#{item.trayId},
#{item.storeyCode},
#{item.motherboardCode},
#{item.row},
#{item.col},
#{item.index},
#{item.number},
#{item.bindingTime},
#{item.unbindingTime},
#{item.createTime},
#{item.deviceStatus},
#{item.recordYear},
#{item.recordMonth},
#{item.recordDate},
#{item.recordHour},
#{item.recordMinute},
#{item.writeTimeStatus},
#{item.adjustmentZeroAd},
#{item.zeroStatus},
#{item.calibrationAd},
#{item.calibrationAdStatus},
#{item.concentration},
#{item.runTimeStatus},
#{item.realTimeAd},
#{item.realTimeStatus},
#{item.calibrationConcentration},
#{item.calibrationConcentrationStatus},
#{item.writeSelfCheckStatus},
#{item.relayStatus},
#{item.pulseStatus},
#{item.moduleStatus},
#{item.simCardStatus},
#{item.networkStatus}
</trim>
</foreach>
</insert>
<insert id="batchInsert" parameterType="list"> <insert id="batchInsert" parameterType="list">
insert into t_pallet_device_upload_history insert into t_pallet_device_upload_history
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
f_tray_id, f_tray_id,
f_storey_code, f_storey_code,
f_device_code, f_motherboard_code,
f_row, f_row,
f_col, f_col,
f_index, f_index,
...@@ -109,7 +186,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -109,7 +186,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
f_binding_time, f_binding_time,
f_unbinding_time, f_unbinding_time,
f_create_time, f_create_time,
f_status, f_device_status,
f_record_year, f_record_year,
f_record_month, f_record_month,
f_record_date, f_record_date,
...@@ -138,7 +215,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -138,7 +215,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
#{item.trayId}, #{item.trayId},
#{item.storeyCode}, #{item.storeyCode},
#{item.deviceCode}, #{item.motherboardCode},
#{item.row}, #{item.row},
#{item.col}, #{item.col},
#{item.index}, #{item.index},
...@@ -146,7 +223,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -146,7 +223,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item.bindingTime}, #{item.bindingTime},
#{item.unbindingTime}, #{item.unbindingTime},
#{item.createTime}, #{item.createTime},
#{item.status}, #{item.deviceStatus},
#{item.recordYear}, #{item.recordYear},
#{item.recordMonth}, #{item.recordMonth},
#{item.recordDate}, #{item.recordDate},
...@@ -156,11 +233,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -156,11 +233,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item.adjustmentZeroAd}, #{item.adjustmentZeroAd},
#{item.zeroStatus}, #{item.zeroStatus},
#{item.calibrationAd}, #{item.calibrationAd},
#{item.calibrationStatus}, #{item.calibrationAdStatus},
#{item.concentration}, #{item.concentration},
#{item.runTimeStatus}, #{item.runTimeStatus},
#{item.realTimeAd}, #{item.realTimeAd},
#{item.realTimeAdStatus}, #{item.realTimeStatus},
#{item.calibrationConcentration}, #{item.calibrationConcentration},
#{item.calibrationConcentrationStatus}, #{item.calibrationConcentrationStatus},
#{item.writeSelfCheckStatus}, #{item.writeSelfCheckStatus},
...@@ -177,7 +254,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -177,7 +254,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="trayId != null">f_tray_id,</if> <if test="trayId != null">f_tray_id,</if>
<if test="storeyCode != null">f_storey_code,</if> <if test="storeyCode != null">f_storey_code,</if>
<if test="deviceCode != null">f_device_code,</if> <if test="motherboardCode != null">f_motherboard_code,</if>
<if test="row != null">f_row,</if> <if test="row != null">f_row,</if>
<if test="col != null">f_col,</if> <if test="col != null">f_col,</if>
<if test="index != null">f_index,</if> <if test="index != null">f_index,</if>
...@@ -185,7 +262,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -185,7 +262,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bindingTime != null">f_binding_time,</if> <if test="bindingTime != null">f_binding_time,</if>
<if test="unbindingTime != null">f_unbinding_time,</if> <if test="unbindingTime != null">f_unbinding_time,</if>
<if test="createTime != null">f_create_time,</if> <if test="createTime != null">f_create_time,</if>
<if test="status != null">f_status,</if> <if test="deviceStatus != null">f_device_status,</if>
<if test="recordYear != null">f_record_year,</if> <if test="recordYear != null">f_record_year,</if>
<if test="recordMonth != null">f_record_month,</if> <if test="recordMonth != null">f_record_month,</if>
<if test="recordDate != null">f_record_date,</if> <if test="recordDate != null">f_record_date,</if>
...@@ -195,11 +272,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -195,11 +272,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="adjustmentZeroAd != null">f_adjustment_zero_ad,</if> <if test="adjustmentZeroAd != null">f_adjustment_zero_ad,</if>
<if test="zeroStatus != null">f_zero_status,</if> <if test="zeroStatus != null">f_zero_status,</if>
<if test="calibrationAd != null">f_calibration_ad,</if> <if test="calibrationAd != null">f_calibration_ad,</if>
<if test="calibrationStatus != null">f_calibration_status,</if> <if test="calibrationAdStatus != null">f_calibration_status,</if>
<if test="concentration != null">f_concentration,</if> <if test="concentration != null">f_concentration,</if>
<if test="runTimeStatus != null">f_run_time_status,</if> <if test="runTimeStatus != null">f_run_time_status,</if>
<if test="realTimeAd != null">f_real_time_ad,</if> <if test="realTimeAd != null">f_real_time_ad,</if>
<if test="realTimeAdStatus != null">f_real_time_ad_status,</if> <if test="realTimeStatus != null">f_real_time_ad_status,</if>
<if test="calibrationConcentration != null">#{calibrationConcentration},</if> <if test="calibrationConcentration != null">#{calibrationConcentration},</if>
<if test="calibrationConcentrationStatus != null">#{calibrationConcentrationStatus},</if> <if test="calibrationConcentrationStatus != null">#{calibrationConcentrationStatus},</if>
...@@ -213,7 +290,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -213,7 +290,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="trayId != null">#{trayId},</if> <if test="trayId != null">#{trayId},</if>
<if test="storeyCode != null">#{storeyCode},</if> <if test="storeyCode != null">#{storeyCode},</if>
<if test="deviceCode != null">#{deviceCode},</if> <if test="motherboardCode != null">#{motherboardCode},</if>
<if test="row != null">#{row},</if> <if test="row != null">#{row},</if>
<if test="col != null">#{col},</if> <if test="col != null">#{col},</if>
<if test="index != null">#{index},</if> <if test="index != null">#{index},</if>
...@@ -221,7 +298,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -221,7 +298,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bindingTime != null">#{bindingTime},</if> <if test="bindingTime != null">#{bindingTime},</if>
<if test="unbindingTime != null">#{unbindingTime},</if> <if test="unbindingTime != null">#{unbindingTime},</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
<if test="status != null">#{status},</if> <if test="deviceStatus != null">#{deviceStatus},</if>
<if test="recordYear != null">#{recordYear},</if> <if test="recordYear != null">#{recordYear},</if>
<if test="recordMonth != null">#{recordMonth},</if> <if test="recordMonth != null">#{recordMonth},</if>
<if test="recordDate != null">#{recordDate},</if> <if test="recordDate != null">#{recordDate},</if>
...@@ -231,11 +308,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -231,11 +308,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="adjustmentZeroAd != null">#{adjustmentZeroAd},</if> <if test="adjustmentZeroAd != null">#{adjustmentZeroAd},</if>
<if test="zeroStatus != null">#{zeroStatus},</if> <if test="zeroStatus != null">#{zeroStatus},</if>
<if test="calibrationAd != null">#{calibrationAd},</if> <if test="calibrationAd != null">#{calibrationAd},</if>
<if test="calibrationStatus != null">#{calibrationStatus},</if> <if test="calibrationAdStatus != null">#{calibrationAdStatus},</if>
<if test="concentration != null">#{concentration},</if> <if test="concentration != null">#{concentration},</if>
<if test="runTimeStatus != null">#{runTimeStatus},</if> <if test="runTimeStatus != null">#{runTimeStatus},</if>
<if test="realTimeAd != null">#{realTimeAd},</if> <if test="realTimeAd != null">#{realTimeAd},</if>
<if test="realTimeAdStatus != null">#{realTimeAdStatus},</if> <if test="realTimeStatus != null">#{realTimeStatus},</if>
<if test="calibrationConcentration != null">#{calibrationConcentration},</if> <if test="calibrationConcentration != null">#{calibrationConcentration},</if>
<if test="calibrationConcentrationStatus != null">#{calibrationConcentrationStatus},</if> <if test="calibrationConcentrationStatus != null">#{calibrationConcentrationStatus},</if>
...@@ -253,7 +330,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -253,7 +330,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="trayId != null">f_tray_id = #{trayId},</if> <if test="trayId != null">f_tray_id = #{trayId},</if>
<if test="storeyCode != null">f_storey_code = #{storeyCode},</if> <if test="storeyCode != null">f_storey_code = #{storeyCode},</if>
<if test="deviceCode != null">f_device_code = #{deviceCode},</if> <if test="motherboardCode != null">f_motherboard_code = #{motherboardCode},</if>
<if test="row != null">f_row = #{row},</if> <if test="row != null">f_row = #{row},</if>
<if test="col != null">f_col = #{col},</if> <if test="col != null">f_col = #{col},</if>
<if test="index != null">f_index = #{index},</if> <if test="index != null">f_index = #{index},</if>
...@@ -261,7 +338,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -261,7 +338,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bindingTime != null">f_binding_time = #{bindingTime},</if> <if test="bindingTime != null">f_binding_time = #{bindingTime},</if>
<if test="unbindingTime != null">f_unbinding_time = #{unbindingTime},</if> <if test="unbindingTime != null">f_unbinding_time = #{unbindingTime},</if>
<if test="createTime != null">f_create_time = #{createTime},</if> <if test="createTime != null">f_create_time = #{createTime},</if>
<if test="status != null">f_status = #{status},</if> <if test="deviceStatus != null">f_device_status = #{deviceStatus},</if>
<if test="recordYear != null">f_record_year = #{recordYear},</if> <if test="recordYear != null">f_record_year = #{recordYear},</if>
<if test="recordMonth != null">f_record_month = #{recordMonth},</if> <if test="recordMonth != null">f_record_month = #{recordMonth},</if>
<if test="recordDate != null">f_record_date = #{recordDate},</if> <if test="recordDate != null">f_record_date = #{recordDate},</if>
...@@ -271,11 +348,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -271,11 +348,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="adjustmentZeroAd != null">f_adjustment_zero_ad = #{adjustmentZeroAd},</if> <if test="adjustmentZeroAd != null">f_adjustment_zero_ad = #{adjustmentZeroAd},</if>
<if test="zeroStatus != null">f_zero_status = #{zeroStatus},</if> <if test="zeroStatus != null">f_zero_status = #{zeroStatus},</if>
<if test="calibrationAd != null">f_calibration_ad = #{calibrationAd},</if> <if test="calibrationAd != null">f_calibration_ad = #{calibrationAd},</if>
<if test="calibrationStatus != null">f_calibration_status = #{calibrationStatus},</if> <if test="calibrationAdStatus != null">f_calibration_status = #{calibrationAdStatus},</if>
<if test="concentration != null">f_concentration = #{concentration},</if> <if test="concentration != null">f_concentration = #{concentration},</if>
<if test="runTimeStatus != null">f_run_time_status = #{runTimeStatus},</if> <if test="runTimeStatus != null">f_run_time_status = #{runTimeStatus},</if>
<if test="realTimeAd != null">f_real_time_ad = #{realTimeAd},</if> <if test="realTimeAd != null">f_real_time_ad = #{realTimeAd},</if>
<if test="realTimeAdStatus != null">f_real_time_ad_status = #{realTimeAdStatus},</if> <if test="realTimeStatus != null">f_real_time_ad_status = #{realTimeStatus},</if>
<if test="calibrationConcentration != null">f_calibration_concentration = #{calibrationConcentration},</if> <if test="calibrationConcentration != null">f_calibration_concentration = #{calibrationConcentration},</if>
<if test="calibrationConcentrationStatus != null">f_calibration_concentration_status = #{calibrationConcentrationStatus},</if> <if test="calibrationConcentrationStatus != null">f_calibration_concentration_status = #{calibrationConcentrationStatus},</if>
......
...@@ -25,7 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -25,7 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
trayInfo.f_binding_time, trayInfo.f_binding_time,
trayInfo.f_unbinding_time, trayInfo.f_unbinding_time,
trayInfo.f_create_time, trayInfo.f_create_time,
( SELECT count( 1 ) FROM t_pallet_device_binding WHERE f_tray_id = trayInfo.f_tray_id AND ( f_device_code != '' ) AND f_unbinding_time IS NULL ) AS boardCount , ( SELECT count( 1 ) FROM t_pallet_device_binding WHERE f_tray_id = trayInfo.f_tray_id AND ( f_motherboard_code != '' ) AND f_unbinding_time IS NULL ) AS boardCount ,
storeyInfo.f_aging_start_time, storeyInfo.f_aging_start_time,
storeyInfo.f_estimated_end_time storeyInfo.f_estimated_end_time
FROM FROM
......
import request from '@/utils/request'
// 查询上传失败历史记录列表
export function listFailure(query) {
return request({
url: '/palletDevice/binding/failure/list',
method: 'get',
params: query
})
}
// 查询上传失败历史记录详细
export function getFailure(id) {
return request({
url: '/palletDevice/binding/failure/' + id,
method: 'get'
})
}
// 新增上传失败历史记录
export function addFailure(data) {
return request({
url: '/palletDevice/binding/failure',
method: 'post',
data: data
})
}
// 修改上传失败历史记录
export function updateFailure(data) {
return request({
url: '/palletDevice/binding/failure',
method: 'put',
data: data
})
}
// 删除上传失败历史记录
export function delFailure(id) {
return request({
url: '/palletDevice/binding/failure/' + id,
method: 'delete'
})
}
// 导出上传失败历史记录
export function exportFailure(query) {
return request({
url: '/palletDevice/binding/failure/export',
method: 'get',
params: query
})
}
export function reUpload() {
return request({
url: '/palletDevice/binding/failure/handleReUpload',
method: 'get'
})
}
...@@ -51,10 +51,3 @@ export function exportHistory(query) { ...@@ -51,10 +51,3 @@ export function exportHistory(query) {
params: query params: query
}) })
} }
export function reUpload() {
return request({
url: '/palletDevice/binding/history/handleReUpload',
method: 'get'
})
}
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="设备编号" prop="motherboardCode">
<el-input
v-model="queryParams.motherboardCode"
placeholder="请输入绑定的设备编号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="托盘编号" prop="trayCode">
<el-input
v-model="queryParams.trayCode"
placeholder="请输入托盘编号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="handleExport"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-upload"
size="mini"
:loading="exportLoading"
@click="handleReUpload"
>重新上传</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="historyList">
<el-table-column label="托盘编号" align="center" prop="trayCode" />
<el-table-column label="绑定层编号" align="center" prop="storeyCode" width="100px" />
<el-table-column label="设备编号" align="center" prop="motherboardCode" />
<el-table-column label="行" align="center" prop="row" />
<el-table-column label="列" align="center" prop="col" />
<el-table-column label="第几个" align="center" prop="index" />
<el-table-column label="编号" align="center" prop="number" />
<el-table-column label="绑定时间" align="center" prop="bindingTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.bindingTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="deviceStatus" >
<template slot-scope="scope">
<el-tag type="info" v-if="scope.row.deviceStatus === '0'">预热</el-tag>
<el-tag type="success" v-if="scope.row.deviceStatus === '1'">正常</el-tag>
<el-tag type="warning" v-if="scope.row.deviceStatus === '3'">传感器故障</el-tag>
<el-tag type="danger" v-if="scope.row.deviceStatus === '4'">报警</el-tag>
<el-tag type="danger" v-if="scope.row.deviceStatus === '5'">通讯故障</el-tag>
<el-tag type="danger" v-if="scope.row.deviceStatus === '-9999'">通讯异常</el-tag>
</template>
</el-table-column>
<el-table-column label="写时间状态" align="center" prop="writeTimeStatus" width="100px" >
<template slot-scope="scope">
<el-tag type="info" v-if="scope.row.writeTimeStatus === '0'">失败</el-tag>
<el-tag type="success" v-if="scope.row.writeTimeStatus === '1'">成功</el-tag>
</template>
</el-table-column>
<el-table-column label="运行时间状态" align="center" prop="runTimeStatus" width="110px">
<template slot-scope="scope">
<el-tag type="info" v-if="scope.row.runTimeStatus === '0'">异常</el-tag>
<el-tag type="success" v-if="scope.row.runTimeStatus === '1'">正常</el-tag>
</template>
</el-table-column>
<el-table-column label="浓度值" align="center" prop="concentration" />
<el-table-column label="实时AD值" align="center" prop="realTimeAd" />
<el-table-column label="实时AD状态" align="center" prop="realTimeStatus" width="110px" >
<template slot-scope="scope">
<el-tag type="info" v-if="scope.row.realTimeStatus === '0'">异常</el-tag>
<el-tag type="success" v-if="scope.row.realTimeStatus === '1'">正常</el-tag>
</template>
</el-table-column>
<el-table-column label="标定浓度值" align="center" width="150" prop="calibrationConcentration"></el-table-column>
<el-table-column label="标定状态" align="center" width="120">
<template slot-scope="scope">
<el-tag type="success" v-if="scope.row.calibrationConcentrationStatus !== null && scope.row.calibrationConcentrationStatus === '4'">正常</el-tag>
<el-tag type="info" v-if="scope.row.calibrationConcentrationStatus !== null && scope.row.calibrationConcentrationStatus !== '4' ">异常</el-tag>
</template>
</el-table-column>
<el-table-column label="写自检状态" align="center" width="150">
<template slot-scope="scope">
<el-tag type="success" v-if="scope.row.writeSelfCheckStatus === 1">成功</el-tag>
<el-tag type="info" v-if="scope.row.writeSelfCheckStatus === 0">失败</el-tag>
</template>
</el-table-column>
<el-table-column label="继电器状态" align="center" width="150">
<template slot-scope="scope">
<el-tag type="info" v-if="scope.row.relayStatus === 0">初始</el-tag>
<el-tag type="success" v-if="scope.row.relayStatus === 1">动作</el-tag>
</template>
</el-table-column>
<el-table-column label="脉冲状态" align="center" width="120">
<template slot-scope="scope">
<el-tag type="info" v-if="scope.row.pulseStatus === 0">初始</el-tag>
<el-tag type="success" v-if="scope.row.pulseStatus === 1">动作</el-tag>
</template>
</el-table-column>
<el-table-column label="模块状态" align="center" width="120">
<template slot-scope="scope">
<el-tag type="success" v-if="scope.row.moduleStatus === 1">正常</el-tag>
<el-tag type="info" v-if="scope.row.moduleStatus === 0">异常</el-tag>
</template>
</el-table-column>
<el-table-column label="SIM卡状态" align="center" width="150">
<template slot-scope="scope">
<el-tag type="success" v-if="scope.row.simCardStatus === 1">正常</el-tag>
<el-tag type="info" v-if="scope.row.simCardStatus === 0">异常</el-tag>
</template>
</el-table-column>
<el-table-column label="网络状态" align="center" width="120">
<template slot-scope="scope">
<el-tag type="success" v-if="scope.row.networkStatus === 1">正常</el-tag>
<el-tag type="info" v-if="scope.row.networkStatus === 0">异常</el-tag>
</template>
</el-table-column>
<el-table-column label="设置-年" align="center" prop="recordYear" />
<el-table-column label="设置-月" align="center" prop="recordMonth" />
<el-table-column label="设置-日" align="center" prop="recordDate" />
<el-table-column label="设置-时" align="center" prop="recordHour" />
<el-table-column label="设置-分" align="center" prop="recordMinute" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { listFailure, exportFailure ,reUpload} from "@/api/palletDeviceBinding/palletDeviceUploadFailure";
export default {
name: "History",
components: {
},
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 未上传成功的历史数据列表格数据
historyList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
trayId: null,
motherboardCode: null,
trayCode: null,
row: null,
col: null,
index: null,
number: null,
bindingTime: null,
unbindingTime: null,
createTime: null,
deviceStatus: null,
recordYear: null,
recordMonth: null,
recordDate: null,
recordHour: null,
recordMinute: null,
writeTimeStatus: null,
adjustmentZeroAd: null,
zeroStatus: null,
calibrationAd: null,
calibrationStatus: null,
concentration: null,
runTimeStatus: null,
realTimeAd: null,
realTimeStatus: null
},
// 表单参数
form: {},
// 表单校验
rules: {
trayId: [
{ required: true, message: "托盘id不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
// 获取标定状态文本
getCalibrationText(deviceStatus) {
if (deviceStatus === '4') {
return '正常'
} else if (deviceStatus) {
return '异常'
}
},
// 获取标定状态的el-tag类型
getCalibrationTagType(deviceStatus) {
if (deviceStatus === '4') {
return 'success' // 正常 - 绿色
} else if (deviceStatus) {
return 'info' // 异常 - 红色
}
},
/** 查询未上传成功的历史数据列列表 */
getList() {
this.loading = true;
listFailure(this.queryParams).then(response => {
this.historyList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
trayId: null,
motherboardCode: null,
row: null,
col: null,
index: null,
number: null,
bindingTime: null,
unbindingTime: null,
createTime: null,
deviceStatus: "0",
recordYear: null,
recordMonth: null,
recordDate: null,
recordHour: null,
recordMinute: null,
writeTimeStatus: "0",
adjustmentZeroAd: null,
zeroStatus: "0",
calibrationAd: null,
calibrationStatus: "0",
concentration: null,
runTimeStatus: "0",
realTimeAd: null,
realTimeStatus: "0"
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
handleReUpload() {
this.$confirm('是否确认重新上传当前时间下设备编号不为空的所有数据?', '提示-成功后数据直接删除', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
reUpload().then(response => {
// 确保 response 有正确的结构
if (response && response.code === 200) {
// 处理部分失败或完全失败的情况
this.handleUploadResult(response);
}
this.getList(); // 重新加载数据
})
}).catch(() => {
});
},
// 单独处理上传结果的方法
handleUploadResult(response) {
if (!response) {
this.$message.error('上传失败,服务器无响应');
return;
}
// 检查是否有 data 字段
if (response.data) {
const data = response.data;
if (data.successCount >= 0 && data.failedCount >= 0) {
// 部分失败的情况
if (data.failedCount > 0) {
// 显示失败设备列表
if (data.failedDeviceCodes && data.failedDeviceCodes.length > 0) {
this.$alert(`失败设备:${data.failedDeviceCodes.join(', ')}`, '上传失败设备', {
confirmButtonText: '确定',
type: 'warning',
callback: () => {
this.getList();
}
})
}
} else {
this.$message.success('所有数据上传成功');
}
} else {
// 没有统计信息,显示通用错误消息
this.$message.error(response.msg || '上传失败');
}
} else {
// 没有 data 字段,显示错误消息
this.$message.error(response.msg || '上传失败');
}
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有未上传成功的历史数据列数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.exportLoading = true;
return exportFailure(queryParams);
}).then(response => {
this.download(response.msg);
this.exportLoading = false;
}).catch(() => {});
}
}
};
</script>
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="设备编号" prop="deviceCode"> <el-form-item label="设备编号" prop="motherboardCode">
<el-input <el-input
v-model="queryParams.deviceCode" v-model="queryParams.motherboardCode"
placeholder="请输入绑定的设备编号" placeholder="请输入绑定的设备编号"
clearable clearable
size="small" size="small"
...@@ -26,15 +26,6 @@ ...@@ -26,15 +26,6 @@
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" type="warning"
...@@ -45,23 +36,13 @@ ...@@ -45,23 +36,13 @@
@click="handleExport" @click="handleExport"
>导出</el-button> >导出</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-upload"
size="mini"
:loading="exportLoading"
@click="handleReUpload"
>重新上传</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="historyList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="historyList" @selection-change="handleSelectionChange">
<el-table-column label="托盘编号" align="center" prop="trayCode" /> <el-table-column label="托盘编号" align="center" prop="trayCode" />
<el-table-column label="绑定层编号" align="center" prop="storeyCode" width="100px" /> <el-table-column label="绑定层编号" align="center" prop="storeyCode" width="100px" />
<el-table-column label="设备编号" align="center" prop="deviceCode" /> <el-table-column label="设备编号" align="center" prop="motherboardCode" />
<el-table-column label="行" align="center" prop="row" /> <el-table-column label="行" align="center" prop="row" />
<el-table-column label="列" align="center" prop="col" /> <el-table-column label="列" align="center" prop="col" />
<el-table-column label="第几个" align="center" prop="index" /> <el-table-column label="第几个" align="center" prop="index" />
...@@ -71,18 +52,14 @@ ...@@ -71,18 +52,14 @@
<span>{{ parseTime(scope.row.bindingTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.bindingTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="解绑时间" align="center" prop="unbindingTime" width="180"> <el-table-column label="状态" align="center" prop="deviceStatus" >
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.unbindingTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <el-tag type="info" v-if="scope.row.deviceStatus === '0'">预热</el-tag>
</template> <el-tag type="success" v-if="scope.row.deviceStatus === '1'">正常</el-tag>
</el-table-column> <el-tag type="warning" v-if="scope.row.deviceStatus === '3'">传感器故障</el-tag>
<el-table-column label="状态" align="center" prop="status" > <el-tag type="danger" v-if="scope.row.deviceStatus === '4'">报警</el-tag>
<template slot-scope="scope"> <el-tag type="danger" v-if="scope.row.deviceStatus === '5'">通讯故障</el-tag>
<el-tag type="info" v-if="scope.row.status === '0'">预热</el-tag> <el-tag type="danger" v-if="scope.row.deviceStatus === '-9999'">通讯异常</el-tag>
<el-tag type="success" v-if="scope.row.status === '1'">正常</el-tag>
<el-tag type="warning" v-if="scope.row.status === '3'">传感器故障</el-tag>
<el-tag type="danger" v-if="scope.row.status === '4'">报警</el-tag>
<el-tag type="danger" v-if="scope.row.status === '5'">通讯故障</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="写时间状态" align="center" prop="writeTimeStatus" width="100px" > <el-table-column label="写时间状态" align="center" prop="writeTimeStatus" width="100px" >
...@@ -99,10 +76,10 @@ ...@@ -99,10 +76,10 @@
</el-table-column> </el-table-column>
<el-table-column label="浓度值" align="center" prop="concentration" /> <el-table-column label="浓度值" align="center" prop="concentration" />
<el-table-column label="实时AD值" align="center" prop="realTimeAd" /> <el-table-column label="实时AD值" align="center" prop="realTimeAd" />
<el-table-column label="实时AD状态" align="center" prop="realTimeAdStatus" width="110px" > <el-table-column label="实时AD状态" align="center" prop="realTimeStatus" width="110px" >
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag type="info" v-if="scope.row.realTimeAdStatus === '0'">异常</el-tag> <el-tag type="info" v-if="scope.row.realTimeStatus === '0'">异常</el-tag>
<el-tag type="success" v-if="scope.row.realTimeAdStatus === '1'">正常</el-tag> <el-tag type="success" v-if="scope.row.realTimeStatus === '1'">正常</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="标定浓度值" align="center" width="150" prop="calibrationConcentration"></el-table-column> <el-table-column label="标定浓度值" align="center" width="150" prop="calibrationConcentration"></el-table-column>
...@@ -194,8 +171,8 @@ ...@@ -194,8 +171,8 @@
<el-form-item label="托盘id" prop="trayId"> <el-form-item label="托盘id" prop="trayId">
<el-input v-model="form.trayId" placeholder="请输入托盘id" /> <el-input v-model="form.trayId" placeholder="请输入托盘id" />
</el-form-item> </el-form-item>
<el-form-item label="绑定的设备编号" prop="deviceCode"> <el-form-item label="绑定的设备编号" prop="motherboardCode">
<el-input v-model="form.deviceCode" placeholder="请输入绑定的设备编号" /> <el-input v-model="form.motherboardCode" placeholder="请输入绑定的设备编号" />
</el-form-item> </el-form-item>
<el-form-item label="行" prop="row"> <el-form-item label="行" prop="row">
<el-input v-model="form.row" placeholder="请输入行" /> <el-input v-model="form.row" placeholder="请输入行" />
...@@ -226,7 +203,7 @@ ...@@ -226,7 +203,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障"> <el-form-item label="0-预热;1-正常;3-传感器故障;4-报警;5-通讯故障">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.deviceStatus">
<el-radio label="1">请选择字典生成</el-radio> <el-radio label="1">请选择字典生成</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
...@@ -278,7 +255,7 @@ ...@@ -278,7 +255,7 @@
<el-input v-model="form.realTimeAd" placeholder="请输入实时AD值" /> <el-input v-model="form.realTimeAd" placeholder="请输入实时AD值" />
</el-form-item> </el-form-item>
<el-form-item label="实时AD状态;0-异常;1-正常"> <el-form-item label="实时AD状态;0-异常;1-正常">
<el-radio-group v-model="form.realTimeAdStatus"> <el-radio-group v-model="form.realTimeStatus">
<el-radio label="1">请选择字典生成</el-radio> <el-radio label="1">请选择字典生成</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
...@@ -292,7 +269,7 @@ ...@@ -292,7 +269,7 @@
</template> </template>
<script> <script>
import { listHistory, getHistory, delHistory, addHistory, updateHistory, exportHistory ,reUpload} from "@/api/palletDeviceBinding/palletDeviceUploadHistory"; import { listHistory, getHistory, delHistory, addHistory, updateHistory, exportHistory} from "@/api/palletDeviceBinding/palletDeviceUploadHistory";
export default { export default {
name: "History", name: "History",
...@@ -325,7 +302,7 @@ export default { ...@@ -325,7 +302,7 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
trayId: null, trayId: null,
deviceCode: null, motherboardCode: null,
trayCode: null, trayCode: null,
row: null, row: null,
col: null, col: null,
...@@ -334,7 +311,7 @@ export default { ...@@ -334,7 +311,7 @@ export default {
bindingTime: null, bindingTime: null,
unbindingTime: null, unbindingTime: null,
createTime: null, createTime: null,
status: null, deviceStatus: null,
recordYear: null, recordYear: null,
recordMonth: null, recordMonth: null,
recordDate: null, recordDate: null,
...@@ -348,7 +325,7 @@ export default { ...@@ -348,7 +325,7 @@ export default {
concentration: null, concentration: null,
runTimeStatus: null, runTimeStatus: null,
realTimeAd: null, realTimeAd: null,
realTimeAdStatus: null realTimeStatus: null
}, },
// 表单参数 // 表单参数
form: {}, form: {},
...@@ -365,18 +342,18 @@ export default { ...@@ -365,18 +342,18 @@ export default {
}, },
methods: { methods: {
// 获取标定状态文本 // 获取标定状态文本
getCalibrationText(status) { getCalibrationText(deviceStatus) {
if (status === '4') { if (deviceStatus === '4') {
return '正常' return '正常'
} else if (status) { } else if (deviceStatus) {
return '异常' return '异常'
} }
}, },
// 获取标定状态的el-tag类型 // 获取标定状态的el-tag类型
getCalibrationTagType(status) { getCalibrationTagType(deviceStatus) {
if (status === '4') { if (deviceStatus === '4') {
return 'success' // 正常 - 绿色 return 'success' // 正常 - 绿色
} else if (status) { } else if (deviceStatus) {
return 'info' // 异常 - 红色 return 'info' // 异常 - 红色
} }
}, },
...@@ -399,7 +376,7 @@ export default { ...@@ -399,7 +376,7 @@ export default {
this.form = { this.form = {
id: null, id: null,
trayId: null, trayId: null,
deviceCode: null, motherboardCode: null,
row: null, row: null,
col: null, col: null,
index: null, index: null,
...@@ -407,7 +384,7 @@ export default { ...@@ -407,7 +384,7 @@ export default {
bindingTime: null, bindingTime: null,
unbindingTime: null, unbindingTime: null,
createTime: null, createTime: null,
status: "0", deviceStatus: "0",
recordYear: null, recordYear: null,
recordMonth: null, recordMonth: null,
recordDate: null, recordDate: null,
...@@ -421,7 +398,7 @@ export default { ...@@ -421,7 +398,7 @@ export default {
concentration: null, concentration: null,
runTimeStatus: "0", runTimeStatus: "0",
realTimeAd: null, realTimeAd: null,
realTimeAdStatus: "0" realTimeStatus: "0"
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -491,23 +468,6 @@ export default { ...@@ -491,23 +468,6 @@ export default {
this.msgSuccess("删除成功"); this.msgSuccess("删除成功");
}).catch(() => {}); }).catch(() => {});
}, },
handleReUpload() {
this.$confirm('是否确认重新上传当前时间下设备编号不为空的所有数据?', '提示-成功后数据直接删除', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
reUpload().then(response => {
// 确保 response 有正确的结构
if (response && response.code === 200) {
// 处理部分失败或完全失败的情况
this.handleUploadResult(response);
}
this.getList(); // 重新加载数据
})
}).catch(() => {
});
},
// 单独处理上传结果的方法 // 单独处理上传结果的方法
handleUploadResult(response) { handleUploadResult(response) {
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</el-input> </el-input>
<el-input <el-input
class="search-input" class="search-input"
v-model="queryParams.deviceCode" v-model="queryParams.motherboardCode"
placeholder="请输入设备编号" placeholder="请输入设备编号"
clearable clearable
> >
...@@ -63,9 +63,9 @@ ...@@ -63,9 +63,9 @@
<div class="tray-id">{{ scope.row.storeyCode }}</div> <div class="tray-id">{{ scope.row.storeyCode }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="设备编号" prop="deviceCode" align="center" width="150" fixed="left"> <el-table-column label="设备编号" prop="motherboardCode" align="center" width="150" fixed="left">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="device-code">{{ scope.row.deviceCode }}</div> <div class="device-code">{{ scope.row.motherboardCode }}</div>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="行" prop="row" align="center" width="80" />--> <!-- <el-table-column label="行" prop="row" align="center" width="80" />-->
...@@ -83,11 +83,14 @@ ...@@ -83,11 +83,14 @@
<el-table-column label="状态" align="center" width="120"> <el-table-column label="状态" align="center" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag <el-tag
:type="statusTagType(scope.row.status)" :type="statusTagType(scope.row.deviceStatus)"
size="mini" size="mini"
class="status-tag" class="status-tag"
:class="{
'custom-critical-tag': scope.row.deviceStatus === '-9999'
}"
> >
{{ statusLabel(scope.row.status) }} {{ statusLabel(scope.row.deviceStatus) }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
...@@ -122,18 +125,6 @@ ...@@ -122,18 +125,6 @@
<span v-else class="write-unknown">-</span> <span v-else class="write-unknown">-</span>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="零点AD" align="center" width="150">-->
<!-- <template slot-scope="scope">-->
<!-- <div class="device-code">{{ scope.row.adjustmentZeroAd || '-' }}</div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="零点AD状态" align="center" width="150">-->
<!-- <template slot-scope="scope">-->
<!-- <span v-if="scope.row.zeroStatus === '1'" class="write-success">正常</span>-->
<!-- <span v-else-if="scope.row.zeroStatus === '0'" class="write-failed">异常</span>-->
<!-- <span v-else class="write-unknown">-</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="标定浓度值" align="center" width="150"> <el-table-column label="标定浓度值" align="center" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="device-code">{{ scope.row.calibrationConcentration != null ? scope.row.calibrationConcentration : '-' }}</div> <div class="device-code">{{ scope.row.calibrationConcentration != null ? scope.row.calibrationConcentration : '-' }}</div>
...@@ -252,8 +243,8 @@ export default { ...@@ -252,8 +243,8 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
fTrayCode: "", fTrayCode: "",
deviceCode: "", motherboardCode: "",
status: "", deviceStatus: "",
bindingTime: "" bindingTime: ""
} }
}; };
...@@ -286,10 +277,10 @@ export default { ...@@ -286,10 +277,10 @@ export default {
}, },
methods: { methods: {
// 获取标定状态文本 // 获取标定状态文本
getCalibrationText(status) { getCalibrationText(deviceStatus) {
if (status === '4') { if (deviceStatus === '4') {
return '正常' return '正常'
} else if (status) { } else if (deviceStatus) {
return '异常' return '异常'
} else { } else {
return '-' return '-'
...@@ -297,10 +288,10 @@ export default { ...@@ -297,10 +288,10 @@ export default {
}, },
// 获取标定状态样式类 // 获取标定状态样式类
getCalibrationClass(status) { getCalibrationClass(deviceStatus) {
if (status === '4') { if (deviceStatus === '4') {
return 'write-success' return 'write-success'
} else if (status) { } else if (deviceStatus) {
return 'write-failed' return 'write-failed'
} else { } else {
return 'write-unknown' return 'write-unknown'
...@@ -320,8 +311,8 @@ export default { ...@@ -320,8 +311,8 @@ export default {
}, },
/** 状态标签类型映射 */ /** 状态标签类型映射 */
statusTagType(status) { statusTagType(deviceStatus) {
switch (status) { switch (deviceStatus) {
case "0": case "0":
return "info"; // 预热-信息蓝 return "info"; // 预热-信息蓝
case "1": case "1":
...@@ -331,22 +322,25 @@ export default { ...@@ -331,22 +322,25 @@ export default {
case "4": case "4":
return "danger"; // 报警-危险红 return "danger"; // 报警-危险红
case "5": case "5":
return ""; // 通讯故障-使用自定义灰色 return "error"; // 通讯故障-使用自定义灰色
case "-9999":
return "critical"; // 通讯异常-使用自定义灰色
default: default:
return ""; return "";
} }
}, },
/** 状态中文映射 */ /** 状态中文映射 */
statusLabel(status) { statusLabel(deviceStatus) {
const statusMap = { const statusMap = {
"0": "预热", "0": "预热",
"1": "正常", "1": "正常",
"3": "传感器故障", "3": "传感器故障",
"4": "报警", "4": "报警",
"5": "通讯故障" "5": "通讯故障",
"-9999": "通讯异常"
}; };
return statusMap[status] || "-"; return statusMap[deviceStatus] || "-";
}, },
/** 格式化通信时间(年-月-日 时:分) */ /** 格式化通信时间(年-月-日 时:分) */
...@@ -375,8 +369,8 @@ export default { ...@@ -375,8 +369,8 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
fTrayCode: "", fTrayCode: "",
deviceCode: "", motherboardCode: "",
status: "", deviceStatus: "",
bindingTime: "" bindingTime: ""
}; };
this.getList(); this.getList();
...@@ -398,6 +392,20 @@ export default { ...@@ -398,6 +392,20 @@ export default {
</script> </script>
<style scoped> <style scoped>
/* 通讯异常(危急 - 比危险红更强烈) */
.custom-critical-tag {
background: linear-gradient(135deg, #ff0000 0%, #990000 100%) !important;
border-color: #ff3838 !important;
color: white !important;
font-weight: bold !important;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3) !important;
box-shadow: 0 0 8px rgba(255, 56, 56, 0.5) !important;
animation: critical-pulse 1.5s infinite alternate !important;
position: relative !important;
z-index: 1 !important;
}
/* 主容器样式 */ /* 主容器样式 */
.tray-container { .tray-container {
width: 100%; width: 100%;
......
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
class="device-cell" class="device-cell"
:class="{ :class="{
'active': activeCell === index, 'active': activeCell === index,
'empty': !device.deviceCode, 'empty': !device.motherboardCode,
'error': isDeviceError(device), 'error': isDeviceError(device),
'duplicate': device.isDuplicate 'duplicate': device.isDuplicate
}" }"
...@@ -84,7 +84,10 @@ ...@@ -84,7 +84,10 @@
:ref="`deviceCell_${index}`" :ref="`deviceCell_${index}`"
> >
<div class="device-id"> <div class="device-id">
{{ device.deviceCode || '+' }} <div class="device-id">
{{ (device.motherboardCode && device.calibrationUnbindStatus === '0') ? device.motherboardCode : '+' }}
<!-- 其他图标保持不变 -->
</div>
<!-- 添加错误状态图标 --> <!-- 添加错误状态图标 -->
<i v-if="isDeviceError(device)" class="error-icon fas fa-exclamation-circle"></i> <i v-if="isDeviceError(device)" class="error-icon fas fa-exclamation-circle"></i>
<!-- 添加重复状态图标 --> <!-- 添加重复状态图标 -->
...@@ -243,7 +246,7 @@ export default { ...@@ -243,7 +246,7 @@ export default {
return { return {
index: i + 1, index: i + 1,
number: number, number: number,
deviceCode: '', motherboardCode: '',
row: row, row: row,
col: col, col: col,
isDuplicate: false // 添加重复标记属性 isDuplicate: false // 添加重复标记属性
...@@ -271,7 +274,7 @@ export default { ...@@ -271,7 +274,7 @@ export default {
}, },
// 计算已填充的设备数量 // 计算已填充的设备数量
filledCount() { filledCount() {
return this.devices.filter(d => d.deviceCode).length; return this.devices.filter(d => d.motherboardCode).length;
}, },
// 计算绑定按钮是否禁用 // 计算绑定按钮是否禁用
...@@ -352,26 +355,20 @@ export default { ...@@ -352,26 +355,20 @@ export default {
} }
}, },
// 在 methods 中添加一个专门判断设备是否异常的方法
isDeviceError(device) { isDeviceError(device) {
if (!device.deviceCode) return false; // 如果设备已解绑,则不视为错误
if (!device.motherboardCode || device.calibrationUnbindStatus === '1') return false;
// 只有在标定完成状态下才进行详细状态检查 // 原有的异常判断逻辑保持不变
if (this.trayStatus === '3') { return device.deviceStatus === '0' ||
// 标定完成状态下的完整异常检查 device.deviceStatus === '5' ||
return device.status === '0' || device.deviceStatus === '-9999' ||
device.status === '5' ||
(device.realTimeStatus != null && device.realTimeStatus === '0') || (device.realTimeStatus != null && device.realTimeStatus === '0') ||
(device.calibrationConcentrationStatus != null && device.calibrationConcentrationStatus !== '4') || (device.calibrationConcentrationStatus != null && device.calibrationConcentrationStatus !== '4') ||
(device.writeTimeStatus != null && device.writeTimeStatus === '0') || (device.writeTimeStatus != null && device.writeTimeStatus === '0') ||
(device.runTimeStatus != null && device.runTimeStatus === '0') || (device.runTimeStatus != null && device.runTimeStatus === '0') ||
device.relayStatus === 0 || device.pulseStatus === 0 || device.relayStatus === 0 || device.pulseStatus === 0 ||
device.moduleStatus === 0 || device.simCardStatus === 0 || device.networkStatus === 0; device.moduleStatus === 0 || device.simCardStatus === 0 || device.networkStatus === 0;
} else {
// 非标定完成状态(0,4,1,2等),只检查设备状态是否为 0 或 5
// 其他状态字段在绑定阶段可能为 null,不应该视为错误
return device.status === '0' || device.status === '5';
}
}, },
getAllBindingData(trayId) { getAllBindingData(trayId) {
...@@ -393,9 +390,9 @@ export default { ...@@ -393,9 +390,9 @@ export default {
this.checkDuplicateDevices(); this.checkDuplicateDevices();
const firstDeviceCodeEmptyItem = this.devices.find(item => const firstDeviceCodeEmptyItem = this.devices.find(item =>
item.deviceCode === null || item.motherboardCode === null ||
item.deviceCode === undefined || item.motherboardCode === undefined ||
(typeof item.deviceCode === 'string' && item.deviceCode.trim() === '') (typeof item.motherboardCode === 'string' && item.motherboardCode.trim() === '')
); );
if(firstDeviceCodeEmptyItem !== undefined) { if(firstDeviceCodeEmptyItem !== undefined) {
...@@ -437,9 +434,10 @@ export default { ...@@ -437,9 +434,10 @@ export default {
trayId: this.fTrayId, trayId: this.fTrayId,
index: i + 1, index: i + 1,
number: number, number: number,
deviceCode: '', motherboardCode: '',
row: row, row: row,
col: col, col: col,
calibrationUnbindStatus: '0', // 默认未解绑
isDuplicate: false // 添加重复标记属性 isDuplicate: false // 添加重复标记属性
} }
}) })
...@@ -476,7 +474,7 @@ export default { ...@@ -476,7 +474,7 @@ export default {
if (this.trayStatus === '3') { if (this.trayStatus === '3') {
// 检查扫描的设备是否存在 // 检查扫描的设备是否存在
const deviceIndex = this.devices.findIndex( const deviceIndex = this.devices.findIndex(
d => d.deviceCode === this.deviceInput d => d.motherboardCode === this.deviceInput
); );
if (deviceIndex !== -1) { if (deviceIndex !== -1) {
...@@ -501,7 +499,7 @@ export default { ...@@ -501,7 +499,7 @@ export default {
// 检查设备号是否已存在(排除当前单元格自身) // 检查设备号是否已存在(排除当前单元格自身)
const existingIndex = this.devices.findIndex( const existingIndex = this.devices.findIndex(
(d, idx) => idx !== this.activeCell && d.deviceCode === trimmedInput (d, idx) => idx !== this.activeCell && d.motherboardCode === trimmedInput
); );
if (existingIndex !== -1) { if (existingIndex !== -1) {
...@@ -520,7 +518,8 @@ export default { ...@@ -520,7 +518,8 @@ export default {
} }
// 如果没有重复,则正常添加设备 // 如果没有重复,则正常添加设备
this.devices[this.activeCell].deviceCode = trimmedInput; this.devices[this.activeCell].motherboardCode = trimmedInput;
this.devices[this.activeCell].calibrationUnbindStatus = '0';
// 添加后重新检查重复状态 // 添加后重新检查重复状态
this.checkDuplicateDevices(); this.checkDuplicateDevices();
...@@ -543,15 +542,15 @@ export default { ...@@ -543,15 +542,15 @@ export default {
// 统计每个设备码出现的次数 // 统计每个设备码出现的次数
this.devices.forEach(device => { this.devices.forEach(device => {
if (device.deviceCode && device.deviceCode.trim()) { if (device.motherboardCode && device.motherboardCode.trim()) {
deviceCodeMap[device.deviceCode] = (deviceCodeMap[device.deviceCode] || 0) + 1; deviceCodeMap[device.motherboardCode] = (deviceCodeMap[device.motherboardCode] || 0) + 1;
} }
}); });
// 标记重复的设备 // 标记重复的设备
this.devices.forEach(device => { this.devices.forEach(device => {
if (device.deviceCode && device.deviceCode.trim()) { if (device.motherboardCode && device.motherboardCode.trim()) {
device.isDuplicate = deviceCodeMap[device.deviceCode] > 1; device.isDuplicate = deviceCodeMap[device.motherboardCode] > 1;
} else { } else {
device.isDuplicate = false; device.isDuplicate = false;
} }
...@@ -589,15 +588,17 @@ export default { ...@@ -589,15 +588,17 @@ export default {
// 调用解绑方法,传递设备信息和palletDeviceBindingId // 调用解绑方法,传递设备信息和palletDeviceBindingId
let palletDeviceBinding = { let palletDeviceBinding = {
deviceCode: device.deviceCode, motherboardCode: device.motherboardCode,
palletDeviceBindingId: device.palletDeviceBindingId palletDeviceBindingId: device.palletDeviceBindingId,
calibrationUnbindStatus: '1' // 标记为解绑
} }
unbindSingleDevice(palletDeviceBinding).then(res => { unbindSingleDevice(palletDeviceBinding).then(res => {
if (res.code === 200) { if (res.code === 200) {
// 解绑成功后的处理 // 解绑成功后的处理
const wasErrorDevice = this.isDeviceError(this.devices[deviceIndex]); const wasErrorDevice = this.isDeviceError(this.devices[deviceIndex]);
this.devices[deviceIndex].deviceCode = ''; this.devices[deviceIndex].motherboardCode = '';
this.devices[deviceIndex].calibrationUnbindStatus = '1'; // 标记为已解绑
// 清除重复标记 // 清除重复标记
this.devices[deviceIndex].isDuplicate = false; this.devices[deviceIndex].isDuplicate = false;
...@@ -615,7 +616,7 @@ export default { ...@@ -615,7 +616,7 @@ export default {
} }
} }
this.$message.success(`设备 ${device.deviceCode} 解绑成功`); this.$message.success(`设备 ${device.motherboardCode} 解绑成功`);
} else { } else {
this.$message.error("解绑失败"); this.$message.error("解绑失败");
} }
...@@ -641,8 +642,8 @@ export default { ...@@ -641,8 +642,8 @@ export default {
// 解绑成功后重置设备矩阵 // 解绑成功后重置设备矩阵
this.devices = this.devices.map(d => ({ this.devices = this.devices.map(d => ({
...d, ...d,
deviceCode: '', motherboardCode: '',
status: '1', deviceStatus: '1',
isDuplicate: false isDuplicate: false
})); }));
this.abnormalCount = this.devices.length; // 重置异常计数为总设备数 this.abnormalCount = this.devices.length; // 重置异常计数为总设备数
...@@ -706,7 +707,7 @@ export default { ...@@ -706,7 +707,7 @@ export default {
// 重置时也清除重复标记 // 重置时也清除重复标记
this.devices = this.devices.map(d => ({ this.devices = this.devices.map(d => ({
...d, ...d,
deviceCode: '', motherboardCode: '',
isDuplicate: false isDuplicate: false
})); }));
this.activeCell = 0; this.activeCell = 0;
......
...@@ -432,7 +432,7 @@ export default { ...@@ -432,7 +432,7 @@ export default {
return clearTasks(row); return clearTasks(row);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.msgSuccess("重新老化开始"); this.msgSuccess("清空任务完成");
}).catch(() => {}); }).catch(() => {});
}, },
/** 重新老化 */ /** 重新老化 */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment