@ -6,7 +6,10 @@ import java.util.Date;
import java.util.List ;
import java.util.stream.Collectors ;
import com.hw.common.core.constant.Constants ;
import com.hw.common.core.constant.MesConstants ;
import com.hw.common.core.constant.SecurityConstants ;
import com.hw.common.core.domain.R ;
import com.hw.common.core.exception.ServiceException ;
import com.hw.common.core.utils.DateUtils ;
import com.hw.common.core.utils.StringUtils ;
@ -15,12 +18,16 @@ import com.hw.mes.api.domain.MesBaseMaterialInfo;
import com.hw.mes.api.domain.MesOrderBind ;
import com.hw.mes.domain.MesSaleOrder ;
import com.hw.mes.mapper.* ;
import com.hw.wms.api.RemoteWmsService ;
import com.hw.wms.api.domain.vo.WmsAutoOutstockVo ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Service ;
import com.hw.mes.domain.MesPurchaseOrder ;
import com.hw.mes.service.IMesPurchaseOrderService ;
import org.springframework.transaction.annotation.Transactional ;
import javax.annotation.Resource ;
/ * *
* 采 购 订 单 信 息 Service 业 务 层 处 理
*
@ -44,6 +51,9 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService {
@Autowired
private MesOrderBindMapper mesOrderBindMapper ;
@Resource
private RemoteWmsService remoteWmsService ;
/ * *
* 查 询 采 购 订 单 信 息
*
@ -425,7 +435,6 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService {
}
/ * *
* 查 询 采 购 订 单 信 息 , join order bind
*
@ -440,4 +449,64 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService {
? mesPurchaseOrder . getProductSpec ( ) . replaceAll ( "\\s+" , "" ) : "" ) ;
return mesPurchaseOrderMapper . selectPurchaseOrderJoinList ( mesPurchaseOrder ) ;
}
/ * *
* 查 询 不 在 特 定 日 期 raw_instock 记 录 中 的 采 购 订 单 信 息 ( group by )
*
* @param dateStr
* @return List < MesPurchaseOrder >
* /
@Override
@Transactional ( rollbackFor = Exception . class )
public int autoOutstockLastPurchaseOrders ( String dateStr ) {
if ( StringUtils . isEmpty ( dateStr ) ) {
dateStr = DateUtils . parseDateToStr ( DateUtils . YYYY_MM_DD , new Date ( ) ) ;
}
List < MesPurchaseOrder > mesPurchaseOrderList = mesPurchaseOrderMapper . selectNotRawInstockPurchaseOrderList ( dateStr ) ;
List < MesPurchaseOrder > autoStockPurchaseOrderList = new ArrayList < > ( ) ;
if ( mesPurchaseOrderList ! = null & & ! mesPurchaseOrderList . isEmpty ( ) ) {
//判断物料信息是否自动出库
for ( MesPurchaseOrder mesPurchaseOrder : mesPurchaseOrderList ) {
MesBaseMaterialInfo mesBaseMaterialInfo = mesBaseMaterialInfoMapper . selectMesBaseMaterialInfoByErpId ( mesPurchaseOrder . getMaterialId ( ) ) ;
if ( StringUtils . isNotEmpty ( mesBaseMaterialInfo . getAutoOutstockFlag ( ) ) & &
mesBaseMaterialInfo . getAutoOutstockFlag ( ) . equals ( MesConstants . MES_MATERIAL_AUTO_OUTSTOCK_FLAG_YES ) ) {
autoStockPurchaseOrderList . add ( mesPurchaseOrder ) ;
}
}
}
if ( ! autoStockPurchaseOrderList . isEmpty ( ) ) {
for ( MesPurchaseOrder mpo : autoStockPurchaseOrderList ) {
MesBaseMaterialInfo mesBaseMaterialInfo = mesBaseMaterialInfoMapper . selectMesBaseMaterialInfoByErpId ( mpo . getMaterialId ( ) ) ;
mpo . setOrderStatus ( MesConstants . MES_PURCHASE_ORDER_STATUS_AUTO_OUTSTOCK_COMPLETE ) ;
mpo . setUpdateBy ( "autoOutstock" ) ;
mpo . setUpdateTime ( new Date ( ) ) ;
mesPurchaseOrderMapper . updateMesPurchaseOrder ( mpo ) ;
WmsAutoOutstockVo wmsAutoOutstockVo = new WmsAutoOutstockVo ( ) ;
wmsAutoOutstockVo . setMaterialId ( mesBaseMaterialInfo . getMaterialId ( ) ) ;
wmsAutoOutstockVo . setPoNo ( mpo . getPoNo ( ) ) ;
R < ? > autoOutstockReturnMsg = remoteWmsService . autoOutstock ( wmsAutoOutstockVo , SecurityConstants . INNER ) ;
if ( autoOutstockReturnMsg . getCode ( ) ! = Constants . SUCCESS ) { //抛出异常,回滚事务
throw new RuntimeException ( autoOutstockReturnMsg . getMsg ( ) ) ;
}
}
}
/ * select * from wms_raw_instock wri where date_format ( apply_date , ' % y % m % d ' ) = date_format ( ' 2024 - 6 - 21 ',' % y % m % d ' )
and exists ( select 1 from mes_base_material_info mbmi where wri . material_id = mbmi . material_id and mbmi . auto_outstock_flag = '1' ) ;
select * from mes_purchase_order mpo where not exists ( select 1 from wms_raw_instock wri where
date_format ( wri . apply_date , ' % y % m % d ' ) = date_format ( ' 2024 - 6 - 21 ',' % y % m % d ' ) and mpo . material_id = wri . material_id )
and mpo . order_status = '3' and mpo . auto_outstock_flag = '0' group_by mpo . po_no ;
- - 循 环
select * from wms_raw_stock wrs where wrs . material_id = ?
and exists ( select 1 from mes_base_barcode_info mbbi where wrs . instock_batch = mbbi . barcode_info and mbbi . po_no = ? ) * /
return 1 ;
}
}