package com.steerinfo.dil.service.impl; import com.steerinfo.dil.feign.OmsFeign; import com.steerinfo.dil.feign.TmstruckFeign; import com.steerinfo.dil.mapper.RmsPwarehouseGridMapper; import com.steerinfo.dil.mapper.WmspGridMaterialMapper; import com.steerinfo.dil.model.RmsPwarehouseGrid; import com.steerinfo.dil.model.WmspGridMaterial; import com.steerinfo.dil.service.IPlatformWarehouseService; import com.steerinfo.dil.util.DataChange; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.xml.crypto.Data; import java.math.BigDecimal; import java.rmi.server.ExportException; import java.util.Date; import java.util.List; import java.util.Map; @Service public class PlatformWarehouseServiceImpl implements IPlatformWarehouseService { @Autowired RmsPwarehouseGridMapper rmsPwarehouseGridMapper; @Autowired WmspGridMaterialMapper wmspGridMaterialMapper; @Autowired OmsFeign omsFeign; @Autowired TmstruckFeign tmstruckFeign; @Override @Transactional public int platformInboundOrOut(Map map) throws Exception { int i = 0; //1.首先判断有没有填写车皮号, String wagonNo = map.get("wagonNo").toString(); //根据发站名称,去仓库表查询仓库。 List warehouseIds = rmsPwarehouseGridMapper.getWarehouseIds(map); if(warehouseIds.size() == 0){ throw new Exception("仓库不存在,请联系管理员添加!"); } BigDecimal warehouseId = DataChange.dataToBigDecimal(warehouseIds.get(0)); map.put("warehouseId",warehouseId); BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId")); ////根据运输ID去网格表查询是否有没有 //根据运输订单ID,去查询运输订单子表的物资 List> orderMaterialList = rmsPwarehouseGridMapper.getOrderMaterialList(orderId); map.put("orderMaterialList",orderMaterialList); //2.做判断,是否填写车皮号 if(wagonNo != null && !"".equals(wagonNo) && !"null".equals(wagonNo)){ //2.1 如果填写了车皮号,则代表入库的同时出库,出库则需要将火车和汽车绑定起来,这是最重要的一点,其他不变 try { inwardInbound(map); afterInwardOutbound(map); } catch (Exception e) { throw new Exception(e.getMessage()); } return i; }else{ //单纯入库,关闭运输订单,生成卸货实绩,生成网格和实时库存 try { inwardInbound(map); } catch (Exception e) { throw new Exception(e.getMessage()); } return i; } } //public int inwardOutBound(Mapmap){ // //如果填写了车号,则说明入库之后需要出库 // int i; // RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); // BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("warehouseId")); // BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId")); // //获取运输订单ID当做垛位 // //根据运输订单ID,去查询运输订单子表的物资 // List> orderMaterialList = (List>) map.get("orderMaterialList"); // //卸货 // for(Map orderMaterialMap:orderMaterialList){ // map.put("materialId",orderMaterialMap.get("materialId")); // map.put("warehouseId",warehouseId); // Map returnMap = tmstruckFeign.updateUnloadResult(map); // String code = (String) returnMap.get("code"); // if("200".equals(code)){ // System.out.println("新增卸车成功:" + map.get("orderId")); // }else { // return -3; // } // } // //设置主键ID // //根据运输订单号去查询网格 // BigDecimal gridId = null; // if(rmsPwarehouseGridMapper.selectGridByOrderId(orderId) != null){ // gridId = rmsPwarehouseGridMapper.selectGridByOrderId(orderId); // }else{ // gridId = new BigDecimal(rmsPwarehouseGridMapper.selectMaxId().intValue() + 1); // } // rmsPwarehouseGrid.setGridId(gridId); // rmsPwarehouseGrid.setWarehouseId(warehouseId); // rmsPwarehouseGrid.setStackingId(orderId); // rmsPwarehouseGrid.setGridType(new BigDecimal(1)); // rmsPwarehouseGrid.setInsertUsername(map.get("personnelSsoId").toString()); // if (map.get("remark") != null){ // rmsPwarehouseGrid.setInsertUpdateRemark(map.get("remark").toString()); // } // rmsPwarehouseGrid.setInsertTime(new Date()); // for(Map orderMaterialMap:orderMaterialList){ // WmspGridMaterial wmspGridMaterial = new WmspGridMaterial(); // //设置主键 // wmspGridMaterial.setGmId(wmspGridMaterialMapper.getCount()); // //将钢材物资ID // wmspGridMaterial.setGridId(gridId); // wmspGridMaterial.setMaterialId(DataChange.dataToBigDecimal(orderMaterialMap.get("materialId"))); // wmspGridMaterial.setDeleted(new BigDecimal(1)); // wmspGridMaterial.setGmNumber(DataChange.dataToBigDecimal(orderMaterialMap.get("materialNum"))); // wmspGridMaterial.setInsertTime(new Date()); // wmspGridMaterial.setInsertUsername(map.get("personnelSsoId").toString()); // wmspGridMaterialMapper.insertSelective(wmspGridMaterial); // } // rmsPwarehouseGridMapper.insertSelective(rmsPwarehouseGrid); // //入库之后关闭运输订单 // try { // System.out.println(orderId); // i = omsFeign.closeSteelOrderType4(orderId); // // } catch (Exception e) { // System.out.println(e.getMessage()); // return -2; // } // return 1; //} //重新写一个方法,抽出来单纯入库 @Transactional public int inwardInbound(Mapmap) throws Exception { //2.2 如果没有填写车皮号,则代表只入库 //3 将运单当做垛位,与网格表关联起来 int i ; RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("warehouseId")); BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId")); //获取运输订单ID当做垛位 //根据运输订单ID,去查询运输订单子表的物资 List> orderMaterialList = (List>) map.get("orderMaterialList"); //卸货 for(Map orderMaterialMap:orderMaterialList){ map.put("materialId",orderMaterialMap.get("materialId")); map.put("warehouseId",warehouseId); Map returnMap = tmstruckFeign.updateUnloadResult(map); String code = (String) returnMap.get("code"); if("200".equals(code)){ System.out.println("新增卸车成功:" + map.get("orderId")); }else { throw new Exception("卸车失败,请联系管理员"); } } //根据运输订单ID,去查询该车所装的物资钢材ID列表,乱尺不存在扫描实绩,故不查了改查物资ID //List materialSteelIds = rmsPwarehouseGridMapper.getMaterialSteelIds(orderId); //设置主键ID BigDecimal gridId = null; if(rmsPwarehouseGridMapper.selectGridByOrderId(orderId) != null){ gridId = rmsPwarehouseGridMapper.selectGridByOrderId(orderId); }else{ gridId = new BigDecimal(rmsPwarehouseGridMapper.selectMaxId().intValue() + 1); } rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setStackingId(orderId); rmsPwarehouseGrid.setGridType(new BigDecimal(1)); rmsPwarehouseGrid.setInsertUsername(map.get("personnelSsoId").toString()); rmsPwarehouseGrid.setInsertTime(new Date()); if (map.get("remark") != null){ rmsPwarehouseGrid.setInsertUpdateRemark(map.get("remark").toString()); } if(rmsPwarehouseGridMapper.selectGridByOrderId(orderId) != null){ rmsPwarehouseGridMapper.updateByPrimaryKeySelective(rmsPwarehouseGrid); }else{ for(Map orderMaterialMap:orderMaterialList){ WmspGridMaterial wmspGridMaterial = new WmspGridMaterial(); //设置主键 wmspGridMaterial.setGmId(wmspGridMaterialMapper.getCount()); //将钢材物资ID wmspGridMaterial.setGridId(gridId); wmspGridMaterial.setMaterialId(DataChange.dataToBigDecimal(orderMaterialMap.get("materialId"))); wmspGridMaterial.setDeleted(new BigDecimal(0)); wmspGridMaterial.setGmNumber(DataChange.dataToBigDecimal(orderMaterialMap.get("materialNum"))); wmspGridMaterial.setInsertTime(new Date()); wmspGridMaterial.setInsertUsername(map.get("personnelSsoId").toString()); wmspGridMaterialMapper.insertSelective(wmspGridMaterial); } rmsPwarehouseGridMapper.insertSelective(rmsPwarehouseGrid); } //入库之后关闭运输订单 try { System.out.println(orderId); i = omsFeign.closeSteelOrderType4(orderId); } catch (Exception e) { System.out.println(e.getMessage()); throw new Exception("关闭订单失败"); } return 1; } @Override @Transactional public int afterInwardOutbound(Map map) throws Exception { //需要参数 运输订单ID,人员ssoId BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId")); //根据运输订单ID,出库 int i = wmspGridMaterialMapper.updateWgmByOrderId(orderId); //同步生成火运实绩 try { omsFeign.generateOmstrain(map); } catch (Exception e) { throw new Exception("关联火运失败,请联系管理员"); } return i; } }