|
|
@ -1,19 +1,36 @@
|
|
|
|
package com.op.wms.service.impl;
|
|
|
|
package com.op.wms.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.op.common.core.domain.R;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import okhttp3.OkHttpClient;
|
|
|
|
|
|
|
|
import okhttp3.MediaType;
|
|
|
|
|
|
|
|
import okhttp3.RequestBody;
|
|
|
|
|
|
|
|
import okhttp3.Request;
|
|
|
|
|
|
|
|
import okhttp3.Response;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
|
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
|
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
|
import com.op.common.core.utils.uuid.IdUtils;
|
|
|
|
import com.op.common.core.utils.uuid.IdUtils;
|
|
|
|
import com.op.wms.domain.*;
|
|
|
|
import com.op.wms.domain.*;
|
|
|
|
import com.op.wms.mapper.WmsOdsMateStorageNewsMapper;
|
|
|
|
import com.op.wms.mapper.*;
|
|
|
|
import com.op.wms.mapper.WmsOdsMateStorageNewsSnMapper;
|
|
|
|
|
|
|
|
import com.op.wms.mapper.WmsRawOrderInSnMapper;
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import com.op.wms.mapper.OdsProcureOrderMapper;
|
|
|
|
|
|
|
|
import com.op.wms.service.IOdsProcureOrderService;
|
|
|
|
import com.op.wms.service.IOdsProcureOrderService;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -32,6 +49,8 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
|
|
|
|
private WmsOdsMateStorageNewsSnMapper wmsOdsMateStorageNewsSnMapper;
|
|
|
|
private WmsOdsMateStorageNewsSnMapper wmsOdsMateStorageNewsSnMapper;
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private WmsOdsMateStorageNewsMapper wmsOdsMateStorageNewsMapper;
|
|
|
|
private WmsOdsMateStorageNewsMapper wmsOdsMateStorageNewsMapper;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private OdsProcureOutOrderMapper odsProcureOutOrderMapper;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 查询包材采购单
|
|
|
|
* 查询包材采购单
|
|
|
@ -175,6 +194,7 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn=new WmsOdsMateStorageNewsSn();
|
|
|
|
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn=new WmsOdsMateStorageNewsSn();
|
|
|
|
|
|
|
|
wmsOdsMateStorageNewsSn.setMateOrderInSnId(IdUtils.fastSimpleUUID());
|
|
|
|
wmsOdsMateStorageNewsSn.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码
|
|
|
|
wmsOdsMateStorageNewsSn.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码
|
|
|
|
wmsOdsMateStorageNewsSn.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码
|
|
|
|
wmsOdsMateStorageNewsSn.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码
|
|
|
|
wmsOdsMateStorageNewsSn.setMaterialCode(wmsRawOrderInSn.getMaterialCode());
|
|
|
|
wmsOdsMateStorageNewsSn.setMaterialCode(wmsRawOrderInSn.getMaterialCode());
|
|
|
@ -218,4 +238,205 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
|
|
|
|
wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn);
|
|
|
|
wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn);
|
|
|
|
//修改库存--加,并且为冻结的,sap过账后再解
|
|
|
|
//修改库存--加,并且为冻结的,sap过账后再解
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
@DS("#header.poolName")
|
|
|
|
|
|
|
|
public OdsProcureOutOrder PurchaseOrderOutboundPda(OdsProcureOutOrder odsProcureOrder) {
|
|
|
|
|
|
|
|
//母单,其中list里面是对应的子单
|
|
|
|
|
|
|
|
OdsProcureOutOrder odsProcureOutOrder= odsProcureOutOrderMapper.selectmesPrepare(odsProcureOrder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (odsProcureOutOrder!=null){
|
|
|
|
|
|
|
|
List<OdsProcureOutOrder> orderList= odsProcureOutOrderMapper.selectmesPrepareDetail(odsProcureOutOrder);
|
|
|
|
|
|
|
|
odsProcureOutOrder.setList(orderList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return odsProcureOutOrder;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
@DS("#header.poolName")
|
|
|
|
|
|
|
|
public OrderLine addPurchaseOrderOutbound(OrderLine orderLine) {
|
|
|
|
|
|
|
|
//自己生成行项目,,批次号
|
|
|
|
|
|
|
|
List<OrderLine> orderList= orderLine.getList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//根据订单号查询对应的最大批次号
|
|
|
|
|
|
|
|
Integer orderItem = 0;
|
|
|
|
|
|
|
|
for (OrderLine orderLine1:
|
|
|
|
|
|
|
|
orderList) {
|
|
|
|
|
|
|
|
orderItem++;
|
|
|
|
|
|
|
|
orderLine1.setOrderLineNo(String.format("%05d", orderItem));
|
|
|
|
|
|
|
|
orderLine1.setBatchNo("00001");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//String meg= addPurchaseOrderOutboundSAP(orderLine);
|
|
|
|
|
|
|
|
//if ("OK".equals(meg)){//成功
|
|
|
|
|
|
|
|
OdsProcureOutOrder odsProcureOutOrder=new OdsProcureOutOrder();
|
|
|
|
|
|
|
|
odsProcureOutOrder.setID(IdUtils.fastSimpleUUID());
|
|
|
|
|
|
|
|
odsProcureOutOrder.setProduceCode(orderLine.getOrderNo());
|
|
|
|
|
|
|
|
//odsProcureOutOrder.set
|
|
|
|
|
|
|
|
odsProcureOutOrderMapper.insertOdsProcureOutOrder(odsProcureOutOrder);
|
|
|
|
|
|
|
|
//修改库存
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
return orderLine;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public R sapPurchaseOrderSync(SapBackflushMPQuery sapPurchaseOrderQuery) {
|
|
|
|
|
|
|
|
// DynamicDataSourceContextHolder.push("ds_" + sapPurchaseOrderQuery.getFactoryCode());
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
|
|
|
// // 获取调用 RFC 函数对象
|
|
|
|
|
|
|
|
// //获取连接
|
|
|
|
|
|
|
|
// //JCoDestination dest = SAPConnUtils.connect();
|
|
|
|
|
|
|
|
// JCoRepository repository = dest.getRepository();
|
|
|
|
|
|
|
|
// JCoFunction func = repository.getFunction("ZMES_GET_PROCURE");
|
|
|
|
|
|
|
|
// JCoParameterList jCoParameterList= func.getTableParameterList();
|
|
|
|
|
|
|
|
// System.out.println(jCoParameterList);
|
|
|
|
|
|
|
|
// if (func == null) {
|
|
|
|
|
|
|
|
// throw new RuntimeException("Function does not exist in SAP");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// /** S_EBELN 采购订单号
|
|
|
|
|
|
|
|
// * S_EBELP 行项目
|
|
|
|
|
|
|
|
// * S_MATNR 物料号
|
|
|
|
|
|
|
|
// * S_PWERK 工厂
|
|
|
|
|
|
|
|
// */
|
|
|
|
|
|
|
|
// if (!StringUtils.isNull(sapPurchaseOrderQuery.getEbeln())){
|
|
|
|
|
|
|
|
// JCoTable S_EBELN = func.getTableParameterList().getTable("S_EBELN");
|
|
|
|
|
|
|
|
// S_EBELN.appendRow();
|
|
|
|
|
|
|
|
// S_EBELN.setValue(Constants.SIGN, "I");
|
|
|
|
|
|
|
|
// S_EBELN.setValue(Constants.OPTION, "EQ");
|
|
|
|
|
|
|
|
// S_EBELN.setValue(Constants.LOW, sapPurchaseOrderQuery.getEbeln());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//// if (!StringUtils.isNull(sapPurchaseOrderQuery.getEbeln())){
|
|
|
|
|
|
|
|
//// JCoTable S_EBELN = func.getTableParameterList().getTable("S_EBELP");
|
|
|
|
|
|
|
|
//// S_EBELN.appendRow();
|
|
|
|
|
|
|
|
//// S_EBELN.setValue(Constants.SIGN, "I");
|
|
|
|
|
|
|
|
//// S_EBELN.setValue(Constants.OPTION, "EQ");
|
|
|
|
|
|
|
|
//// S_EBELN.setValue(Constants.LOW, sapPurchaseOrderQuery.getEbeln());
|
|
|
|
|
|
|
|
//// }
|
|
|
|
|
|
|
|
//// if (!StringUtils.isNull(sapPurchaseOrderQuery.getMatnr())){
|
|
|
|
|
|
|
|
//// JCoTable S_MATNR = func.getTableParameterList().getTable("S_MATNR");
|
|
|
|
|
|
|
|
//// S_MATNR.appendRow();
|
|
|
|
|
|
|
|
//// S_MATNR.setValue(Constants.SIGN, "I");
|
|
|
|
|
|
|
|
//// S_MATNR.setValue(Constants.OPTION, "EQ");
|
|
|
|
|
|
|
|
//// S_MATNR.setValue(Constants.LOW, sapPurchaseOrderQuery.getMatnr());
|
|
|
|
|
|
|
|
//// }
|
|
|
|
|
|
|
|
////
|
|
|
|
|
|
|
|
//// if (!StringUtils.isNull(sapPurchaseOrderQuery.getPwerk())){
|
|
|
|
|
|
|
|
//// JCoTable S_PWERK = func.getTableParameterList().getTable("S_PWERK");
|
|
|
|
|
|
|
|
//// S_PWERK.appendRow();
|
|
|
|
|
|
|
|
//// S_PWERK.setValue(Constants.SIGN, "I");
|
|
|
|
|
|
|
|
//// S_PWERK.setValue(Constants.OPTION, "EQ");
|
|
|
|
|
|
|
|
//// S_PWERK.setValue(Constants.LOW, sapPurchaseOrderQuery.getPwerk());
|
|
|
|
|
|
|
|
//// }
|
|
|
|
|
|
|
|
// func.execute(dest);//执行调用函数
|
|
|
|
|
|
|
|
// // 获取 内表 - LT_PROCURE
|
|
|
|
|
|
|
|
// JCoTable maraTable = func.getTableParameterList().getTable("LT_PROCURE");
|
|
|
|
|
|
|
|
// JCoRecordMetaData metaData = maraTable.getRecordMetaData();
|
|
|
|
|
|
|
|
// System.out.println("###" + metaData.toString());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// List<OdsProcureOrder> sapCustomList=new ArrayList<>();
|
|
|
|
|
|
|
|
// for (int i = 0; i <maraTable.getNumRows(); i++) {
|
|
|
|
|
|
|
|
// maraTable.setRow(i);
|
|
|
|
|
|
|
|
// OdsProcureOrder odsProcureOrder=new OdsProcureOrder();
|
|
|
|
|
|
|
|
// String EBELN = maraTable.getString("EBELN");//订单号
|
|
|
|
|
|
|
|
// String EBELP = maraTable.getString("EBELP");//行项目
|
|
|
|
|
|
|
|
// String MATNR = maraTable.getString("MATNR");//物料号
|
|
|
|
|
|
|
|
// String MAKTX = maraTable.getString("MAKTX");//物料描述(短文本
|
|
|
|
|
|
|
|
// String MENGE = maraTable.getString("MENGE");//采购订单数量
|
|
|
|
|
|
|
|
// String MEINS = maraTable.getString("MEINS");//采购订单的计量单位
|
|
|
|
|
|
|
|
// String ZMENGE = maraTable.getString("ZMENGE");//交货数量
|
|
|
|
|
|
|
|
// String ZMEINS = maraTable.getString("ZMEINS");//基本计量单位
|
|
|
|
|
|
|
|
// String LIFNR = maraTable.getString("LIFNR");//供应商帐户号
|
|
|
|
|
|
|
|
// String WERKS = maraTable.getString("WERKS");//工厂
|
|
|
|
|
|
|
|
// //String LGORT = maraTable.getString("LGORT");//库存地点
|
|
|
|
|
|
|
|
// //String EINDT = maraTable.getString("EINDT");//项目交货日期
|
|
|
|
|
|
|
|
// //String ELIKZ = maraTable.getString("ELIKZ");//交货已完成标识
|
|
|
|
|
|
|
|
// //String BEIZHU = maraTable.getString("BEIZHU");//注释
|
|
|
|
|
|
|
|
// odsProcureOrder.setSiteCode(WERKS);
|
|
|
|
|
|
|
|
// odsProcureOrder.setProcureCode(EBELN);
|
|
|
|
|
|
|
|
// odsProcureOrder.setMaterialCode(MATNR);
|
|
|
|
|
|
|
|
// odsProcureOrder.setMaterialDesc(MAKTX);
|
|
|
|
|
|
|
|
// odsProcureOrder.setOrderStatus("0");
|
|
|
|
|
|
|
|
// //odsProcureOrder.setPlanDate();
|
|
|
|
|
|
|
|
// odsProcureOrder.setPlanNumber(new BigDecimal(MENGE));
|
|
|
|
|
|
|
|
// odsProcureOrder.setUserDefined1(ZMENGE);
|
|
|
|
|
|
|
|
// odsProcureOrder.setUserDefined2(ZMEINS);
|
|
|
|
|
|
|
|
// odsProcureOrder.setSupplierCode(LIFNR);
|
|
|
|
|
|
|
|
// odsProcureOrder.setCreateBy("task");
|
|
|
|
|
|
|
|
// odsProcureOrder.setCreateDate(new Date());
|
|
|
|
|
|
|
|
// odsProcureOrder.setActive("1");
|
|
|
|
|
|
|
|
// odsProcureOrder.setUnit(MEINS);
|
|
|
|
|
|
|
|
// odsProcureOrderMapper.insertOdsProcureOrder(odsProcureOrder);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// return R.ok();
|
|
|
|
|
|
|
|
// }catch (Exception e){
|
|
|
|
|
|
|
|
// return R.fail(e.getMessage());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
return R.ok();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//下发计划的接口
|
|
|
|
|
|
|
|
public String addPurchaseOrderOutboundSAP(OrderLine orderLinete) {
|
|
|
|
|
|
|
|
// 定义请求的URL地址
|
|
|
|
|
|
|
|
String url = "http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsOutBoundRequest";
|
|
|
|
|
|
|
|
// 创建OkHttpClient实例
|
|
|
|
|
|
|
|
OkHttpClient client = new OkHttpClient();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义请求体的媒体类型为json
|
|
|
|
|
|
|
|
MediaType mediaType = MediaType.parse("application/json");
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// 创建JSON对象payload,并设置请求参数
|
|
|
|
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
|
|
Date date = new Date();
|
|
|
|
|
|
|
|
String formattedDate = dateFormat.format(date);
|
|
|
|
|
|
|
|
JSONObject payload = new JSONObject();
|
|
|
|
|
|
|
|
payload.put("reqCode", "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0");
|
|
|
|
|
|
|
|
payload.put("reqTime",formattedDate );
|
|
|
|
|
|
|
|
payload.put("warehouseNo", orderLinete.getWarehouseNo());
|
|
|
|
|
|
|
|
payload.put("orderNo", orderLinete.getOrderNo());
|
|
|
|
|
|
|
|
JSONArray orderLines = new JSONArray();
|
|
|
|
|
|
|
|
List<OrderLine> orderList= orderLinete.getList();
|
|
|
|
|
|
|
|
// 创建订单行数组,并将订单行对象添加到数组中
|
|
|
|
|
|
|
|
for (OrderLine orderLine1:
|
|
|
|
|
|
|
|
orderList ) {
|
|
|
|
|
|
|
|
JSONObject orderLine = new JSONObject();
|
|
|
|
|
|
|
|
orderLine.put("orderLineNo", orderLine1.getOrderLineNo());
|
|
|
|
|
|
|
|
orderLine.put("sku", orderLine1.getSku());
|
|
|
|
|
|
|
|
orderLine.put("batchNo",orderLine1.getBatchNo());
|
|
|
|
|
|
|
|
orderLine.put("qty", orderLine1.getQty());
|
|
|
|
|
|
|
|
orderLine.put("qualityStatus", 1);
|
|
|
|
|
|
|
|
orderLine.put("location", orderLine1.getStationNo());
|
|
|
|
|
|
|
|
orderLines.add(orderLine);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
payload.put("orderLines", orderLines);
|
|
|
|
|
|
|
|
// 创建请求体,将JSON对象转换为字符串
|
|
|
|
|
|
|
|
RequestBody body = RequestBody.create(mediaType, payload.toString());
|
|
|
|
|
|
|
|
// 创建POST请求
|
|
|
|
|
|
|
|
Request request = new Request.Builder()
|
|
|
|
|
|
|
|
.url(url)
|
|
|
|
|
|
|
|
.post(body)
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
// 执行请求并获取响应
|
|
|
|
|
|
|
|
Response response = client.newCall(request).execute();
|
|
|
|
|
|
|
|
// 获取响应数据并转换为JSON对象
|
|
|
|
|
|
|
|
String responseData = response.body().string();
|
|
|
|
|
|
|
|
JSONObject result = JSONObject.parseObject(responseData);
|
|
|
|
|
|
|
|
// 获取返回结果结果JSON对象,请求编码、状态码和消息
|
|
|
|
|
|
|
|
result.get("reqCode");
|
|
|
|
|
|
|
|
result.get("code");
|
|
|
|
|
|
|
|
String message= (String) result.get("message");
|
|
|
|
|
|
|
|
response.close();
|
|
|
|
|
|
|
|
return message;
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
// 捕获IOException并处理异常
|
|
|
|
|
|
|
|
e.printStackTrace(); // 这里最好记录异常到日志文件或者进行其他处理
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
// 关闭OkHttpClient
|
|
|
|
|
|
|
|
client.dispatcher().executorService().shutdown();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 返回0
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|