@ -15,13 +15,13 @@ import com.logpm.factory.snm.service.IPanFactoryDataService;
import com.logpm.factory.snm.service.IPanFactoryOrderService ;
import com.logpm.factory.snm.service.IPanOrderStatusLogService ;
import com.logpm.factory.snm.service.IPanPackageInfoService ;
import com.logpm.oldproject.feign.IAdvanceDetailClient ;
import lombok.AllArgsConstructor ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
import org.springblade.common.exception.CustomerException ;
import org.springblade.core.tool.utils.StringUtil ;
import org.springframework.stereotype.Service ;
import org.springframework.transaction.annotation.Transactional ;
import java.util.HashMap ;
import java.util.Map ;
@ -41,6 +41,8 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService {
private final PanFactoryProperties panFactoryProperties ;
private final IPanOrderStatusLogService panOrderStatusLogService ;
private final IPanPackageInfoService panPackageInfoService ;
private final IPanFactoryOrderService panFactoryOrderService ;
private final IAdvanceDetailClient advanceDetailClient ;
// @Override
// public FactoryTokenVO getToken(String corpId, String appKey, String appSecret) throws NoSuchAlgorithmException {
@ -85,9 +87,9 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService {
// return factoryTokenVO;
// }
@Transactional ( rollbackFor = Exception . class )
@Override
public void handleData ( OrderInfoDTO orderInfoDTO ) {
public void handleData ( OrderInfoDTO orderInfoDTO ) throws CustomerException {
//先保存原始请求数据
PanOrderStatusLog panOrderStatusLog = new PanOrderStatusLog ( ) ;
@ -96,15 +98,25 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService {
panOrderStatusLog . setType ( 1 ) ;
panOrderStatusLogService . save ( panOrderStatusLog ) ;
String orderNo = orderInfoDTO . getOrderNo ( ) ;
//根据客户订单号去查询WMS装车清单号
QueryWrapper < PanFactoryOrder > queryWrapper = new QueryWrapper < > ( ) ;
queryWrapper . eq ( "order_no" , orderInfoDTO . getOrder No ( ) ) ;
queryWrapper . eq ( "order_no" , orderNo ) ;
PanFactoryOrder panFactoryOrder = factoryOrderService . getOne ( queryWrapper ) ;
String plantId = panFactoryOrder . getPlantId ( ) ; //工厂id
String deliveryNumber = panFactoryOrder . getDeliveryNumber ( ) ;
orderInfoDTO . setPlantId ( plantId ) ;
orderInfoDTO . setDeliveryNumber ( deliveryNumber ) ;
QueryWrapper < PanFactoryOrder > panFactoryOrderQueryWrapper = new QueryWrapper < > ( ) ;
panFactoryOrderQueryWrapper . eq ( "order_no" , orderNo ) ;
PanFactoryOrder one = panFactoryOrderService . getOne ( panFactoryOrderQueryWrapper ) ;
if ( Objects . isNull ( one ) ) {
logger . info ( "#############handleData: 合同自编码orderNo={}" , orderNo ) ;
throw new CustomerException ( 400 , "未找到订单数据" ) ;
}
//拼接参数
Map < String , Object > map = new HashMap < > ( ) ;
map . put ( "payload" , JSONObject . toJSONString ( orderInfoDTO ) ) ;
@ -112,43 +124,48 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService {
Gson gson = new GsonBuilder ( ) . setPrettyPrinting ( ) . create ( ) ;
String s = gson . toJson ( map ) ;
//判断数据是都已存在
if ( ! orderInfoDTO . verifyData ( ) ) {
logger . info ( "#############handleData: 数据不齐全 orderInfoDTO={}" , orderInfoDTO ) ;
throw new CustomerException ( 400 , "数据不齐全" ) ;
}
//先获取token
// String panToken = getPanToken();
//
String panToken = getPanToken ( ) ;
//请求参数
logger . info ( "##############handleData: 推送包件状态请求参数 {}" , s ) ;
// //处理逻辑
// //TODO 这里还差那边给到请求接口
// String result = HttpRequest.post(panFactoryProperties.getUrl()+"/hitf/v1/rest/invoke?namespace=HZERO&serverCode=HUITONG_MID_RECEIVE")
// .header("Authorization","Bearer "+panToken)
// .header("Content-Type","application/json")
// .body(s).timeout(5 * 1000)
// .execute().body();
//
// logger.info("##############handleData: 推送包件状态返回参数 {}",result);
//
// //把结果字符串转为json对象
// JSONObject jsonObject = JSONObject.parseObject(result);
// JSONObject payload = jsonObject.getJSONObject("payload");
// if(!Objects.isNull(payload)){
// Integer code = payload.getInteger("code");
// String message = payload.getString("data");
// if(code.equals(1)){
// logger.info("##########handleData: 物流状态传递成功");
// panOrderStatusLog.setStatus(0);
// panOrderStatusLogService.saveOrUpdate(panOrderStatusLog);
// }else{
// throw new CustomerException(400,message);
// }
// }else{
// throw new CustomerException(400,"返回格式有误:"+result);
// }
//处理逻辑
String result = HttpRequest . post ( panFactoryProperties . getUrl ( ) + "/hitf/v1/rest/invoke?namespace=HZERO&serverCode=HUITONG_MID_RECEIVE" )
. header ( "Authorization" , "Bearer " + panToken )
. header ( "Content-Type" , "application/json" )
. body ( s ) . timeout ( 5 * 1000 )
. execute ( ) . body ( ) ;
logger . info ( "##############handleData: 推送包件状态返回参数 {}" , result ) ;
//把结果字符串转为json对象
JSONObject jsonObject = JSONObject . parseObject ( result ) ;
JSONObject payload = jsonObject . getJSONObject ( "payload" ) ;
if ( ! Objects . isNull ( payload ) ) {
Integer code = payload . getInteger ( "code" ) ;
String message = payload . getString ( "data" ) ;
if ( code . equals ( 1 ) ) {
logger . info ( "##########handleData: 物流状态传递成功" ) ;
panOrderStatusLog . setStatus ( 0 ) ;
panOrderStatusLogService . saveOrUpdate ( panOrderStatusLog ) ;
} else {
throw new CustomerException ( 400 , message ) ;
}
} else {
throw new CustomerException ( 400 , "返回格式有误:" + result ) ;
}
}
@Override
public void handleStatusData ( OrderStatusDTO orderStatusDTO ) {
public void handleStatusData ( OrderStatusDTO orderStatusDTO ) throws CustomerException {
//先保存原始请求数据
PanOrderStatusLog panOrderStatusLog = new PanOrderStatusLog ( ) ;
@ -157,6 +174,12 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService {
panOrderStatusLog . setType ( 2 ) ;
panOrderStatusLogService . save ( panOrderStatusLog ) ;
String status = orderStatusDTO . getStatus ( ) ;
if ( "2" . equals ( status ) | | "4" . equals ( status ) | | "5" . equals ( status ) | | "8" . equals ( status ) | | "9" . equals ( status ) ) {
logger . info ( "#############handleStatusData: 当前数据的状态不推送 status={}" , status ) ;
throw new CustomerException ( 400 , "当前数据的状态不推送" ) ;
}
//通过包件码查询是否是要推送的订单
String unitNo = orderStatusDTO . getUnitNo ( ) ; //包件码
QueryWrapper < PanPackageInfo > packageInfoQueryWrapper = new QueryWrapper < > ( ) ;
@ -166,6 +189,11 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService {
logger . info ( "#############handleStatusData: 当前包条码未找到对应数据unitNo={}" , unitNo ) ;
throw new CustomerException ( 400 , "未找到包件数据" ) ;
}
//查询destinationWarehouse logiBillNo plantId数据
Map < String , String > supplyData = advanceDetailClient . getSupplyData ( unitNo ) ;
orderStatusDTO . setPlantId ( supplyData . get ( "plantId" ) ) ;
orderStatusDTO . setDestinationWarehouse ( supplyData . get ( "destinationWarehouse" ) ) ;
orderStatusDTO . setLogiBillNo ( supplyData . get ( "logiBillNo" ) ) ;
//判断数据是都已存在
if ( ! orderStatusDTO . verifyData ( ) ) {
@ -180,36 +208,36 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService {
Gson gson = new GsonBuilder ( ) . setPrettyPrinting ( ) . create ( ) ;
String s = gson . toJson ( map ) ;
// //先获取token
// String panToken = getPanToken();
//
//先获取token
String panToken = getPanToken ( ) ;
//请求参数
logger . info ( "##############handleStatusData: 推送包件状态请求参数 {}" , s ) ;
// //处理逻辑
// String result = HttpRequest.post(panFactoryProperties.getUrl()+ "/hitf/v1/rest/invoke?namespace=HZERO&serverCode=OPEN&interfaceCode=HUITONG_RECEIVE")
// .header("Authorization","Bearer "+panToken)
// .header("Content-Type","application/json")
// .body(s).timeout(5 * 1000)
// .execute().body();
//
// logger.info( "##############handleStatusData: 推送包件状态返回参数 {}",result);
//
// //把结果字符串转为json对象
// JSONObject jsonObject = JSONObject.parseObject(result);
// JSONObject payload = jsonObject.getJSONObject("payload");
// if(!Objects.isNull(payload)){
// Integer code = payload.getInteger("code");
// String message = payload.getString("data");
// if(code.equals(1)){
// logger.info( "##########handleStatusData: 物流状态传递成功");
// panOrderStatusLog.setStatus(0);
// panOrderStatusLogService.saveOrUpdate(panOrderStatusLog);
// }else{
// throw new CustomerException(400,message);
// }
// }else{
// throw new CustomerException(400,"返回格式有误:"+result);
// }
//处理逻辑
String result = HttpRequest . post ( panFactoryProperties . getUrl ( ) + "/hitf/v1/rest/invoke?namespace=HZERO&serverCode=OPEN&interfaceCode=HUITONG_RECEIVE" )
. header ( "Authorization" , "Bearer " + panToken )
. header ( "Content-Type" , "application/json" )
. body ( s ) . timeout ( 5 * 1000 )
. execute ( ) . body ( ) ;
logger . info ( "##############handleStatusData: 推送包件状态返回参数 {}" , result ) ;
//把结果字符串转为json对象
JSONObject jsonObject = JSONObject . parseObject ( result ) ;
JSONObject payload = jsonObject . getJSONObject ( "payload" ) ;
if ( ! Objects . isNull ( payload ) ) {
Integer code = payload . getInteger ( "code" ) ;
String message = payload . getString ( "data" ) ;
if ( code . equals ( 1 ) ) {
logger . info ( "##########handleStatusData: 物流状态传递成功" ) ;
panOrderStatusLog . setStatus ( 0 ) ;
panOrderStatusLogService . saveOrUpdate ( panOrderStatusLog ) ;
} else {
throw new CustomerException ( 400 , message ) ;
}
} else {
throw new CustomerException ( 400 , "返回格式有误:" + result ) ;
}
}