@ -306,26 +306,29 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
* 关 闭 母 工 单 , 关 闭 子 工 单
* * 一 层 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* * 工 单 进 行 报 工 的 时 候 公 式 调 整 如 下 ( 数 值 单 位 不 用 管 ) :
* * 机 器 = 开 机 时 长
* * 人 工 = 用 人 数 * 机 器 ( 开 机 时 长 )
* * 产 量 = sum ( 每 批 次 半 成 品 的 产 量 ) 【 单 位 pc 】
* * 机 器 = sum ( 工 时 数 ) 【 设 备 开 机 时 间 】
* * 人 工 = sum ( 每 批 的 工 时 数 * 每 批 用 人 数 )
* * 折 旧 = 机 器
* * 其 它 = 人 工
* * 二 层 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* * 子 单 进 行 报 工 的 时 候 公 式 调 整 如 下 ( 数 值 单 位 不 用 管 ) :
* * 机 器 = sum ( 工 时 数 )
* * 人 工 = 用 人 数 * 机 器
* * 产 量 = sum ( 每 批 次 半 成 品 的 产 量 ) 【 单 位 pc 】
* * 机 器 = sum ( 工 时 数 ) 【 设 备 开 机 时 间 】
* * 人 工 = sum ( 人 数 * 开 机 时 间 ) 【 人 数 为 每 批 次 的 产 线 人 数 , 开 机 时 间 为 每 批 次 工 时 】
* * 折 旧 = 机 器
* * 其 它 = 人 工
* * < p >
* * 母 单 进 行 报 工 的 时 候 公 式 调 整 如 下 :
* * 机 器 = sum ( 工 时 数 )
* * 人 工 = 4 * sum ( 工 时 数 )
* * 产 量 = sum ( 每 批 次 半 成 品 的 产 量 ) 【 单 位 pc 】
* * 机 器 = sum ( 工 时 数 ) 【 设 备 开 机 时 间 】
* * 人 工 = 4 * sum ( 开 机 时 间 ) 【 人 数 固 定 为 4 人 , 可 修 改 】
* * 折 旧 = 机 器
* * 其 它 = 人 工
* * 三 层 及 其 以 上 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* * 工 单 进 行 报 工 的 时 候 公 式 调 整 如 下 ( 数 值 单 位 不 用 管 ) , 根 据 上 位 机 用 户 真 实 填 的 来 :
* * 机 器 = 开 机 时 长
* * 人 工 = 人 工
* * 机 器 = sum ( 工 时 数 ) 【 设 备 开 机 时 间 】
* * 人 工 = sum ( 人 数 * 开 机 时 间 )
* * 折 旧 = 机 器
* * 其 它 = 人 工
* @param mesReportWork
@ -343,19 +346,28 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
if ( CollectionUtils . isEmpty ( workOrders ) ) {
return R . fail ( "子母工单信息缺失" ) ;
}
/**修改sap物料损耗组成**/
R updateBomsSap = this . updateAttr1BomsSap ( workOrders ) ;
if ( updateBomsSap . getCode ( ) = = 500 ) {
return updateBomsSap ;
}
R sapRson = null ;
if ( workOrders . size ( ) = = 1 ) {
/**(一层报工)工单报工**/
mesReportWork . setUploadStatus ( "1" ) ; //除了1报工成功的, 都需要报工
mesReportWork . setProdType ( "prod" ) ;
mesReportWork . setWorkorderCode ( workOrders . get ( 0 ) . getWorkorderCode ( ) ) ;
MesReportWork sHzWorks = mesReportWorkMapper . getReportWorkHz1 ( mesReportWork ) ;
MesReportWork sHzWorks = mesReportWorkMapper . getReportWorkHz ( mesReportWork ) ;
if ( sHzWorks = = null ) {
return R . fail ( "未查询到一层报工单" ) ;
}
//机器=sum(工时数) 【设备开机时间】 Sac1
//人工 = sum( 每批的工时数*每批用人数) Sac2
//子工单报工
logger . info ( "==========================一层工单报工开始" ) ;
sapRson = this . reportHzToSap ( sHzWorks ,1 );
sapRson = this . reportHzToSap ( sHzWorks );
logger . info ( "==========================一层工单报工结束:" + JSONObject . toJSONString ( sapRson ) ) ;
} else if ( workOrders . size ( ) = = 2 ) {
/**(两层报工)子工单先报工,然后母工单报工**/
@ -368,7 +380,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
}
//子工单报工
logger . info ( "==========================子工单报工开始" ) ;
sapRson = this . reportHzToSap ( sHzWorks ,2 );
sapRson = this . reportHzToSap ( sHzWorks );
logger . info ( "==========================子工单报工结束:" + JSONObject . toJSONString ( sapRson ) ) ;
if ( sapRson . getCode ( ) = = 200 ) {
//一定是子单报工成功返回后,再母单报工
@ -385,25 +397,32 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
//母工单报工
logger . info ( "==========================母工单报工开始" ) ;
pHzWork . setQuantityFeedback ( sHzWorks . getQuantityFeedback ( ) ) ;
pHzWork . setSac2 ( "4" ) ; //母单报工固定值
R sapR = this . reportHzToSap ( pHzWork ,2 );
//pHzWork.setSac2("4");//母单报工固定值(上位机插入数据时候默认4)
R sapR = this . reportHzToSap ( pHzWork );
logger . info ( "==========================母工单报工结束" + JSONObject . toJSONString ( sapR ) ) ;
return sapR ;
}
} else if ( workOrders . size ( ) > = 3 ) {
for ( MesReportWork workOrder : workOrders ) {
MesReportWork hzWorks = null ;
for ( int n = 0 ; n < workOrders . size ( ) ; n + + ) {
MesReportWork workOrder = workOrders . get ( n ) ;
mesReportWork . setUploadStatus ( "1" ) ; //除了1报工成功的, 都需要报工
mesReportWork . setProdType ( "prod" ) ;
mesReportWork . setWorkorderCode ( workOrder . getWorkorderCode ( ) ) ;
MesReportWork sHzWorks = mesReportWorkMapper . getReportWorkHz 1 ( mesReportWork ) ;
MesReportWork sHzWorks = mesReportWorkMapper . getReportWorkHz ( mesReportWork ) ;
if ( sHzWorks = = null ) {
return R . fail ( workOrder . getWorkorderCode ( ) + "未查询到报工单" ) ;
}
if ( n = = 0 ) {
hzWorks = sHzWorks ;
}
//三层以上工单报工
logger . info ( "==========================三层以上工单(" + sHzWorks . getWorkorderCodeSap ( ) + ")报工开始" ) ;
sapRson = this . reportHzToSap ( sHzWorks , 3 ) ;
logger . info ( "==========================三层以上工单(" + sHzWorks . getWorkorderCodeSap ( ) + ")报工结束:"
logger . info ( "==========================三层(第" + n + "层)以上工单(" + sHzWorks . getWorkorderCodeSap ( ) + ")报工开始" ) ;
sHzWorks . setQuantityFeedback ( hzWorks . getQuantityFeedback ( ) ) ;
sapRson = this . reportHzToSap ( sHzWorks ) ;
logger . info ( "==========================三层(第" + n + "层)以上工单(" + sHzWorks . getWorkorderCodeSap ( ) + ")报工结束:"
+ JSONObject . toJSONString ( sapRson ) ) ;
if ( sapRson . getCode ( ) = = 200 ) {
try {
@ -421,31 +440,48 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
}
return sapRson ;
}
//修改报工物料组成
private R updateAttr1BomsSap ( List < MesReportWork > workOrderCodes ) {
//是否有变动的物料损耗组成
List < MesReportWorkConsume > updateBoms = mesReportWorkMapper . getUpdateAttr1Boms ( workOrderCodes . get ( workOrderCodes . size ( ) - 1 ) ) ;
if ( ! CollectionUtils . isEmpty ( updateBoms ) ) {
List < Map < String , Object > > mapList = new ArrayList < > ( ) ;
Map < String , Object > mapBom = null ;
for ( MesReportWorkConsume updateBom : updateBoms ) {
mapBom = new HashMap < String , Object > ( ) ;
mapBom . put ( "P_AUFNR" , updateBom . getWorkorderCodeSap ( ) ) ; // 订单号 例如: 000100308287
mapBom . put ( "P_MATNR" , updateBom . getMaterialCode ( ) ) ; // 物料号 例如: 000000040000015089
mapBom . put ( "P_GMEIN" , updateBom . getUnit ( ) ) ; // 基本计量单位 例如: m
mapBom . put ( "P_WERKS" , workOrderCodes . get ( 0 ) . getFactoryCode ( ) ) ; //物料工厂 例如: 1000
mapBom . put ( "P_LGORT" , updateBom . getWarehouseCode ( ) ) ; //仓库编号 例如: 0013
mapList . add ( mapBom ) ;
}
logger . info ( workOrderCodes . get ( workOrderCodes . size ( ) - 1 ) . getWorkorderCode ( )
+ "报工损耗物料组件修改请求:" + JSONObject . toJSONString ( mapList ) ) ;
R bomUpdateR = remoteSapService . shopOrderBomUpdate ( mapList ) ;
logger . info ( workOrderCodes . get ( workOrderCodes . size ( ) - 1 ) . getWorkorderCode ( )
+ "报工损耗物料组件修改结果:" + JSONObject . toJSONString ( bomUpdateR ) ) ;
return bomUpdateR ;
}
return R . ok ( ) ;
}
/ * *
*
* @param workOrder
* @return
* /
private R reportHzToSap ( MesReportWork workOrder , int cengji ) {
private R reportHzToSap ( MesReportWork workOrder ) {
Date nowTime = DateUtils . getNowDate ( ) ;
SapRFW sapRFW = new SapRFW ( ) ;
sapRFW . setAufnr ( workOrder . getWorkorderCodeSap ( ) ) ; //虚拟工单号
sapRFW . setGamng ( workOrder . getQuantityFeedback ( ) . toString ( ) ) ; //报工数量
SapRFW . lt_gs ltgs = new SapRFW . lt_gs ( ) ; //生产订单报工工时修改
ltgs . setConf_activity1 ( workOrder . getSac1 ( ) ) ; //机器
BigDecimal newMan = null ;
if ( cengji = = 3 ) {
//订单是三层的情况
newMan = new BigDecimal ( workOrder . getSac2 ( ) ) ;
} else {
//订单是一层、二层的情况
newMan = new BigDecimal ( workOrder . getSac1 ( ) )
. multiply ( new BigDecimal ( workOrder . getSac2 ( ) ) ) ;
}
ltgs . setConf_activity2 ( newMan . toString ( ) ) ; //人工
ltgs . setConf_activity2 ( workOrder . getSac2 ( ) ) ; //人工
ltgs . setConf_activity3 ( workOrder . getSac1 ( ) ) ; //折旧
ltgs . setConf_activity4 ( newMan . toString ( ) ) ; //其它
ltgs . setConf_activity4 ( workOrder . getSac2 ( ) ) ; //其它
// ltgs.setConf_activity5(workOrder.getSac5());
// ltgs.setConf_activity6(workOrder.getSac6());
sapRFW . setLt_gs ( ltgs ) ;
@ -481,6 +517,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
mesReportWorkMapper . updateSyncSapStatus ( workOrder ) ;
return r ;
// return R.ok();//测试
}