@ -4,6 +4,7 @@ package com.aucma.dms.controller;
import com.aucma.common.core.controller.BaseController ;
import com.aucma.common.core.domain.AjaxResult ;
import com.aucma.common.core.page.TableDataInfo ;
import com.aucma.common.exception.ServiceException ;
import com.aucma.dms.domain.* ;
import com.aucma.dms.domain.dto.DmsBaseDeviceLedgerDTO ;
import com.aucma.dms.domain.vo.DmsBillsFaultInstanceScanVo ;
@ -92,16 +93,21 @@ public class DmsMobileController extends BaseController {
* /
@GetMapping ( "/getDeviceByDeviceCode/{deviceCode}" )
public AjaxResult getDeviceByDeviceCode ( @PathVariable ( "deviceCode" ) String deviceCode ) {
BaseDeviceLedger query = new BaseDeviceLedger ( ) ;
query . setDeviceCode ( deviceCode ) ;
query . setIsFlag ( 1L ) ; // 只查询有效设备
List < BaseDeviceLedger > list = baseDeviceLedgerService . selectBaseDeviceLedgerList ( query ) ;
if ( CollectionUtils . isEmpty ( list ) ) {
return success ( null ) ;
try {
BaseDeviceLedger query = new BaseDeviceLedger ( ) ;
query . setDeviceCode ( deviceCode ) ;
query . setIsFlag ( 1L ) ; // 只查询有效设备
List < BaseDeviceLedger > list = baseDeviceLedgerService . selectBaseDeviceLedgerList ( query ) ;
if ( CollectionUtils . isEmpty ( list ) ) {
return success ( null ) ;
}
// 转换为DmsBaseDeviceLedger返回, 保持PDA兼容性
DmsBaseDeviceLedger result = convertToDeviceLedger ( list . get ( 0 ) ) ;
return success ( convertDeviceLedgerToDto ( result ) ) ;
} catch ( Exception e ) {
log . error ( "PDA查询设备信息失败 | deviceCode={}, 异常信息: {}" , deviceCode , e . getMessage ( ) , e ) ;
throw new ServiceException ( "获取设备信息失败: " + e . getMessage ( ) ) ;
}
// 转换为DmsBaseDeviceLedger返回, 保持PDA兼容性
DmsBaseDeviceLedger result = convertToDeviceLedger ( list . get ( 0 ) ) ;
return success ( convertDeviceLedgerToDto ( result ) ) ;
}
/ * *
@ -113,18 +119,23 @@ public class DmsMobileController extends BaseController {
* /
@GetMapping ( "/likeDeviceName" )
public AjaxResult likeDeviceName ( String deviceName ) {
BaseDeviceLedger query = new BaseDeviceLedger ( ) ;
query . setDeviceName ( deviceName ) ;
query . setIsFlag ( 1L ) ; // 只查询有效设备
List < BaseDeviceLedger > list = baseDeviceLedgerService . selectBaseDeviceLedgerList ( query ) ;
// 转换为DmsBaseDeviceLedger列表返回, 保持PDA兼容性
List < DmsBaseDeviceLedgerDTO > resultList = new ArrayList < > ( ) ;
if ( ! CollectionUtils . isEmpty ( list ) ) {
for ( BaseDeviceLedger base : list ) {
resultList . add ( convertDeviceLedgerToDto ( convertToDeviceLedger ( base ) ) ) ;
try {
BaseDeviceLedger query = new BaseDeviceLedger ( ) ;
query . setDeviceName ( deviceName ) ;
query . setIsFlag ( 1L ) ; // 只查询有效设备
List < BaseDeviceLedger > list = baseDeviceLedgerService . selectBaseDeviceLedgerList ( query ) ;
// 转换为DmsBaseDeviceLedger列表返回, 保持PDA兼容性
List < DmsBaseDeviceLedgerDTO > resultList = new ArrayList < > ( ) ;
if ( ! CollectionUtils . isEmpty ( list ) ) {
for ( BaseDeviceLedger base : list ) {
resultList . add ( convertDeviceLedgerToDto ( convertToDeviceLedger ( base ) ) ) ;
}
}
return success ( resultList ) ;
} catch ( Exception e ) {
log . error ( "PDA模糊查询设备失败 | deviceName={}, 异常信息: {}" , deviceName , e . getMessage ( ) , e ) ;
throw new ServiceException ( "查询设备失败: " + e . getMessage ( ) ) ;
}
return success ( resultList ) ;
}
/ * *
@ -265,72 +276,129 @@ public class DmsMobileController extends BaseController {
@PostMapping ( "/shutDown/add" )
@Transactional ( rollbackFor = Exception . class )
public AjaxResult addShutDownForPda ( @RequestBody DmsRecordShutDown shutDown ) {
// 若传入了停机原因ID, 则查询原因并回填类型
if ( shutDown . getShutReason ( ) ! = null ) {
DmsBaseShutReason query = new DmsBaseShutReason ( ) ;
query . setShutReason ( shutDown . getShutReason ( ) ) ;
query . setIsFlag ( "1" ) ;
List < DmsBaseShutReason > reasons = dmsBaseShutReasonService . selectDmsBaseShutReasonList ( query ) ;
if ( ! reasons . isEmpty ( ) ) {
shutDown . setShutType ( reasons . get ( 0 ) . getShutTypeId ( ) ) ;
// 若前端未传 deviceId, 尝试从原因带出
if ( shutDown . getDeviceId ( ) = = null ) {
shutDown . setDeviceId ( reasons . get ( 0 ) . getDeviceId ( ) ) ;
try {
// 若传入了停机原因ID, 则查询原因并回填类型
if ( shutDown . getShutReason ( ) ! = null ) {
DmsBaseShutReason query = new DmsBaseShutReason ( ) ;
query . setShutReason ( shutDown . getShutReason ( ) ) ;
query . setIsFlag ( "1" ) ;
List < DmsBaseShutReason > reasons = dmsBaseShutReasonService . selectDmsBaseShutReasonList ( query ) ;
if ( ! reasons . isEmpty ( ) ) {
shutDown . setShutType ( reasons . get ( 0 ) . getShutTypeId ( ) ) ;
shutDown . setShutReasonId ( reasons . get ( 0 ) . getShutReasonId ( ) ) ;
// 若前端未传 deviceId, 尝试从原因带出
if ( shutDown . getDeviceId ( ) = = null ) {
shutDown . setDeviceId ( reasons . get ( 0 ) . getDeviceId ( ) ) ;
}
}
}
}
// 默认启用标识
if ( shutDown . getIsFlag ( ) = = null ) {
shutDown . setIsFlag ( 1L ) ;
}
// 若未传入开始时间,则使用当前时间
if ( shutDown . getShutBeginTime ( ) = = null ) {
shutDown . setShutBeginTime ( new Date ( ) ) ;
}
int rows = dmsRecordShutDownService . insertDmsRecordShutDown ( shutDown ) ;
// 默认启用标识
if ( shutDown . getIsFlag ( ) = = null ) {
shutDown . setIsFlag ( 1L ) ;
}
// 新增停机记录默认未结束
if ( shutDown . getDowntimeFlag ( ) = = null ) {
shutDown . setDowntimeFlag ( "0" ) ;
}
// 若未传入开始时间,则使用当前时间
if ( shutDown . getShutBeginTime ( ) = = null ) {
shutDown . setShutBeginTime ( new Date ( ) ) ;
}
int rows = dmsRecordShutDownService . insertDmsRecordShutDown ( shutDown ) ;
// 对指定设备( OLD-01~OLD-05) 同步写入三色灯状态参数, 供设备状态统计使用
String deviceCode = shutDown . getDeviceCode ( ) ;
if ( deviceCode ! = null & & deviceCode . startsWith ( "OLD-" ) ) {
// 新增停机记录代表进入停机,三色灯置为“暂停”
insertTriColorStatusParams ( deviceCode , shutDown . getDeviceId ( ) , false ) ;
}
// 对指定设备( OLD-01~OLD-05) 同步写入三色灯状态参数, 供设备状态统计使用
String deviceCode = shutDown . getDeviceCode ( ) ;
if ( deviceCode ! = null & & deviceCode . startsWith ( "OLD-" ) ) {
// 新增停机记录代表进入停机,三色灯置为“暂停”
insertTriColorStatusParams ( deviceCode , shutDown . getDeviceId ( ) , false ) ;
}
return success ( rows ) ;
return success ( rows ) ;
} catch ( Exception e ) {
log . error ( "PDA新增停机记录失败 | deviceCode={}, shutReason={}, deviceId={}, 异常信息: {}" ,
shutDown . getDeviceCode ( ) , shutDown . getShutReason ( ) , shutDown . getDeviceId ( ) , e . getMessage ( ) , e ) ;
throw new ServiceException ( "新增停机记录失败: " + e . getMessage ( ) ) ;
}
}
/ * *
* PDA - 更 新 停 机 记 录 : 设 置 结 束 时 间 并 计 算 停 机 时 长 ( 秒 )
* PDA - 获 取 待 处 理 停 机 记 录 列 表
* 返 回 条 件 : 停 机 结 束 时 间 为 空 ( 老 设 备 未 完 成 ) 或 停 机 原 因 ID = 1 ( 新 设 备 默 认 原 因 待 修 改 )
* /
@GetMapping ( "/shutDown/get" )
public AjaxResult getShutDownForPda ( ) {
try {
List < DmsRecordShutDown > list = dmsRecordShutDownService . selectPdaShutDownList ( ) ;
return success ( list ) ;
} catch ( Exception e ) {
log . error ( "PDA获取待处理停机记录失败 | 异常信息: {}" , e . getMessage ( ) , e ) ;
throw new ServiceException ( "获取停机记录失败: " + e . getMessage ( ) ) ;
}
}
/ * *
* PDA - 更 新 停 机 记 录
* 老 设 备 ( shutEndTime 为 空 ) : 更 新 停 机 结 束 时 间 、 计 算 停 机 时 长 、 更 新 停 机 原 因 ID
* 新 设 备 ( shutEndTime 不 为 空 ) : 仅 更 新 停 机 原 因 ID
* /
@PostMapping ( "/shutDown/complete" )
@Transactional ( rollbackFor = Exception . class )
public AjaxResult completeShutDownForPda ( @RequestBody DmsRecordShutDown shutDown ) {
if ( shutDown . getRecordShutDownId ( ) = = null ) {
return error ( "recordShutDownId不能为空" ) ;
throw new ServiceException ( "recordShutDownId不能为空" ) ;
}
// 查询原记录以获取开始时间
DmsRecordShutDown origin = dmsRecordShutDownService . selectDmsRecordShutDownByRecordShutDownId ( shutDown . getRecordShutDownId ( ) ) ;
if ( origin = = null ) {
return error ( "停机记录不存在" ) ;
if ( shutDown . getShutReasonId ( ) = = null ) {
throw new ServiceException ( "shutReasonId不能为空" ) ;
}
try {
// 查询原记录
DmsRecordShutDown origin = dmsRecordShutDownService . selectDmsRecordShutDownByRecordShutDownId ( shutDown . getRecordShutDownId ( ) ) ;
if ( origin = = null ) {
throw new ServiceException ( "停机记录不存在" ) ;
}
Date end = new Date ( ) ;
Date begin = origin . getShutBeginTime ( ) ;
shutDown . setShutEndTime ( end ) ;
if ( begin ! = null ) {
long minutes = Math . max ( 0 , ( end . getTime ( ) - begin . getTime ( ) ) / 60000 ) ;
shutDown . setShutTime ( BigDecimal . valueOf ( minutes ) ) ;
}
// 构建更新对象,仅设置需要更新的字段
DmsRecordShutDown updateRecord = new DmsRecordShutDown ( ) ;
updateRecord . setRecordShutDownId ( shutDown . getRecordShutDownId ( ) ) ;
updateRecord . setShutReasonId ( shutDown . getShutReasonId ( ) ) ;
int rows = dmsRecordShutDownService . updateDmsRecordShutDown ( shutDown ) ;
// 对指定设备( OLD-01~OLD-05) 同步写入三色灯状态参数, 供设备状态统计使用
String deviceCode = shutDown . getDeviceCode ( ) ! = null ? shutDown . getDeviceCode ( ) : origin . getDeviceCode ( ) ;
Long deviceId = shutDown . getDeviceId ( ) ! = null ? shutDown . getDeviceId ( ) : origin . getDeviceId ( ) ;
if ( deviceCode ! = null & & deviceCode . startsWith ( "OLD-" ) ) {
// 完成停机代表重新运行,三色灯置为“运行”
insertTriColorStatusParams ( deviceCode , deviceId , true ) ;
if ( origin . getShutEndTime ( ) = = null ) {
// 老设备:标记停机已结束
updateRecord . setDowntimeFlag ( "1" ) ;
// 老设备:补充结束时间和停机时长
Date end = new Date ( ) ;
Date begin = origin . getShutBeginTime ( ) ;
updateRecord . setShutEndTime ( end ) ;
if ( begin ! = null ) {
long minutes = Math . max ( 0 , ( end . getTime ( ) - begin . getTime ( ) ) / 60000 ) ;
updateRecord . setShutTime ( BigDecimal . valueOf ( minutes ) ) ;
}
}
// 新设备( shutEndTime已有值) : 仅更新shutReasonId, 无需额外处理
int rows = dmsRecordShutDownService . updateDmsRecordShutDown ( updateRecord ) ;
// 对老设备( OLD-01~OLD-05) 同步写入三色灯状态参数
if ( origin . getShutEndTime ( ) = = null & & origin . getDeviceId ( ) ! = null ) {
// 原记录不含deviceCode, 需通过deviceId反查设备编号
BaseDeviceLedger deviceQuery = new BaseDeviceLedger ( ) ;
deviceQuery . setObjId ( origin . getDeviceId ( ) ) ;
List < BaseDeviceLedger > devices = baseDeviceLedgerService . selectBaseDeviceLedgerList ( deviceQuery ) ;
if ( ! devices . isEmpty ( ) ) {
String deviceCode = devices . get ( 0 ) . getDeviceCode ( ) ;
if ( deviceCode ! = null & & deviceCode . startsWith ( "OLD-" ) ) {
// 完成停机代表重新运行,三色灯置为"运行"
insertTriColorStatusParams ( deviceCode , origin . getDeviceId ( ) , true ) ;
}
}
}
return rows > 0 ? success ( origin . getRecordShutDownId ( ) ) : error ( "更新停机记录失败" ) ;
} catch ( Exception e ) {
log . error ( "PDA完成停机记录失败 | recordShutDownId={}, shutReasonId={}, 异常信息: {}" ,
shutDown . getRecordShutDownId ( ) , shutDown . getShutReasonId ( ) , e . getMessage ( ) , e ) ;
throw new ServiceException ( "完成停机失败: " + e . getMessage ( ) ) ;
}
return rows > 0 ? success ( origin . getRecordShutDownId ( ) ) : error ( "更新停机记录失败" ) ;
}
/ * *
@ -361,9 +429,9 @@ public class DmsMobileController extends BaseController {
List < BaseDeviceParamVal > records = new ArrayList < > ( ) ;
String runVal = running ? "True" : "False" ;
String pauseVal = running ? "False" : "True" ;
records . add ( buildParamVal ( " 295 ", deviceCode , resolvedDeviceId , "机台状态-三色灯机器运行" , runVal , now ) ) ;
records . add ( buildParamVal ( " 296 ", deviceCode , resolvedDeviceId , "机台状态-三色灯机器暂停" , pauseVal , now ) ) ;
records . add ( buildParamVal ( " 297 ", deviceCode , resolvedDeviceId , "机台状态-三色灯机器报警" , "False" , now ) ) ;
records . add ( buildParamVal ( " 991 ", deviceCode , resolvedDeviceId , "机台状态-三色灯机器运行" , runVal , now ) ) ;
records . add ( buildParamVal ( " 992 ", deviceCode , resolvedDeviceId , "机台状态-三色灯机器暂停" , pauseVal , now ) ) ;
records . add ( buildParamVal ( " 993 ", deviceCode , resolvedDeviceId , "机台状态-三色灯机器报警" , "False" , now ) ) ;
for ( BaseDeviceParamVal rec : records ) {
baseDeviceParamValService . insertBaseDeviceParamVal ( rec ) ;