|
|
|
@ -1459,9 +1459,15 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
|
|
|
|
|
public List<OdsProcureOutOrder> ProductionMaterialRequisitionSC(OdsProcureOutOrder odsProcureOutOrder) {
|
|
|
|
|
//二维码获取的信息查询对应的sap生产订单,再用生产订单查询子单
|
|
|
|
|
DynamicDataSourceContextHolder.push("ds_" + odsProcureOutOrder.getFactoryCode());
|
|
|
|
|
List<OdsProcureOutOrder> orderLists=new ArrayList<>();
|
|
|
|
|
List<OdsProcureOutOrder> orderListone= odsProcureOutOrderMapper.selectWmsOdsProcureOutOrder(odsProcureOutOrder);
|
|
|
|
|
if (orderListone.size()>0){
|
|
|
|
|
return orderListone;
|
|
|
|
|
for (OdsProcureOutOrder order:orderListone){
|
|
|
|
|
if (!"3".equals(order.getOrderStatus())){
|
|
|
|
|
orderLists.add(order);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return orderLists;
|
|
|
|
|
}
|
|
|
|
|
OdsProcureOutOrder order = odsProcureOutOrderMapper.selectMesPrepareBC(odsProcureOutOrder);
|
|
|
|
|
List<OdsProcureOutOrder> orderList= odsProcureOutOrderMapper.selectMesPrepareDetailBC(order);
|
|
|
|
@ -1489,7 +1495,7 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
|
|
|
|
|
//odsProcureOutOrder1.setProductionLineCode(order1.getStationNo());
|
|
|
|
|
//odsProcureOutOrder1.setUserDefined1(orderLine1.getBatchNo());
|
|
|
|
|
odsProcureOutOrder1.setActive("1");
|
|
|
|
|
odsProcureOutOrder1.setOrderStatus("0");//
|
|
|
|
|
odsProcureOutOrder1.setOrderStatus("1");//
|
|
|
|
|
odsProcureOutOrder1.setPlanNumber(order1.getPlanNumber());
|
|
|
|
|
odsProcureOutOrder1.setUserDefined2(order1.getUserDefined2());
|
|
|
|
|
odsProcureOutOrder1.setUserDefined3(order1.getUserDefined3());
|
|
|
|
@ -1508,64 +1514,83 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
|
|
|
|
|
@Override
|
|
|
|
|
public WmsOdsMateStorageNewsSn SweepMaterialCardSC(WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn) {
|
|
|
|
|
DynamicDataSourceContextHolder.push("ds_" + wmsOdsMateStorageNewsSn.getFactoryCode());
|
|
|
|
|
wmsOdsMateStorageNewsSn.setUserDefined3("1");
|
|
|
|
|
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSnk= wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByWlCode(wmsOdsMateStorageNewsSn);
|
|
|
|
|
wmsOdsMateStorageNewsSn.setUserDefined3("1");//1是入库
|
|
|
|
|
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSnk= wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByWlCodeTEM(wmsOdsMateStorageNewsSn);
|
|
|
|
|
return wmsOdsMateStorageNewsSnk;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 传了领料单号,还有标识卡的信息,例如,物料编号,物料描述,数量,单位,状态,需求时间,工厂,
|
|
|
|
|
* 要根据标识卡信息和生产领料单的信息,这样的话,需要用生产领料单和标识卡的信息来查询出来对应的领料单
|
|
|
|
|
* ,进行修改对应领料单的出库数量和状态(如果计划数量小于或者等于出库数量,状态改为完成),然后在出库表中添加记录,进行库存的修改(占用数量),先是明细后是总表
|
|
|
|
|
* 然后是过账,过账选择生产领料单为完成状态并且过账状态是未过账的进行过账,(过账失败的在页面上过账),--过账-成功的话,取消占用减去库存,记录信息,如果失败是记录信息,(页面过账)
|
|
|
|
|
* @param orderList
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public String NewConMaterialOutSC(List<OdsProcureOutOrder> orderList) {
|
|
|
|
|
//修改对应订单--插入对应出库托盘数据数据
|
|
|
|
|
// for (OdsProcureOutOrder odsProcureOutOrder:
|
|
|
|
|
// orderList) {
|
|
|
|
|
// //领料单,物料编号,领料单批次,物料名称,托盘号,出库数量,库位号,
|
|
|
|
|
// odsProcureOutOrder.
|
|
|
|
|
// }
|
|
|
|
|
String result="操作成功";
|
|
|
|
|
String factoryCode = orderList.get(0).getFactoryCode();
|
|
|
|
|
DynamicDataSourceContextHolder.push("ds_" + factoryCode);
|
|
|
|
|
for (OdsProcureOutOrder odsProcureOutOrder :
|
|
|
|
|
orderList) {
|
|
|
|
|
//领料单,物料编号,领料单批次,物料名称,托盘号,出库数量,库位号,
|
|
|
|
|
WmsToWCSDTO wcsdto = new WmsToWCSDTO();
|
|
|
|
|
|
|
|
|
|
wcsdto.setRfidNo(odsProcureOutOrder.getSn());
|
|
|
|
|
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectwmsRfidNotwo(wcsdto);
|
|
|
|
|
//明细
|
|
|
|
|
String produceCode= odsProcureOutOrder.getProduceCode();//生产领料单号
|
|
|
|
|
String createBy= odsProcureOutOrder.getCreateBy();//操作人
|
|
|
|
|
String mateOrderInSnId= odsProcureOutOrder.getMateOrderInSnId();
|
|
|
|
|
String waCode= odsProcureOutOrder.getWaCode();
|
|
|
|
|
String whCode= odsProcureOutOrder.getWhCode();
|
|
|
|
|
String wlCode= odsProcureOutOrder.getWlCode();
|
|
|
|
|
String sn= odsProcureOutOrder.getSn();
|
|
|
|
|
String materialCode= odsProcureOutOrder.getMaterialCode();
|
|
|
|
|
String materialDesc= odsProcureOutOrder.getMaterialDesc();
|
|
|
|
|
BigDecimal amount= odsProcureOutOrder.getAmount();//数量
|
|
|
|
|
String userDefined1= odsProcureOutOrder.getUserDefined1();//单位
|
|
|
|
|
String userDefined2= odsProcureOutOrder.getUserDefined2();//批次
|
|
|
|
|
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByMateOrderInSnIdk(mateOrderInSnId);
|
|
|
|
|
//wms_raw_mission_out--保存
|
|
|
|
|
//ods_procure_out_order--修改
|
|
|
|
|
WCSInventoryPlan wcsInventoryPlan = new WCSInventoryPlan();
|
|
|
|
|
wcsInventoryPlan.setSku(odsProcureOutOrder.getMaterialCode());
|
|
|
|
|
// WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan);
|
|
|
|
|
|
|
|
|
|
// WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan);
|
|
|
|
|
OdsProcureOutOrder order = new OdsProcureOutOrder();
|
|
|
|
|
order.setProduceCode(odsProcureOutOrder.getProduceCode());//领料单
|
|
|
|
|
order.setMaterialCode(odsProcureOutOrder.getMaterialCode());//
|
|
|
|
|
order.setMaterialDesc(odsProcureOutOrder.getMaterialDesc());
|
|
|
|
|
order.setUserDefined1(odsProcureOutOrder.getUserDefined1());//批次
|
|
|
|
|
order.setSn(odsProcureOutOrder.getSn());
|
|
|
|
|
order.setPlanNumber(odsProcureOutOrder.getPlanNumber());
|
|
|
|
|
order.setLocCode(odsProcureOutOrder.getLocCode());
|
|
|
|
|
order.setProduceCode(produceCode);//领料单
|
|
|
|
|
order.setMaterialCode(materialCode);//
|
|
|
|
|
order.setMaterialDesc(materialDesc);
|
|
|
|
|
order.setUserDefined1(userDefined2);//批次
|
|
|
|
|
order.setUserDefined2(whCode);
|
|
|
|
|
order.setUserDefined3(wlCode);
|
|
|
|
|
order.setSn(sn);
|
|
|
|
|
order.setPlanNumber(amount);
|
|
|
|
|
order.setLocCode(waCode);//库区
|
|
|
|
|
order.setID(IdUtils.fastSimpleUUID());
|
|
|
|
|
order.setUnit(odsProcureOutOrder.getUnit());
|
|
|
|
|
order.setUnit(userDefined1);
|
|
|
|
|
order.setFactoryCode(factoryCode);
|
|
|
|
|
order.setActive("1");
|
|
|
|
|
order.setCreateBy(odsProcureOutOrder.getCreateBy());
|
|
|
|
|
order.setCreateBy(createBy);
|
|
|
|
|
order.setCreateDate(new Date());
|
|
|
|
|
odsProcureOutOrderMapper.insertWmsRawMissionOut(order);
|
|
|
|
|
|
|
|
|
|
OdsProcureOutOrder odsProcureOutOrder1 = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderByID(odsProcureOutOrder.getID());
|
|
|
|
|
BigDecimal realityNumber1 = odsProcureOutOrder1.getOutNumber();//累出库数
|
|
|
|
|
BigDecimal realityNumber = odsProcureOutOrder1.getPlanNumber();//计划
|
|
|
|
|
BigDecimal planNumber = odsProcureOutOrder.getPlanNumber();//本次实际数量
|
|
|
|
|
OdsProcureOutOrder odsProcureOutOrder1=new OdsProcureOutOrder();
|
|
|
|
|
odsProcureOutOrder1.setProduceCode(produceCode);
|
|
|
|
|
odsProcureOutOrder1.setMaterialCode(materialCode);
|
|
|
|
|
List<OdsProcureOutOrder> odsProcureOutOrders = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrder(odsProcureOutOrder1);
|
|
|
|
|
OdsProcureOutOrder order1= odsProcureOutOrders.get(0);
|
|
|
|
|
BigDecimal realityNumber1 = order1.getOutNumber();//累出库数
|
|
|
|
|
BigDecimal realityNumber = order1.getPlanNumber();//计划
|
|
|
|
|
BigDecimal planNumber = amount;//本次实际数量
|
|
|
|
|
BigDecimal tem = realityNumber1.add(planNumber);
|
|
|
|
|
if (tem.compareTo(realityNumber)== 0) {
|
|
|
|
|
odsProcureOutOrder1.setOrderStatus("3");
|
|
|
|
|
if (tem.compareTo(realityNumber)>= 0) {
|
|
|
|
|
order1.setOrderStatus("3");
|
|
|
|
|
} else {
|
|
|
|
|
odsProcureOutOrder1.setOrderStatus("2");
|
|
|
|
|
order1.setOrderStatus("2");
|
|
|
|
|
}
|
|
|
|
|
odsProcureOutOrder1.setOutNumber(tem);
|
|
|
|
|
odsProcureOutOrderMapper.updateWmsOdsProcureOutOrder(odsProcureOutOrder1);//订单修改
|
|
|
|
|
order1.setOutNumber(tem);
|
|
|
|
|
odsProcureOutOrderMapper.updateWmsOdsProcureOutOrder(order1);//订单修改
|
|
|
|
|
//明细
|
|
|
|
|
// BigDecimal temk= wmsOdsMateStorageNewsSn.getAmount().subtract(amount);
|
|
|
|
|
wmsOdsMateStorageNewsSn.setOutNumber(amount);
|
|
|
|
|
wmsOdsMateStorageNewsSn.setLastModifiedBy(createBy);
|
|
|
|
|
wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSnAddoutNumber(wmsOdsMateStorageNewsSn);//库存明细
|
|
|
|
|
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
|
|
|
|
|
wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码
|
|
|
|
|
wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码
|
|
|
|
@ -1573,13 +1598,106 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
|
|
|
|
|
wmsOdsEmStorageNews.setProductBatch(wmsOdsMateStorageNewsSn.getUserDefined2());
|
|
|
|
|
wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
|
|
|
|
|
wmsOdsEmStorageNews.setAmount(odsProcureOutOrder.getPlanNumber());//库存
|
|
|
|
|
wmsOdsEmStorageNews.setLastModifiedBy(createBy);
|
|
|
|
|
wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);//库存调整
|
|
|
|
|
wmsOdsMateStorageNewsSn.setUserDefined1("1");
|
|
|
|
|
wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn);//库存明细
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param orderList
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@DS("#header.poolName")
|
|
|
|
|
public void OutboundPostingzcSAP(List<OdsProcureOutOrder> orderList) {
|
|
|
|
|
//先根据出库单获取
|
|
|
|
|
// * 退料的移动类型为 262
|
|
|
|
|
// * 领料的移动类型为 261
|
|
|
|
|
// List<OdsProcureOutOrder> orderList1=odsProcureOutOrderMapper.selectOdsProcureOutOrderListByIds(orderList);
|
|
|
|
|
List<OdsProcureOutOrder> orderList1 = odsProcureOutOrderMapper.selectOdsProcureOutOrderListByu1(orderList);
|
|
|
|
|
//查询这个地方先暂时去掉Order_Status = '3' 条件
|
|
|
|
|
//List<SapMaterialPosting> sapMaterialPostingList=new ArrayList<>();
|
|
|
|
|
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) {
|
|
|
|
|
//取sap仓库号
|
|
|
|
|
if ("X".equals(odsProcureOutOrder.getUserDefined3())) {
|
|
|
|
|
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);
|
|
|
|
|
} else {
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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.updateOdsProcureOutOrderByids(order, orderList2);
|
|
|
|
|
|
|
|
|
|
} else {//
|
|
|
|
|
order.setUserDefined9("");
|
|
|
|
|
order.setUserDefined10("3");//失败
|
|
|
|
|
odsProcureOutOrderMapper.updateOdsProcureOutOrderByids(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.updateOdsProcureOutOrderByids(order, orderList2FC);
|
|
|
|
|
} else {//
|
|
|
|
|
order.setUserDefined9("");
|
|
|
|
|
order.setUserDefined10("3");//失败
|
|
|
|
|
odsProcureOutOrderMapper.updateOdsProcureOutOrderByids(order, orderList2FC);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String dayin( List<OdsProcureOrder> orderList) {
|
|
|
|
|
// 定义请求的URL地址
|
|
|
|
|