@ -1,13 +1,10 @@
import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack
import cn.estsh.i3plus.pojo.mes.bean.MesEquipment
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder
import cn.estsh.i3plus.pojo.base.util.StringUtil
import cn.estsh.i3plus.pojo.mes.bean.*
import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRepository
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository
import cn.estsh.i3plus.pojo.mes.repository.*
import lombok.Getter
import lombok.Setter
import org.slf4j.Logger
@ -51,24 +48,37 @@ class MesProductionRecordToPisces {
@Setter
private Connection mesConn ;
@Autowired
private MesWorkCenterRepository mesWorkCenterRepository ;
@Autowired
private MesWorkCellRepository mesWorkCellRepository ;
@Autowired
private MesProcessRepository mesProcessRepository ;
def filterData ( MesInterfaceDataMapper mapper , List < Map < String , Object > > srcData ) throws Exception {
if ( srcData = = null | | srcData . size ( ) = = 0 ) {
return srcData
}
String organizeCode = mapper . getOrganizeCode ( ) ;
Map < String , MesWorkCenter > mesWorkCenterMap = new HashMap < > ( ) ;
Map < String , MesWorkCell > mesWorkCellMap = new HashMap < > ( ) ;
Map < String , MesProcess > mesProcessMap = new HashMap < > ( ) ;
List < String > updateList = new ArrayList < > ( ) ;
List < Map < String , Object > > destData = new ArrayList < > ( ) ;
for ( Map < String , Object > rowMap : srcData ) {
Map < String , Object > params = new HashMap < > ( ) ;
params . put ( "partNo" , rowMap . get ( "part_no" ) )
params . put ( "productSn" , rowMap . get ( "product_sn" ) )
String sql = "select ID from MES.TT_PC_PART_BARCODE where PART_NO = :partNo and BARCODE = :productSn order by GENERATION_TIME desc";
List < Map < String , Object > > dataMap = queryDataTable ( sql , params ) ;
params . put ( "partNo" , rowMap . get ( "part_no" ) )
params . put ( "productSn" , rowMap . get ( "product_sn" ) )
String sql = "select top 1 ID from MES.TT_PC_PART_BARCODE where PART_NO = :partNo and BARCODE = :productSn order by GENERATION_TIME desc";
List < Map < String , Object > > dataMap = queryDataTable ( sql , params ) ;
if ( ! CollectionUtils . isEmpty ( dataMap ) & & dataMap . size ( ) > 0 ) {
if ( ! CollectionUtils . isEmpty ( dataMap ) & & dataMap . size ( ) > 0 ) {
rowMap . put ( "BARCODE_ID" , dataMap . iterator ( ) . next ( ) . get ( "ID" ) )
updateList . add ( "update mes_production_record set system_sync_status = 1 where id= " + rowMap . get ( "id" ) + " ;" )
} else {
updateList . add ( "update mes_production_record set system_sync_status = 1 where id= " + rowMap . get ( "id" ) + " ;" )
} else {
continue
}
String workCenterCode = String . valueOf ( rowMap . get ( "work_center_code" ) ) ;
@ -83,6 +93,48 @@ class MesProductionRecordToPisces {
} else {
rowMap . put ( "WORK_ORDER_FID" , null )
}
// 工 作 中 心
MesWorkCenter mesWorkCenter = getMesWorkCenter ( organizeCode , workCenterCode , mesWorkCenterMap )
if ( ! Objects . isNull ( mesWorkCenter ) ) {
rowMap . put ( "work_center_code" , mesWorkCenter . getDescription ( ) )
} else {
LOGGER . info ( "工作中心{},信息不存在" , workCenterCode )
}
// 工 位
if ( ! StringUtil . isEmpty ( rowMap . get ( "work_cell_code" ) ) ) {
String workCellCode = String . valueOf ( rowMap . get ( "work_cell_code" ) ) ;
MesWorkCell mesWorkCell = getMesWorkCell ( organizeCode , workCellCode , mesWorkCellMap )
if ( ! Objects . isNull ( mesWorkCell ) ) {
rowMap . put ( "work_cell_code" , mesWorkCell . getDescription ( ) )
} else {
LOGGER . info ( "工位{},信息不存在" , workCellCode )
}
}
// 工 序 信 息
if ( ! StringUtil . isEmpty ( rowMap . get ( "process_code" ) ) ) {
String processCode = String . valueOf ( rowMap . get ( "process_code" ) ) ;
MesProcess mesProcess = getMesProcess ( organizeCode , processCode , mesProcessMap )
if ( ! Objects . isNull ( mesProcess ) ) {
rowMap . put ( "process_code" , mesProcess . getDescription ( ) )
} else {
LOGGER . info ( "工序{},信息不存在" , processCode )
}
}
// 开 班 记 录
if ( ! StringUtil . isEmpty ( rowMap . get ( "work_center_code" ) ) & & ! StringUtil . isEmpty ( rowMap . get ( "process_code" ) ) & & ! StringUtil . isEmpty ( rowMap . get ( "shift_code" ) ) ) {
params = new HashMap < > ( ) ;
params . put ( "workCenterCode" , rowMap . get ( "work_center_code" ) )
params . put ( "processCode" , rowMap . get ( "process_code" ) )
params . put ( "shiftCode" , 1 = = Integer . parseInt ( rowMap . get ( "shift_code" ) . toString ( ) ) . intValue ( ) ? "早班" : "晚班" )
sql = "select top 1 ID from MES.TL_PS_SHIFT_START where ASSEMBLY_LINE = :workCenterCode and SHIFT_NAME = :shiftCode and SHIFT_GROUP_CODE = :processCode order by ID desc" ;
dataMap = queryDataTable ( sql , params ) ;
if ( ! CollectionUtils . isEmpty ( dataMap ) & & dataMap . size ( ) > 0 ) {
rowMap . put ( "SHIFT_START_ID" , dataMap . iterator ( ) . next ( ) . get ( "ID" ) )
}
}
if ( StringUtil . isEmpty ( rowMap . get ( "SHIFT_START_ID" ) ) ) {
rowMap . put ( "SHIFT_START_ID" , null )
}
String equipmentCode = String . valueOf ( rowMap . get ( "equipment_code" ) ) ;
MesEquipment equipmentDb = getEquipmentDb ( mapper . getOrganizeCode ( ) , equipmentCode ) ;
@ -93,23 +145,15 @@ class MesProductionRecordToPisces {
}
// 更 新 同 步 标 识
if ( ! CollectionUtils . isEmpty ( updateList ) & & updateList . size ( ) > 0 ) {
if ( ! CollectionUtils . isEmpty ( updateList ) & & updateList . size ( ) > 0 ) {
this . mesConn = mesDataSource . getWriteConnectionWithoutPool ( ) ;
mesDataSource . executeAsBatch ( updateList , mesConn )
mesDataSource . executeAsBatch ( updateList , mesConn )
mesDataSource . closeConnectionWithoutPoll ( this . mesConn )
}
return destData ;
}
def getProduceSnDb ( String organizeCode , String productSn , String partNo ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( productSn , "productSn" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( partNo , "partNo" , ddlPackBean ) ;
MesProduceSn produceSnDb = produceSnRepository . getByProperty ( ddlPackBean ) ;
return produceSnDb ;
}
MesWorkOrder getWorkOrderDb ( String organizeCode , String workOrderNo ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , "workOrderNo" , ddlPackBean ) ;
@ -130,4 +174,32 @@ class MesProductionRecordToPisces {
return dataMap ;
}
private MesWorkCenter getMesWorkCenter ( String organizeCode , String workCenterCode , Map < String , MesWorkCenter > mesWorkCenterMap ) {
if ( Objects . isNull ( mesWorkCenterMap ) | | ! mesWorkCenterMap . containsKey ( workCenterCode ) ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , ddlPackBean ) ;
mesWorkCenterMap . put ( workCenterCode , mesWorkCenterRepository . getByProperty ( ddlPackBean ) )
}
return mesWorkCenterMap . get ( workCenterCode ) ;
}
private MesWorkCell getMesWorkCell ( String organizeCode , String workCenterCell , Map < String , MesWorkCell > mesWorkCellMap ) {
if ( Objects . isNull ( mesWorkCellMap ) | | ! mesWorkCellMap . containsKey ( workCenterCell ) ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCell , "workCellCode" , ddlPackBean ) ;
mesWorkCellMap . put ( workCenterCell , mesWorkCellRepository . getByProperty ( ddlPackBean ) )
}
return mesWorkCellMap . get ( workCenterCell ) ;
}
private MesProcess getMesProcess ( String organizeCode , String processCode , Map < String , MesProcess > mesProcessMap ) {
if ( Objects . isNull ( mesProcessMap ) | | ! mesProcessMap . containsKey ( processCode ) ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( processCode , "processCode" , ddlPackBean ) ;
mesProcessMap . put ( processCode , mesProcessRepository . getByProperty ( ddlPackBean ) )
}
return mesProcessMap . get ( processCode ) ;
}
}