|
|
|
@ -1568,111 +1568,138 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void OutboundPostingzcSAPTS(List<OdsProcureOutOrder> orderList) {
|
|
|
|
|
//先根据出库单获取
|
|
|
|
|
// * 退料的移动类型为 262
|
|
|
|
|
// * 领料的移动类型为 261
|
|
|
|
|
List<OdsProcureOutOrder> orderList1 = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderByIDsTS(orderList);
|
|
|
|
|
List<OdsProcureOutOrder> orderList2 = new ArrayList<>();//非反冲
|
|
|
|
|
List<Map<String, Object>> mapList = new ArrayList<>();//非反冲
|
|
|
|
|
List<SapBackflushMPQuery> sapMaterialPostingFCList = new ArrayList<>();//反冲
|
|
|
|
|
List<OdsProcureOutOrder> orderList2FC = new ArrayList<>();//反冲
|
|
|
|
|
for (OdsProcureOutOrder odsProcureOutOrder :
|
|
|
|
|
orderList1) {
|
|
|
|
|
if (!"X".equals(odsProcureOutOrder.getUserDefined3())){
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("AUFNR", odsProcureOutOrder.getProduceCode());
|
|
|
|
|
map.put("PLANT", odsProcureOutOrder.getSiteCode());
|
|
|
|
|
String lgort = baseWarehouseMapper.selectByCode(odsProcureOutOrder.getLocCode());
|
|
|
|
|
map.put("LGORT", lgort);
|
|
|
|
|
map.put("MATNR", odsProcureOutOrder.getMaterialCode());
|
|
|
|
|
map.put("QUANTITY", odsProcureOutOrder.getOutNumber().toString());
|
|
|
|
|
map.put("MEINS", odsProcureOutOrder.getUnit());
|
|
|
|
|
mapList.add(map);
|
|
|
|
|
orderList2.add(odsProcureOutOrder);
|
|
|
|
|
}else {
|
|
|
|
|
SapBackflushMPQuery sapBackflushMPQuery = new SapBackflushMPQuery();
|
|
|
|
|
sapBackflushMPQuery.setPlant(odsProcureOutOrder.getSiteCode()); //工厂
|
|
|
|
|
String lgort = baseWarehouseMapper.selectByCode(odsProcureOutOrder.getLocCode());
|
|
|
|
|
sapBackflushMPQuery.setLgort(lgort);//库存地点
|
|
|
|
|
sapBackflushMPQuery.setMatnr(odsProcureOutOrder.getMaterialCode());//物料号
|
|
|
|
|
sapBackflushMPQuery.setQuantity(odsProcureOutOrder.getOutNumber().toString()); //数量
|
|
|
|
|
sapBackflushMPQuery.setMeins(odsProcureOutOrder.getUnit()); //基本计量单位
|
|
|
|
|
sapBackflushMPQuery.setBatch(odsProcureOutOrder.getUserDefined2()); //批号
|
|
|
|
|
sapMaterialPostingFCList.add(sapBackflushMPQuery);
|
|
|
|
|
orderList2FC.add(odsProcureOutOrder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (mapList.size() > 0) {
|
|
|
|
|
//非反冲过账
|
|
|
|
|
SapMaterialPosting sapMaterialPosting = new SapMaterialPosting();
|
|
|
|
|
sapMaterialPosting.setPostingType("261");
|
|
|
|
|
sapMaterialPosting.setMapList(mapList);
|
|
|
|
|
R result = remoteSapService.sapMaterialPosting(sapMaterialPosting);
|
|
|
|
|
OdsProcureOutOrder order = new OdsProcureOutOrder();
|
|
|
|
|
int code = result.getCode();
|
|
|
|
|
String msg = result.getMsg();
|
|
|
|
|
//order.setSapMaterialPostingList(sapMaterialPostingList);
|
|
|
|
|
order.setUserDefined11(msg);
|
|
|
|
|
if (code == 200) {
|
|
|
|
|
//过账成功
|
|
|
|
|
Map map = new HashMap();
|
|
|
|
|
map = (Map) result.getData();
|
|
|
|
|
String userDefined9 = (String) map.get("MATERIALDOCUMENT");
|
|
|
|
|
order.setUserDefined9(userDefined9);
|
|
|
|
|
order.setUserDefined10("2");//成功
|
|
|
|
|
odsProcureOutOrderMapper.updateWMSOdsProcureOutOrderByids(order, orderList2);
|
|
|
|
|
for (OdsProcureOutOrder order1:
|
|
|
|
|
orderList2) {
|
|
|
|
|
//过账成功--减库存
|
|
|
|
|
List<WmsOdsMateStorageNews> odsEmStorageNews= odsProcureOutOrderMapper.selectWmsRawMissionOutByPrdAndMa(order1);
|
|
|
|
|
for (WmsOdsMateStorageNews wmsOdsMateStorageNews:
|
|
|
|
|
odsEmStorageNews) {
|
|
|
|
|
//wmsOdsMateStorageNews
|
|
|
|
|
wmsOdsMateStorageNews.setLastModifiedBy(SecurityUtils.getUsername());
|
|
|
|
|
wmsOdsMateStorageNewsSnMapper.updatesub(wmsOdsMateStorageNews);//库存调整
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//
|
|
|
|
|
order.setUserDefined9("");
|
|
|
|
|
order.setUserDefined10("3");//失败
|
|
|
|
|
odsProcureOutOrderMapper.updateWMSOdsProcureOutOrderByids(order, orderList2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (sapMaterialPostingFCList.size() > 0) {
|
|
|
|
|
//反冲过账
|
|
|
|
|
R result2 = remoteSapService.sapBackflushMP(sapMaterialPostingFCList);//x
|
|
|
|
|
int code = result2.getCode();
|
|
|
|
|
OdsProcureOutOrder order = new OdsProcureOutOrder();
|
|
|
|
|
String msg = result2.getMsg();
|
|
|
|
|
order.setUserDefined11(msg);
|
|
|
|
|
if (code == 200) {
|
|
|
|
|
//过账成功
|
|
|
|
|
Map map = new HashMap();
|
|
|
|
|
map = (Map) result2.getData();
|
|
|
|
|
String userDefined9 = (String) map.get("MATERIALDOCUMENT");
|
|
|
|
|
order.setUserDefined9(userDefined9);
|
|
|
|
|
order.setUserDefined10("2");//成功
|
|
|
|
|
odsProcureOutOrderMapper.updateWMSOdsProcureOutOrderByids(order, orderList2FC);
|
|
|
|
|
for (OdsProcureOutOrder order1:
|
|
|
|
|
orderList2FC) {
|
|
|
|
|
//过账成功--减库存
|
|
|
|
|
List<WmsOdsMateStorageNews> odsEmStorageNews= odsProcureOutOrderMapper.selectWmsRawMissionOutByPrdAndMa(order1);
|
|
|
|
|
for (WmsOdsMateStorageNews wmsOdsMateStorageNews:
|
|
|
|
|
odsEmStorageNews) {
|
|
|
|
|
//wmsOdsMateStorageNews
|
|
|
|
|
wmsOdsMateStorageNews.setLastModifiedBy(SecurityUtils.getUsername());
|
|
|
|
|
wmsOdsMateStorageNewsSnMapper.updatesub(wmsOdsMateStorageNews);//库存调整
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {//
|
|
|
|
|
order.setUserDefined9("");
|
|
|
|
|
order.setUserDefined10("3");//失败
|
|
|
|
|
odsProcureOutOrderMapper.updateWMSOdsProcureOutOrderByids(order, orderList2FC);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
OutboundPostingzcSAPGYTS(orderList1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void OutboundPostingzcSAPGYTS(List<OdsProcureOutOrder> orderList) {
|
|
|
|
|
//先根据出库单获取
|
|
|
|
|
// -- and wms_ods_procure_out_order.Order_Status='3'
|
|
|
|
|
//我把过账状态-- and wms_ods_procure_out_order.User_Defined10!='2'去掉了
|
|
|
|
|
List<OdsProcureOutOrder> orderList1 = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderSpecialByIDs(orderList);
|
|
|
|
|
for (OdsProcureOutOrder order:
|
|
|
|
|
orderList1 ) {
|
|
|
|
|
if ("成本中心".equals(orderList1.get(0).getUserDefined6())){
|
|
|
|
|
//区分出来内部订单
|
|
|
|
|
Map paramMap=new HashMap<>();
|
|
|
|
|
List<Map> mapList = new ArrayList<>();
|
|
|
|
|
paramMap.put("GL_ACCOUNT", order.getUserDefined2());//总帐科目编号
|
|
|
|
|
paramMap.put("COSTCENTER", order.getUserDefined3());//成本中心
|
|
|
|
|
paramMap.put("GR_RCPT", order.getUserDefined4());//收货方/运达方
|
|
|
|
|
paramMap.put("PLANT", order.getSiteCode());//工厂
|
|
|
|
|
paramMap.put("LGORT", order.getLocCode());//库存地点
|
|
|
|
|
paramMap.put("MATNR", order.getMaterialCode());//物料号
|
|
|
|
|
paramMap.put("QUANTITY", order.getPlanNumber());//数量
|
|
|
|
|
paramMap.put("MEINS", order.getUnit());//条目单位
|
|
|
|
|
paramMap.put("BATCH", order.getUserDefined1());//批号
|
|
|
|
|
paramMap.put("PROD_DATE", order.getPlanDate());//生产日期
|
|
|
|
|
paramMap.put("EXPIRYDATE", order.getUserDefined5());//货架寿命到期日
|
|
|
|
|
mapList.add(paramMap);
|
|
|
|
|
R result2 = remoteSapService.sapProductOutboundCostCenter(mapList);
|
|
|
|
|
|
|
|
|
|
int code = result2.getCode();
|
|
|
|
|
OdsProcureOutOrder order1 = new OdsProcureOutOrder();
|
|
|
|
|
String msg = result2.getMsg();
|
|
|
|
|
order.setUserDefined11(msg);
|
|
|
|
|
if (code== 200){
|
|
|
|
|
//过账成功
|
|
|
|
|
Map map = new HashMap();
|
|
|
|
|
map = (Map) result2.getData();
|
|
|
|
|
String userDefined9 = (String) map.get("MATERIALDOCUMENT");
|
|
|
|
|
//order.setUserDefined9(userDefined9);
|
|
|
|
|
// order.setUserDefined10("2");//成功
|
|
|
|
|
// for (OdsProcureOutOrder order2:
|
|
|
|
|
// orderList2 ) {
|
|
|
|
|
order1.setID(order.getID());
|
|
|
|
|
order1.setSapNumber(order.getOutNumber());//成功..这个是否的outNumber是用已出库减去已经过账的数量
|
|
|
|
|
order1.setUserDefined10("2");//1是未过账,2是成功,3是失败
|
|
|
|
|
order1.setUserDefined9(userDefined9);//凭证
|
|
|
|
|
order1.setUserDefined11(msg);//信息
|
|
|
|
|
odsProcureOutOrderMapper.updateWMSOdsProcureOutOrdersapSpecialById(order1);
|
|
|
|
|
// }
|
|
|
|
|
order1.setProduceCode(order.getProduceCode());
|
|
|
|
|
order1.setMaterialCode(order.getMaterialCode());
|
|
|
|
|
List<WmsOdsMateStorageNews> odsEmStorageNews= odsProcureOutOrderMapper.selectWmsRawMissionOutByPrdAndMa(order1);
|
|
|
|
|
for (WmsOdsMateStorageNews wmsOdsMateStorageNews:
|
|
|
|
|
odsEmStorageNews) {
|
|
|
|
|
//wmsOdsMateStorageNews
|
|
|
|
|
wmsOdsMateStorageNews.setLastModifiedBy(SecurityUtils.getUsername());
|
|
|
|
|
wmsOdsMateStorageNewsSnMapper.updatesub(wmsOdsMateStorageNews);//库存调整
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
order1.setID(order.getID());
|
|
|
|
|
// order1.setSapNumber(order.getOutNumber());//成功..这个是否的outNumber是用已出库减去已经过账的数量
|
|
|
|
|
order1.setUserDefined10("3");//1是未过账,2是成功,3是失败
|
|
|
|
|
// order1.setUserDefined9(userDefined9);//凭证
|
|
|
|
|
order1.setUserDefined11(msg);//信息
|
|
|
|
|
odsProcureOutOrderMapper.updateWMSOdsProcureOutOrdersapSpecialTWById(order1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
//内部订单
|
|
|
|
|
Map paramMap=new HashMap<>();
|
|
|
|
|
List<Map> mapList = new ArrayList<>();
|
|
|
|
|
paramMap.put("AUFNR", order.getProduceCode());//
|
|
|
|
|
paramMap.put("GL_ACCOUNT", order.getUserDefined2());//
|
|
|
|
|
paramMap.put("GR_RCPT", order.getUserDefined4());//收货方/运达方
|
|
|
|
|
paramMap.put("PLANT", order.getSiteCode());//工厂
|
|
|
|
|
paramMap.put("LGORT", order.getLocCode());//库存地点
|
|
|
|
|
paramMap.put("MATNR", order.getMaterialCode());//
|
|
|
|
|
paramMap.put("QUANTITY", order.getPlanNumber());//
|
|
|
|
|
paramMap.put("MEINS", order.getUnit());//
|
|
|
|
|
paramMap.put("BATCH", order.getUserDefined1());//
|
|
|
|
|
paramMap.put("PROD_DATE", order.getPlanDate());//生产日期
|
|
|
|
|
paramMap.put("EXPIRYDATE", order.getUserDefined5());//货架寿命到期日
|
|
|
|
|
mapList.add(paramMap);
|
|
|
|
|
// R result2 = remoteSapService.sapProductOutboundCostTWO(mapList);
|
|
|
|
|
R result2 = remoteSapService.sapProductOutboundCostTW(mapList);
|
|
|
|
|
int code = result2.getCode();
|
|
|
|
|
OdsProcureOutOrder order1 = new OdsProcureOutOrder();
|
|
|
|
|
String msg = result2.getMsg();
|
|
|
|
|
order.setUserDefined11(msg);
|
|
|
|
|
if (code== 200){
|
|
|
|
|
//过账成功
|
|
|
|
|
Map map = new HashMap();
|
|
|
|
|
map = (Map) result2.getData();
|
|
|
|
|
String userDefined9 = (String) map.get("MATERIALDOCUMENT");
|
|
|
|
|
//order.setUserDefined9(userDefined9);
|
|
|
|
|
// order.setUserDefined10("2");//成功
|
|
|
|
|
// for (OdsProcureOutOrder order2:
|
|
|
|
|
// orderList2 ) {
|
|
|
|
|
order1.setID(order.getID());
|
|
|
|
|
order1.setSapNumber(order.getOutNumber());//成功..这个是否的outNumber是用已出库减去已经过账的数量
|
|
|
|
|
order1.setUserDefined10("2");//1是未过账,2是成功,3是失败
|
|
|
|
|
order1.setUserDefined9(userDefined9);//凭证
|
|
|
|
|
order1.setUserDefined11(msg);//信息
|
|
|
|
|
odsProcureOutOrderMapper.updateWMSOdsProcureOutOrdersapSpecialById(order1);
|
|
|
|
|
// }
|
|
|
|
|
order1.setProduceCode(order.getProduceCode());
|
|
|
|
|
order1.setMaterialCode(order.getMaterialCode());
|
|
|
|
|
List<WmsOdsMateStorageNews> odsEmStorageNews= odsProcureOutOrderMapper.selectWmsRawMissionOutByPrdAndMa(order1);
|
|
|
|
|
for (WmsOdsMateStorageNews wmsOdsMateStorageNews:
|
|
|
|
|
odsEmStorageNews) {
|
|
|
|
|
//wmsOdsMateStorageNews
|
|
|
|
|
wmsOdsMateStorageNews.setLastModifiedBy(SecurityUtils.getUsername());
|
|
|
|
|
wmsOdsMateStorageNewsSnMapper.updatesub(wmsOdsMateStorageNews);//库存调整
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
order1.setID(order.getID());
|
|
|
|
|
// order1.setSapNumber(order.getOutNumber());//成功..这个是否的outNumber是用已出库减去已经过账的数量
|
|
|
|
|
order1.setUserDefined10("3");//1是未过账,2是成功,3是失败
|
|
|
|
|
// order1.setUserDefined9(userDefined9);//凭证
|
|
|
|
|
order1.setUserDefined11(msg);//信息
|
|
|
|
|
odsProcureOutOrderMapper.updateWMSOdsProcureOutOrdersapSpecialTWById(order1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
@DS("#header.poolName")
|
|
|
|
|
public void OutboundPostingzcSAPTH(List<OdsProcureOutOrder> orderList) {
|
|
|
|
|