@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi ;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService ;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService ;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService ;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.* ;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.printqueue.IPrintQueueStrategyService ;
@ -111,6 +112,9 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
@Autowired
private IMesPackageExtService packageExtService ;
@Autowired
private IMesProdOrgExtService mesProdOrgExtService ;
// 仅查询
public static final Integer CUT_QUERY_MODE_BY_QUERY = 1 ;
// 打印
@ -138,8 +142,25 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
@Override
public MesProduceSn findMesProduceSn ( MesProduceSnPrintModel mesProduceSnPrintModel ) {
MesProduceSn mesProduceSn = findMesProduceSnBySnLog ( mesProduceSnPrintModel ) ;
MesWorkCenter mesWorkCenter = mesProdOrgExtService . getWorkCenterDb ( mesProduceSnPrintModel . getOrganizeCode ( ) , mesProduceSn . getWorkCenterCode ( ) ) ;
if ( mesWorkCenter . getCenterType ( ) = = MesExtEnumUtil . WORK_CENTER_TYPE . NOSORT . getValue ( ) ) {
MesPrintedSnLog snLog = getMesPrintedSnLogData ( mesProduceSnPrintModel . getOrganizeCode ( ) , mesProduceSnPrintModel . getProductSn ( ) ) ;
if ( Objects . isNull ( snLog ) ) {
MesPcnException . throwMesBusiException ( "条码【%s】查询不到打印记录!" , mesProduceSnPrintModel . getProductSn ( ) ) ;
}
if ( ! mesProduceSn . getPartNo ( ) . equals ( snLog . getPartNo ( ) ) ) {
mesProduceSnPrintModel . setProductSn ( snLog . getBarcode ( ) ) ;
return findMesProduceSnBySnLog ( mesProduceSnPrintModel ) ;
}
}
return mesProduceSn ;
}
public MesProduceSn findMesProduceSnBySnLog ( MesProduceSnPrintModel mesProduceSnPrintModel ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( mesProduceSnPrintModel . getOrganizeCode ( ) ) ;
ddlPackBean . setWhereAppend ( ddlPackBean . getWhereAppend ( ) + " and (model.productSn = '" + mesProduceSnPrintModel . getProductSn ( ) + "' or model.custSn = '" + mesProduceSnPrintModel . getProductSn ( ) + "' or model.workOrderNo = '" + mesProduceSnPrintModel . getProductSn ( ) + "')" ) ;
DdlPreparedPack . getOrderBy ( "createDatetime" , CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) , ddlPackBean ) ;
MesProduceSn mesProduceSn = mesProduceSnRDao . getByProperty ( ddlPackBean ) ;
if ( Objects . isNull ( mesProduceSn ) ) {
MesPcnException . throwMesBusiException ( "条码【%s】信息不存在" , mesProduceSnPrintModel . getProductSn ( ) ) ;
@ -147,6 +168,13 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
return mesProduceSn ;
}
public MesPrintedSnLog getMesPrintedSnLogData ( String organizeCode , String barCode ) {
DdlPackBean snLogPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( barCode , "barcode" , snLogPackBean ) ;
DdlPreparedPack . getOrderBy ( "createDatetime" , CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) , snLogPackBean ) ;
return mesPrintedSnRao . getByProperty ( snLogPackBean ) ;
}
@Override
public MesProduceSnPrintModel doPrint ( MesProduceSnPrintModel mesProduceSnPrintModel ) {
String organizeCode = mesProduceSnPrintModel . getOrganizeCode ( ) ;
@ -202,14 +230,28 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
return resultModel ;
//条码补打
} else {
MesProduceSn produceSn = findMesProduceSnBySnLog ( mesProduceSnPrintModel ) ;
//根据条码产线获取产线信息
MesWorkCenter mesWorkCenter = mesProdOrgExtService . getWorkCenterDb ( organizeCode , produceSn . getWorkCenterCode ( ) ) ;
MesLabelTemplate mesLabelTemplate = null ;
if ( mesWorkCenter . getCenterType ( ) = = MesExtEnumUtil . WORK_CENTER_TYPE . SORT . getValue ( ) ) {
//排序时取客户标签模板
mesLabelTemplate = mesTemplateService . getMesLabelTemplate ( mesPart . getCustLabelTemplate ( ) , organizeCode ) ;
} else if ( mesWorkCenter . getCenterType ( ) = = MesExtEnumUtil . WORK_CENTER_TYPE . NOSORT . getValue ( ) ) {
//非排序时取零件条码匹配模板
mesLabelTemplate = mesTemplateService . getMesLabelTemplate ( mesPart . getProductLabelTemplate ( ) , organizeCode ) ;
} else {
MesPcnException . throwMesBusiException ( "产线代码【%s】产线类型不为排序或非排序!" , produceSn . getWorkCenterCode ( ) ) ;
}
//获取打印模板信息
mesProduceSnPrintModel . setMesLabelTemplate ( mesTemplateService . getMesLabelTemplate ( StringUtils . isEmpty ( mesProduceSnPrintModel . getPrintTemplate ( ) ) ? mesPart . getCustLabelTemplate ( ) : mesProduceSnPrintModel . getPrintTemplate ( ) , organizeCode ) ) ;
mesProduceSnPrintModel . setMesLabelTemplate ( mes LabelTemplate) ;
//查找打印记录
DdlPackBean snLogPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( mesProduceSnPrintModel . getProductSn ( ) , "barcode" , snLogPackBean ) ;
MesPrintedSnLog snLog = mesPrintedSnRao . getByProperty ( snLogPackBean ) ;
MesPrintedSnLog snLog = getMesPrintedSnLogData ( organizeCode , mesProduceSnPrintModel . getProductSn ( ) ) ;
if ( Objects . isNull ( snLog ) ) {
if ( mesWorkCenter . getCenterType ( ) = = MesExtEnumUtil . WORK_CENTER_TYPE . NOSORT . getValue ( ) ) {
MesPcnException . throwMesBusiException ( "条码【%s】查询不到打印记录!" , mesProduceSnPrintModel . getProductSn ( ) ) ;
}
//扫描条码
MesWorkOrder workOrder = mesWorkOrderService . getWorkOrderNoByCustSn ( organizeCode , mesProduceSnPrintModel . getProductSn ( ) ) ;
//扫描工单
@ -220,7 +262,7 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
MesPcnException . throwMesBusiException ( "条码【%s】查询不到打印记录!" , mesProduceSnPrintModel . getProductSn ( ) ) ;
}
//根据客户条码查询工单信息
mesProduceSnPrintModel = getMesProduceSnPrintModel ( mesProduceSnPrintModel , organizeCode , mesPart , workOrder );
mesProduceSnPrintModel = getMesProduceSnPrintModel ( mesProduceSnPrintModel , organizeCode , mesPart , workOrder ,mesLabelTemplate );
snLog = getMesPrintedSnLog ( workOrder , JSONObject . toJSONString ( mesProduceSnPrintModel . getPrintContextList ( ) . iterator ( ) . next ( ) . get ( MesPcnExtConstWords . TEMPLATE_DATA ) ) , mesProduceSnPrintModel . getUserName ( ) ) ;
}
MesProduceSnPrintDataModel model = new MesProduceSnPrintDataModel ( ) ;
@ -238,10 +280,11 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
}
}
private MesProduceSnPrintModel getMesProduceSnPrintModel ( MesProduceSnPrintModel mesProduceSnPrintModel , String organizeCode , MesPart mesPart , MesWorkOrder workOrderNoByCustSn ) {
private MesProduceSnPrintModel getMesProduceSnPrintModel ( MesProduceSnPrintModel mesProduceSnPrintModel , String organizeCode , MesPart mesPart , MesWorkOrder workOrderNoByCustSn ,MesLabelTemplate mesLabelTemplate ) {
mesProduceSnPrintModel . setSourceData ( workOrderNoByCustSn ) ;
// 获取打印模板
MesLabelTemplate mesLabelTemplate = mesTemplateService . getMesLabelTemplate ( mesPart . getCustLabelTemplate ( ) , organizeCode ) ;
//注释掉多余查询 通过参数传输
// MesLabelTemplate mesLabelTemplate = mesTemplateService.getMesLabelTemplate(mesPart.getCustLabelTemplate(), organizeCode);
if ( Objects . isNull ( mesLabelTemplate ) | | StringUtils . isEmpty ( mesLabelTemplate . getMethodCode ( ) ) ) {
MesPcnException . throwMesBusiException ( String . format ( "当前打印模板【%s】未维护方法名" , mesProduceSnPrintModel . getPrintTemplate ( ) ) ) ;
}