|
@@ -0,0 +1,378 @@
|
|
|
|
+package com.steerinfo.dil.service.impl;
|
|
|
|
+
|
|
|
|
+import com.steerinfo.dil.feign.*;
|
|
|
|
+import com.steerinfo.dil.mapper.*;
|
|
|
|
+import com.steerinfo.dil.model.*;
|
|
|
|
+import com.steerinfo.dil.service.IOyeWarehouseService;
|
|
|
|
+import com.steerinfo.dil.util.DataChange;
|
|
|
|
+import com.steerinfo.dil.util.SaleLogUtil;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.util.*;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@Service
|
|
|
|
+public class OyeWarehouseServiceImpl implements IOyeWarehouseService {
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private AmsSaleOrderMapper amsSaleOrderMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private AmsSaleOrderServiceImpl amsSaleOrderService;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ TmstruckLoadResult tmstruckLoadResult;
|
|
|
|
+ @Resource
|
|
|
|
+ TmstruckWeightResult tmstruckWeightResult;
|
|
|
|
+ @Resource
|
|
|
|
+ TmstruckWeightResultMapper tmstruckWeightResultMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ TmstruckLoadResultMapper tmstruckLoadResultMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ AmsSaleMaterialMapper amsSaleMaterialMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ RmsReceivePlaceMapper rmsReceivePlaceMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ JoinFeign joinFeign;
|
|
|
|
+ @Resource
|
|
|
|
+ OmstruckOrderMapper omstruckOrderMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ AmsSaleOrderMaterialServiceImpl amsSaleOrderMaterialService;
|
|
|
|
+ @Resource
|
|
|
|
+ TmsTruckFeign tmsTruckFeign;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ RmsMaterialMapper rmsMaterialMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ TmstrainPleaseApproveResultMapper tmstrainPleaseApproveResultMapper;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ WmspOutboundResultMaterialMapper wmspOutboundResultMaterialMapper;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ OtmsFeign otmsFeign;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ RmsFeign rmsFeign;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ BmstruckFeign bmstruckFeign;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ SaleLogUtil saleLogUtil;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public int addTransPlan(Map<String, Object> mapValue) throws Exception{
|
|
|
|
+ List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
|
|
|
|
+ // 得到发货单位
|
|
|
|
+ BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
|
|
|
|
+ // 收货单位
|
|
|
|
+ BigDecimal receiveId = DataChange.dataToBigDecimal(mapValue.get("receiveId"));
|
|
|
|
+ if (receiveId == null || receiveId.intValue() == 0) {
|
|
|
|
+ receiveId = amsSaleOrderMapper.findReceiveIdByOye(mapValue.get("receiveName"));
|
|
|
|
+ if (receiveId == null) {
|
|
|
|
+ throw new Exception("下单客户不存在!!!或无入库至欧冶库");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 是否自提
|
|
|
|
+ String isSelfMention = (String) mapValue.get("isSelfMention");
|
|
|
|
+ // 摘要
|
|
|
|
+ String saleRemark = (String) mapValue.get("saleRemark");
|
|
|
|
+ if (saleRemark == null) {
|
|
|
|
+ throw new Exception("片区不能为空");
|
|
|
|
+ }
|
|
|
|
+ //判断摘要与客户对应的摘要有没有在库存里
|
|
|
|
+ Map<String, Object> searchMap = new HashMap<>();
|
|
|
|
+ searchMap.put("consigneeId",receiveId);
|
|
|
|
+ searchMap.put("saleRemark",saleRemark);
|
|
|
|
+ List<BigDecimal> realTimeInventory = amsSaleMaterialMapper.getRealTimeInventory(searchMap);
|
|
|
|
+ if(realTimeInventory.size() == 0 || realTimeInventory.get(0) == null) {
|
|
|
|
+ throw new Exception("该客户所在片区无库存");
|
|
|
|
+ }
|
|
|
|
+ // 业务员
|
|
|
|
+ BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
|
|
|
|
+ if (salerId == null || salerId.intValue() == 0) {
|
|
|
|
+ if(mapValue.get("salerName") == null) {
|
|
|
|
+ throw new Exception("您输入的业务员为空,请检查后再导入!!");
|
|
|
|
+ }
|
|
|
|
+ salerId = amsSaleOrderMapper.findSalerId(mapValue.get("salerName"));
|
|
|
|
+ if (salerId == null) {
|
|
|
|
+ throw new Exception("您输入的业务员:" + mapValue.get("salerName") +"不存在!!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
|
|
|
|
+ int result = 0;
|
|
|
|
+ // 销售订单
|
|
|
|
+ AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
|
|
|
|
+ amsSaleOrder.setReceiveId(receiveId);
|
|
|
|
+ amsSaleOrder.setSaleRemark(saleRemark);
|
|
|
|
+ amsSaleOrder.setShipperId(shipperId);
|
|
|
|
+ amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
|
|
|
|
+ amsSaleOrder.setSaleOrderId(saleOrderId);
|
|
|
|
+ amsSaleOrder.setSalerId(salerId);
|
|
|
|
+
|
|
|
|
+ // 设置钢材订单
|
|
|
|
+ amsSaleOrder.setSaleType(new BigDecimal(50));
|
|
|
|
+ amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WOYDD",saleOrderId.intValue(),"-"));
|
|
|
|
+ amsSaleOrder.setInsertTime(new Date());
|
|
|
|
+ amsSaleOrder.setInsertUpdateRemark("新增欧冶转运计划");
|
|
|
|
+ amsSaleOrder.setInsertUsername("物流");
|
|
|
|
+ amsSaleOrder.setUpdateTime(new Date());
|
|
|
|
+ amsSaleOrder.setDeleted(new BigDecimal(0));
|
|
|
|
+ amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
|
|
|
|
+ amsSaleOrder.setBusinessDate(new Date());
|
|
|
|
+ // 销售订单物资表
|
|
|
|
+ AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
|
|
|
|
+ // 车序号物资表
|
|
|
|
+ AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
|
|
|
|
+ // 遍历每一行
|
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
|
+ if(!getRealTimeInfo(map)) {
|
|
|
|
+ throw new Exception("超出实时库存数量,请调整后再次输入");
|
|
|
|
+ }
|
|
|
|
+ /*
|
|
|
|
+ 车序号表
|
|
|
|
+ */
|
|
|
|
+ // 得到车序号
|
|
|
|
+ BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("cxh"));
|
|
|
|
+ Map<String,Object> saleMap = new HashMap<>();
|
|
|
|
+ saleMap.put("saleOrderId",saleOrderId);
|
|
|
|
+ saleMap.put("saleOrderMaterialTruckNo",truckNo);
|
|
|
|
+ // 检测销售订单下的车序号是否已存在
|
|
|
|
+ List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
|
|
|
|
+ // 车序号表
|
|
|
|
+ AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
|
|
|
|
+ if (amsSaleOrderMaterials == null || amsSaleOrderMaterials.size() == 0) {
|
|
|
|
+ // 车序号主键
|
|
|
|
+ BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
|
|
|
|
+ BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shipperAddressId"));
|
|
|
|
+ if (shippingAddressId == null || shippingAddressId.intValue() == 0) {
|
|
|
|
+ String province = (String) map.get("province");
|
|
|
|
+ String district = (String) map.get("district");
|
|
|
|
+ String town = (String) map.get("town");
|
|
|
|
+ Map<String,Object> addressMap = new HashMap<>();
|
|
|
|
+ addressMap.put("province",province);
|
|
|
|
+ addressMap.put("district",district);
|
|
|
|
+ addressMap.put("town",town);
|
|
|
|
+ shippingAddressId = amsSaleOrderMapper.findAddressId(addressMap);
|
|
|
|
+ if (shippingAddressId == null) {
|
|
|
|
+ throw new Exception("您输入的:" + province + district + town + "地址不存在!!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 车号备注
|
|
|
|
+ String truckRemark = (String) (map.get("truckRemark"));
|
|
|
|
+ String place = (String) (map.get("place"));
|
|
|
|
+ if (place != null && !"null".equals(place)) {
|
|
|
|
+ List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
|
|
|
|
+ if (placeIdList == null || placeIdList.size() == 0) {
|
|
|
|
+ RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
|
|
|
|
+ rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
|
|
|
|
+ rmsReceivePlace.setAddressId(shippingAddressId);
|
|
|
|
+ rmsReceivePlace.setAddressDeliveryAddress(place);
|
|
|
|
+ amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
|
|
|
|
+ rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
|
|
|
|
+ } else {
|
|
|
|
+ amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (amsSaleOrderMaterial.getSaleShippingAddressId() != null && isSelfMention.equals("否")) {
|
|
|
|
+ // 自动匹配承运商
|
|
|
|
+ List<Map<String, Object>> carrierList = amsSaleOrderService.getCarrierByAddress(amsSaleOrderMaterial.getSaleShippingAddressId());
|
|
|
|
+ BigDecimal carrierCount = null;
|
|
|
|
+ if(place != null && !"null".equals(place)){
|
|
|
|
+ carrierCount = amsSaleOrderMapper.getMoreCarrier(place);
|
|
|
|
+ }
|
|
|
|
+ //根据收货地址id查询备注,判断是否需要匹配承运商
|
|
|
|
+ String addressRemark = amsSaleOrderMaterialMapper.getAddressRemark(shippingAddressId);
|
|
|
|
+ // 单一承运商才进行匹配
|
|
|
|
+ if (carrierList != null && carrierList.size() == 1 && carrierList.get(0) != null && carrierCount.intValue() == 0 && addressRemark == null) {
|
|
|
|
+ List<Map<String, Object>> list = new ArrayList<>();
|
|
|
|
+ Map<String, Object> map1 = carrierList.get(0);
|
|
|
|
+ // 传入车序号主键和承运商id
|
|
|
|
+ map1.put("saleOrderMaterialId", saleOrderMaterialId);
|
|
|
|
+ list.add(map1);
|
|
|
|
+ amsSaleOrderService.dispatchToCarrier(list);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (isSelfMention.equals("是")) {
|
|
|
|
+ // 根据收货单位id查询出收货单位名称
|
|
|
|
+ String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
|
|
|
|
+ // 根据收货单位名称查询承运商id
|
|
|
|
+ BigDecimal carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
|
|
|
|
+ List<Map<String, Object>> list = new ArrayList<>();
|
|
|
|
+ Map<String,Object> map1 = new HashMap<>();
|
|
|
|
+ // 传入车序号主键和承运商id
|
|
|
|
+ if (carrierId != null) {
|
|
|
|
+ map1.put("saleOrderMaterialId", saleOrderMaterialId);
|
|
|
|
+ map1.put("carrierId", carrierId);
|
|
|
|
+ list.add(map1);
|
|
|
|
+ amsSaleOrderService.dispatchToCarrier(list);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 收货方姓名
|
|
|
|
+ String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
|
|
|
|
+ // 收货方电话
|
|
|
|
+ String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
|
+ amsSaleOrderMaterial.setSaleDateOfReceipt(new Date());
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
|
|
|
|
+ amsSaleOrderMaterial.setTruckRemark(truckRemark);
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
|
|
|
|
+ if(map.get("orderNo") != null) {
|
|
|
|
+ amsSaleOrderMaterial.setPreviousOrderNumber((String) map.get("orderNo"));
|
|
|
|
+ }
|
|
|
|
+ if (consigneeName != null && !consigneeName.equals("null")) {
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
|
|
|
|
+ }
|
|
|
|
+ if (consigneeTel != null && !consigneeTel.equals("null")) {
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
|
|
|
|
+ }
|
|
|
|
+ amsSaleOrderMaterial.setInsertTime(new Date());
|
|
|
|
+ amsSaleOrderMaterial.setUpdateTime(new Date());
|
|
|
|
+ amsSaleOrderMaterial.setInsertUpdateRemark("物流新增");
|
|
|
|
+ result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
|
|
|
|
+ }
|
|
|
|
+ /*
|
|
|
|
+ 销售订单物资表
|
|
|
|
+ */
|
|
|
|
+ // 物资
|
|
|
|
+ BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
|
|
|
|
+ if (materialId == null || materialId.intValue() == 0) {
|
|
|
|
+ String name = (String) map.get("materialName");
|
|
|
|
+ String specification = (String) map.get("materialSpecification");
|
|
|
|
+ String model = (String) map.get("materialModel");
|
|
|
|
+ Map<String,Object> materialMap = new HashMap<>();
|
|
|
|
+ materialMap.put("name",name);
|
|
|
|
+ materialMap.put("specification",specification);
|
|
|
|
+ if (model == null || model.equals("") || model.equals("null")) {
|
|
|
|
+ model = null;
|
|
|
|
+ }
|
|
|
|
+ materialMap.put("model",model);
|
|
|
|
+ materialId = amsSaleOrderMapper.findMaterialId(materialMap);
|
|
|
|
+ if (materialId == null) {
|
|
|
|
+ throw new Exception("您输入的物资:" + name + specification + model + "不存在!!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
|
|
|
|
+ RmsMaterial rmsMaterial = new RmsMaterial();
|
|
|
|
+ rmsMaterial.setMaterialId(materialId);
|
|
|
|
+ if (materialCount == null) {
|
|
|
|
+ materialCount = new Integer(0);
|
|
|
|
+ }
|
|
|
|
+ rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
|
|
|
|
+ rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
|
|
|
|
+ // 物资件数
|
|
|
|
+ BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
|
|
|
|
+ // 物资名称
|
|
|
|
+ Object materialName = map.get("materialName");
|
|
|
|
+ // 钢材米数
|
|
|
|
+ BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
|
|
|
|
+ // 判断物资是否是盘螺或盘元/盘圆
|
|
|
|
+ if (materialName != null && (materialName.toString().contains("盘螺") || materialName.toString().contains("盘元") || materialName.toString().contains("盘圆"))) {
|
|
|
|
+ amsSaleMaterial.setSteelMeter(null);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ amsSaleMaterial.setSteelMeter(steelMeters);
|
|
|
|
+ }
|
|
|
|
+ // 是否磅重销售(0:磅重;1:理重)
|
|
|
|
+ BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPound"));
|
|
|
|
+
|
|
|
|
+ BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
|
|
|
|
+ //if (inventoryId == null || inventoryId.intValue() == 0) {
|
|
|
|
+ // if (map.get("inboundWarehouseName") == null || "".equals(map.get("inboundWarehouseName"))) {
|
|
|
|
+ // throw new Exception("库房名称为必填");
|
|
|
|
+ // }
|
|
|
|
+ // Map<Object, Object> excelMap = new HashMap<>();
|
|
|
|
+ // excelMap.put("materialId",materialId);
|
|
|
|
+ // excelMap.put("inboundWarehouseName",map.get("inboundWarehouseName"));
|
|
|
|
+ // excelMap.put("meter",steelMeters);
|
|
|
|
+ // excelMap.put("singleWeight",map.get())
|
|
|
|
+ //}
|
|
|
|
+ // 销售订单物资表主键
|
|
|
|
+ BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
|
|
|
|
+ amsSaleMaterial.setSaleMaterialId(saleMaterialId);
|
|
|
|
+ //amsSaleMaterial.setMaterialWeight();
|
|
|
|
+ amsSaleMaterial.setSaleOrderId(saleOrderId);
|
|
|
|
+ amsSaleMaterial.setMaterialId(materialId);
|
|
|
|
+ amsSaleMaterial.setMaterialNumber(materialNumber);
|
|
|
|
+ amsSaleMaterial.setMaterialPlanNumber(materialNumber);
|
|
|
|
+ amsSaleMaterial.setSaleWarehouse(inventoryId + "");
|
|
|
|
+ amsSaleMaterial.setSaleNo(amsSaleOrder.getSaleNumber());
|
|
|
|
+ try {
|
|
|
|
+ amsSaleMaterial.setTransferInOfWarehouse(saleRemark);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ amsSaleMaterial.setInsertTime(new Date());
|
|
|
|
+ amsSaleMaterial.setUpdateTime(new Date());
|
|
|
|
+ amsSaleMaterial.setIsPoundSale(isPoundSale);
|
|
|
|
+ amsSaleMaterial.setInsertUpdateRemark("物流新增");
|
|
|
|
+ result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
|
|
|
|
+ /*
|
|
|
|
+ 车序号物资表
|
|
|
|
+ */
|
|
|
|
+ // 车序号物资表主键
|
|
|
|
+ BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
|
|
|
|
+ amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
|
|
|
|
+ amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
|
|
|
|
+ amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
|
|
|
|
+ amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
|
|
|
|
+ amsSaleTrucknoMaterial.setInsertTime(new Date());
|
|
|
|
+ amsSaleTrucknoMaterial.setUpdateTime(new Date());
|
|
|
|
+ amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
|
|
|
|
+ result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
|
|
|
|
+ }
|
|
|
|
+ result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
|
|
|
|
+ return saleOrderId.intValue();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public List<Map<String, Object>> getTransPlan(Map<String, Object> mapValue) {
|
|
|
|
+ return amsSaleOrderMapper.getTransPlan(mapValue);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public int approveTransPlan(Map<String, Object> map) {
|
|
|
|
+ List<Map<String,Object>> mapList = (List<Map<String,Object>>) map.get("mapList");
|
|
|
|
+ int i = 0 ;
|
|
|
|
+ for (Map<String,Object> approveMap : mapList) {
|
|
|
|
+ i += amsSaleOrderMapper.approveTransPlan(approveMap);
|
|
|
|
+ }
|
|
|
|
+ return i;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //根据销售订单子表ID,判断待出库的一个数量
|
|
|
|
+ public synchronized Boolean getRealTimeInfo(Map<String,Object> map) throws Exception {
|
|
|
|
+ BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
|
|
|
|
+ BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
|
|
|
|
+ //根据库存ID,统计所有未装但已制订计划的正常单据
|
|
|
|
+ BigDecimal unloadMaterialNumber = amsSaleMaterialMapper.getRealTimeUnloadNumber(inventoryId);
|
|
|
|
+ BigDecimal realTimeMaterialNumber = amsSaleMaterialMapper.getRealTimeMaterialNumber(inventoryId);
|
|
|
|
+ if (realTimeMaterialNumber.intValue() == 0) {
|
|
|
|
+ throw new Exception("该实时库存无数量,无法下单");
|
|
|
|
+ }
|
|
|
|
+ if (realTimeMaterialNumber.subtract(unloadMaterialNumber).compareTo(materialNumber) >= 0) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|