@ -483,7 +483,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} catch ( ImppBusiException busExcep ) {
} catch ( ImppBusiException busExcep ) {
MesException . throwMesBusiException ( busExcep . getErrorDetail ( ) ) ;
MesException . throwMesBusiException ( busExcep . getErrorDetail ( ) ) ;
} catch ( Exception e ) {
} catch ( Exception e ) {
MesException . throwMesBusiException ( "计划日期格式异常 ") ;
MesException . throwMesBusiException ( "计划日期格式异常 ,日期格式应为:%s ", DateUtil . SHORT_FORMAT ) ;
}
}
//查询班次信息
//查询班次信息
List < MesShift > mesShifts = mesShiftMap . get ( item . getWorkCenterCode ( ) + item . getShiftCode ( ) ) ;
List < MesShift > mesShifts = mesShiftMap . get ( item . getWorkCenterCode ( ) + item . getShiftCode ( ) ) ;
@ -847,12 +847,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//查询物料信息
//查询物料信息
MesPart mesPart = iMesPartService . getPartByPartNo ( mesWorkOrderDb . getPartNo ( ) , mesWorkOrderDb . getOrganizeCode ( ) ) ;
MesPart mesPart = iMesPartService . getPartByPartNo ( mesWorkOrderDb . getPartNo ( ) , mesWorkOrderDb . getOrganizeCode ( ) ) ;
//查询产线信息
//查询产线信息
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( mesWorkOrderDb . getOrganizeCode ( ) ) ;
MesWorkCenter mesWorkCenter = getMesWorkCenter ( mesWorkOrderDb . getOrganizeCode ( ) , mesWorkOrderDb . getWorkCenterCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrderDb . getWorkCenterCode ( ) , "workCenterCode" , ddlPackBean ) ;
MesWorkCenter mesWorkCenter = mesWorkCenterRDao . getByProperty ( ddlPackBean ) ;
if ( Objects . isNull ( mesWorkCenter ) ) {
MesException . throwMesBusiException ( "产线【%s】不存在" , mesWorkOrderDb . getWorkCenterCode ( ) ) ;
}
//获取生产版本
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion ( mesWorkOrderDb ) ;
MesProductVersion mesProductVersion = getMesProductVersion ( mesWorkOrderDb ) ;
//物料+生产版本获取bom信息
//物料+生产版本获取bom信息
@ -864,25 +859,22 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
double unCompleteQty = MathOperation . sub ( mesWorkOrderDb . getQty ( ) , mesWorkOrderDb . getReportedQty ( ) ) ;
double unCompleteQty = MathOperation . sub ( mesWorkOrderDb . getQty ( ) , mesWorkOrderDb . getReportedQty ( ) ) ;
mesWorkOrderDb . setUnCompleteQty ( unCompleteQty > 0 ? unCompleteQty : 0 ) ;
mesWorkOrderDb . setUnCompleteQty ( unCompleteQty > 0 ? unCompleteQty : 0 ) ;
if ( mesWorkOrderDb . getReportedQty ( ) > mesWorkOrderDb . getQty ( ) ) {
if ( mesWorkOrderDb . getReportedQty ( ) > mesWorkOrderDb . getQty ( ) ) {
//查询产线信息
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( mesWorkOrder . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrder . getWorkCenterCode ( ) , "workCenterCode" , packBean ) ;
MesWorkCenter workCenter = mesWorkCenterRDao . getByProperty ( packBean ) ;
// 以下则是超工单逻辑
// 以下则是超工单逻辑
// 如果产线中没有配置超工单,则直接阻断
// 如果产线中没有配置超工单,则直接阻断
if ( ! Objects . equals ( CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) , w orkCenter. getIsCheckOrderQty ( ) ) ) {
if ( ! Objects . equals ( CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) , mesWorkCenter . getIsCheckOrderQty ( ) ) ) {
MesException . throwMesBusiException ( "请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!" , mesWorkOrder . getWorkOrderNo ( ) , mesWorkOrder . getQty ( ) , mesWorkOrder . getReportedQty ( ) ) ;
MesException . throwMesBusiException ( "请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!" , mesWorkOrder . getWorkOrderNo ( ) , mesWorkOrder . getQty ( ) , mesWorkOrder . getReportedQty ( ) ) ;
}
}
// 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断
// 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断
double rate = MathOperation . div ( ( mesWorkOrderDb . getReportedQty ( ) - mesWorkOrderDb . getQty ( ) ) , mesWorkOrderDb . getQty ( ) ) ;
double rate = MathOperation . div ( ( mesWorkOrderDb . getReportedQty ( ) - mesWorkOrderDb . getQty ( ) ) , mesWorkOrderDb . getQty ( ) ) ;
if ( rate > MathOperation . div ( w orkCenter. getOrderRate ( ) , 100 ) ) {
if ( rate > MathOperation . div ( mesW orkCenter. getOrderRate ( ) , 100 ) ) {
MesException . throwMesBusiException ( "请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!" , mesWorkOrder . getWorkOrderNo ( ) , mesWorkOrder . getQty ( ) , mesWorkOrder . getReportedQty ( ) , w orkCenter. getOrderRate ( ) ) ;
MesException . throwMesBusiException ( "请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!" , mesWorkOrder . getWorkOrderNo ( ) , mesWorkOrder . getQty ( ) , mesWorkOrder . getReportedQty ( ) , mesW orkCenter. getOrderRate ( ) ) ;
}
}
mesWorkOrder . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . COMPLETE . getValue ( ) ) ;
mesWorkOrder . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . COMPLETE . getValue ( ) ) ;
} else if ( Objects . equals ( mesWorkOrderDb . getReportedQty ( ) , mesWorkOrderDb . getQty ( ) ) ) {
} else if ( Objects . equals ( mesWorkOrderDb . getReportedQty ( ) , mesWorkOrderDb . getQty ( ) ) ) {
mesWorkOrderDb . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . COMPLETE . getValue ( ) ) ;
mesWorkOrderDb . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . COMPLETE . getValue ( ) ) ;
} else {
} else {
mesWorkOrderDb . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . PROCESS . getValue ( ) ) ;
mesWorkOrderDb . setWorkOrderStatus ( mesWorkOrder . getWorkOrderStatus ( ) = = MesExtEnumUtil . ORDER_STATUS . CLOSE . getValue ( ) ?
MesExtEnumUtil . ORDER_STATUS . CLOSE . getValue ( ) : MesExtEnumUtil . ORDER_STATUS . PROCESS . getValue ( ) ) ;
}
}
mesWorkOrderDb . setCompleteQty ( mesWorkOrderDb . getReportedQty ( ) ) ;
mesWorkOrderDb . setCompleteQty ( mesWorkOrderDb . getReportedQty ( ) ) ;
} else {
} else {
@ -902,7 +894,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String sn = getStringList ( mesWorkOrder ) ;
String sn = getStringList ( mesWorkOrder ) ;
//保存数据
//保存数据
List < MesProductOffLine > mesProductOffLineList = new ArrayList < > ( ) ;
List < MesProductOffLine > mesProductOffLineList = new ArrayList < > ( ) ;
String nowTime = TimeTool . getNowTime ( true ) ;
String nowTime = StringUtil . isEmpty ( mesWorkOrder . getDescription ( ) ) ? TimeTool . getNowTime ( true ) : mesWorkOrder . getDescription ( ) ;
for ( MesBom mesBom : mesBoms ) {
for ( MesBom mesBom : mesBoms ) {
mesProductOffLineList . add ( creatMesProductOffLine ( mesWorkOrder , mesProductVersion , sn , mesBom , false , nowTime ) ) ;
mesProductOffLineList . add ( creatMesProductOffLine ( mesWorkOrder , mesProductVersion , sn , mesBom , false , nowTime ) ) ;
}
}
@ -921,6 +914,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if ( mesWorkOrderNew . getNum ( ) < = 0 ) {
if ( mesWorkOrderNew . getNum ( ) < = 0 ) {
MesException . throwMesBusiException ( "工单报工数量不能为0,不允许报工" ) ;
MesException . throwMesBusiException ( "工单报工数量不能为0,不允许报工" ) ;
}
}
//查询产线信息
MesWorkCenter workCenter = getMesWorkCenter ( mesWorkOrder . getOrganizeCode ( ) , mesWorkOrder . getWorkCenterCode ( ) ) ;
//报工类型
//报工类型
//报工
//报工
if ( MesExtEnumUtil . REPORT_TYPE . REPORT . getValue ( ) = = mesWorkOrderNew . getReportType ( ) ) {
if ( MesExtEnumUtil . REPORT_TYPE . REPORT . getValue ( ) = = mesWorkOrderNew . getReportType ( ) ) {
@ -929,10 +924,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
double unCompleteQty = MathOperation . sub ( mesWorkOrder . getQty ( ) , mesWorkOrder . getReportedQty ( ) ) ;
double unCompleteQty = MathOperation . sub ( mesWorkOrder . getQty ( ) , mesWorkOrder . getReportedQty ( ) ) ;
mesWorkOrder . setUnCompleteQty ( unCompleteQty > 0 ? unCompleteQty : 0 ) ;
mesWorkOrder . setUnCompleteQty ( unCompleteQty > 0 ? unCompleteQty : 0 ) ;
if ( mesWorkOrder . getReportedQty ( ) > mesWorkOrder . getQty ( ) ) {
if ( mesWorkOrder . getReportedQty ( ) > mesWorkOrder . getQty ( ) ) {
//查询产线信息
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( mesWorkOrder . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrder . getWorkCenterCode ( ) , "workCenterCode" , ddlPackBean ) ;
MesWorkCenter workCenter = mesWorkCenterRDao . getByProperty ( ddlPackBean ) ;
// 以下则是超工单逻辑
// 以下则是超工单逻辑
// 如果产线中没有配置超工单,则直接阻断
// 如果产线中没有配置超工单,则直接阻断
if ( ! Objects . equals ( CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) , workCenter . getIsCheckOrderQty ( ) ) ) {
if ( ! Objects . equals ( CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) , workCenter . getIsCheckOrderQty ( ) ) ) {
@ -1285,6 +1276,15 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return newMesProductOffLine ;
return newMesProductOffLine ;
}
}
private MesWorkCenter getMesWorkCenter ( String organizeCode , String workCenterCode ) {
MesWorkCenter mesWorkCenter = workCenterService . getWorkCenterDb ( organizeCode , workCenterCode ) ;
if ( Objects . isNull ( mesWorkCenter ) ) {
MesException . throwMesBusiException ( "产线【%s】不存在" , workCenterCode ) ;
}
return mesWorkCenter ;
}
@Override
@Override
public List < MesWorkOrderModel > sumMesWorkOrderQtyToSap ( String organizeCode ) {
public List < MesWorkOrderModel > sumMesWorkOrderQtyToSap ( String organizeCode ) {
//查询汇总工单数量
//查询汇总工单数量