|
@@ -1,15 +1,14 @@
|
|
|
package com.steerinfo.dil.service.impl;
|
|
|
|
|
|
-import com.steerinfo.dil.mapper.AmsDispatchSaleOrderMapper;
|
|
|
-import com.steerinfo.dil.mapper.AmsSaleOrderMapper;
|
|
|
-import com.steerinfo.dil.mapper.AmsSaleOrderMaterialMapper;
|
|
|
-import com.steerinfo.dil.mapper.AmsSaleTrucknoMaterialMapper;
|
|
|
-import com.steerinfo.dil.model.AmsDispatchSaleOrder;
|
|
|
-import com.steerinfo.dil.model.AmsSaleOrder;
|
|
|
-import com.steerinfo.dil.model.AmsSaleOrderMaterial;
|
|
|
-import com.steerinfo.dil.model.AmsSaleTrucknoMaterial;
|
|
|
+import com.alibaba.druid.support.json.JSONUtils;
|
|
|
+import com.steerinfo.dil.feign.JoinFeign;
|
|
|
+import com.steerinfo.dil.feign.TmsTruckFeign;
|
|
|
+import com.steerinfo.dil.mapper.*;
|
|
|
+import com.steerinfo.dil.model.*;
|
|
|
import com.steerinfo.dil.service.IAmsSaleOrderService;
|
|
|
import com.steerinfo.dil.util.DataChange;
|
|
|
+import com.steerinfo.dil.util.EASUtil;
|
|
|
+import com.steerinfo.dil.util.NumberToWeightUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -44,6 +43,24 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper;
|
|
|
@Autowired
|
|
|
AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
|
|
|
+ @Autowired
|
|
|
+ AmsSaleMaterialMapper amsSaleMaterialMapper;
|
|
|
+ @Autowired
|
|
|
+ AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
|
|
|
+ @Autowired
|
|
|
+ RmsReceivePlaceMapper rmsReceivePlaceMapper;
|
|
|
+ @Autowired
|
|
|
+ JoinFeign joinFeign;
|
|
|
+ @Autowired
|
|
|
+ OmstruckOrderMapper omstruckOrderMapper;
|
|
|
+ @Autowired
|
|
|
+ OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
|
|
|
+ @Autowired
|
|
|
+ AmsSaleOrderMaterialServiceImpl amsSaleOrderMaterialService;
|
|
|
+ @Autowired
|
|
|
+ TmsTruckFeign tmsTruckFeign;
|
|
|
+ @Autowired
|
|
|
+ EASUtil easUtil;
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getSaleOrderInfo(Map<String, Object> map) {
|
|
@@ -182,6 +199,17 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
@Override
|
|
|
public int uploadSaleOrder(BigDecimal saleOrderId) {
|
|
|
AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
|
|
|
+ // 调用金蝶接口,将销售订单推送到金蝶系统
|
|
|
+ Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
|
|
|
+ // 获得金蝶接口配置
|
|
|
+ Map<String, Object> totalMap = easUtil.getTotalMap();
|
|
|
+ // 组装报文
|
|
|
+ totalMap.put("input",input);
|
|
|
+ System.out.println(totalMap);
|
|
|
+ String json = JSONUtils.toJSONString(totalMap);
|
|
|
+ System.out.println(json);
|
|
|
+ String s = joinFeign.pushSaleOrderToEas(totalMap);
|
|
|
+ System.out.println(s);
|
|
|
amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
|
|
|
return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
|
|
|
}
|
|
@@ -409,7 +437,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getSaleOrderListBySaleCompanyes(Map<String, Object> map) {
|
|
|
List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListBySaleCompanyes(map);
|
|
|
- String statusStr;
|
|
|
for (Map<String, Object> resultMap : resultList) {
|
|
|
BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
|
|
|
Map<String,Object> loserMap = new HashMap<>();
|
|
@@ -427,15 +454,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
}
|
|
|
resultMap.put("materialName",materialName);
|
|
|
}
|
|
|
- BigDecimal saleOrderStatus = (BigDecimal) resultMap.get("saleOrderStatus");
|
|
|
-// if (saleOrderStatus.intValue() == 2) {
|
|
|
-// statusStr = "销售公司已审核";
|
|
|
-// }
|
|
|
-// else {
|
|
|
-// statusStr = "财务已审核";
|
|
|
-// }
|
|
|
- statusStr = saleOrderStatus.intValue() == 2 ? "销售公司已审批" : "财务已审批";
|
|
|
- resultMap.put("statusStr",statusStr);
|
|
|
resultMap.put("netWeight",netWeight);
|
|
|
resultMap.put("carNum",carNum);
|
|
|
}
|
|
@@ -444,7 +462,28 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getAmsSaleOrderApprovedes(Map<String, Object> map) {
|
|
|
- return amsSaleOrderMapper.getAmsSaleOrderApprovedes(map);
|
|
|
+ List<Map<String,Object>> resultList = amsSaleOrderMapper.getAmsSaleOrderApprovedes(map);
|
|
|
+ for (Map<String, Object> resultMap : resultList) {
|
|
|
+ BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
|
|
|
+ Map<String,Object> loserMap = new HashMap<>();
|
|
|
+ BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
|
|
|
+ BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
|
|
|
+ loserMap.put("saleOrderId",saleOrderId);
|
|
|
+ loserMap.put("con",map.get("con"));
|
|
|
+ // 物资
|
|
|
+ List<Map<String,Object>> materialList = amsSaleOrderMapper.getSaleMaterial(loserMap);
|
|
|
+ if (materialList != null && materialList.size() > 0) {
|
|
|
+ Map<String, Object> materialMap = materialList.get(0);
|
|
|
+ String materialName = (String) materialMap.get("materialName");
|
|
|
+ if (materialList.size() != 1) {
|
|
|
+ materialName += "...";
|
|
|
+ }
|
|
|
+ resultMap.put("materialName",materialName);
|
|
|
+ }
|
|
|
+ resultMap.put("netWeight",netWeight);
|
|
|
+ resultMap.put("carNum",carNum);
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -476,20 +515,435 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getCokeSaleOrderList(Map<String, Object> mapValue) {
|
|
|
List<Map<String,Object>> mapList = amsSaleOrderMapper.getCokeSaleOrderList(mapValue);
|
|
|
- String statusStr;
|
|
|
for (Map<String, Object> resultMap : mapList) {
|
|
|
BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
|
|
|
BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
|
|
|
BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
|
|
|
- BigDecimal saleOrderStatus = (BigDecimal) resultMap.get("saleOrderStatus");
|
|
|
- statusStr = saleOrderStatus.intValue() == 2 ? "销售公司已审批" : "财务已审批";
|
|
|
- resultMap.put("statusStr",statusStr);
|
|
|
resultMap.put("netWeight",netWeight);
|
|
|
resultMap.put("carNum",carNum);
|
|
|
}
|
|
|
return mapList;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新增钢材销售订单
|
|
|
+ * @param mapValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int addSteelSaleOrder(Map<String, Object> mapValue) {
|
|
|
+ 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"));
|
|
|
+ // 是否自提
|
|
|
+ String isSelfMention = (String) mapValue.get("isSelfMention");
|
|
|
+ // 备注
|
|
|
+ String saleRemark = (String) mapValue.get("saleRemark");
|
|
|
+ // 收款客户
|
|
|
+ String saleOrderReceiveCustomer = (String) mapValue.get("saleOrderReceiveCustomer");
|
|
|
+ // 业务员
|
|
|
+ BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
|
|
|
+ BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
|
|
|
+ int result = 0;
|
|
|
+ // 销售订单
|
|
|
+ AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
|
|
|
+ amsSaleOrder.setReceiveId(receiveId);
|
|
|
+ amsSaleOrder.setSaleRemark(saleRemark == null ? "":saleRemark);
|
|
|
+ amsSaleOrder.setShipperId(shipperId);
|
|
|
+ amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
|
|
|
+ amsSaleOrder.setSaleOrderId(saleOrderId);
|
|
|
+ amsSaleOrder.setSalerId(salerId);
|
|
|
+ // 设置钢材订单
|
|
|
+ amsSaleOrder.setSaleType(new BigDecimal(1));
|
|
|
+ amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WXSDD",saleOrderId.intValue(),"-"));
|
|
|
+ amsSaleOrder.setInsertTime(new Date());
|
|
|
+ amsSaleOrder.setInsertUpdateRemark("物流新增销售订单");
|
|
|
+ amsSaleOrder.setInsertUsername("物流");
|
|
|
+ amsSaleOrder.setUpdateTime(new Date());
|
|
|
+ amsSaleOrder.setDeleted(new BigDecimal(0));
|
|
|
+ amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
|
|
|
+ // 税率默认13%
|
|
|
+ amsSaleOrder.setSaleOrderTax("13%");
|
|
|
+ // 含税单价某人4000
|
|
|
+ amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
|
|
|
+ // 收款客户
|
|
|
+ amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
|
|
|
+ // 销售订单物资表
|
|
|
+ AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
|
|
|
+ // 车序号物资表
|
|
|
+ AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
|
|
|
+ // 遍历每一行
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
+ /*
|
|
|
+ 车序号表
|
|
|
+ */
|
|
|
+ // 得到车序号
|
|
|
+ BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo"));
|
|
|
+ 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"));
|
|
|
+ String place = (String) (map.get("place"));
|
|
|
+ if (place != null && !"null".equals(place)) {
|
|
|
+ List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place);
|
|
|
+ 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 = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId());
|
|
|
+ // 单一承运商才进行匹配
|
|
|
+ if (carrierList != null && carrierList.size() == 1) {
|
|
|
+ List<Map<String, Object>> list = new ArrayList<>();
|
|
|
+ Map<String, Object> map1 = carrierList.get(0);
|
|
|
+ // 传入车序号主键和承运商id
|
|
|
+ map1.put("saleOrderMaterialId", saleOrderMaterialId);
|
|
|
+ map1.put("carrierId", map1.get("value"));
|
|
|
+ list.add(map1);
|
|
|
+ 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);
|
|
|
+ dispatchToCarrier(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 收货方姓名
|
|
|
+ String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
|
|
|
+ // 收货方电话
|
|
|
+ String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
|
|
|
+ // 截止日期
|
|
|
+ String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
|
|
|
+ Date dateOfReceipt = null;
|
|
|
+ if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
|
|
|
+ dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
|
|
|
+ }
|
|
|
+ amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
+ amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
|
|
|
+ amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
|
|
|
+ if (consigneeName != null && !consigneeName.equals("null")) {
|
|
|
+ amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
|
|
|
+ }
|
|
|
+ if (consigneeTel != null && !consigneeTel.equals("null")) {
|
|
|
+ amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
|
|
|
+ }
|
|
|
+ amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
|
|
|
+ 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"));
|
|
|
+ // 物资件数
|
|
|
+ BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
|
|
|
+ // 钢材米数
|
|
|
+ BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
|
|
|
+ // 是否磅重销售(0:磅重;1:理重)
|
|
|
+ BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPoundSale"));
|
|
|
+ // 销售订单物资表主键
|
|
|
+ BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
|
|
|
+ amsSaleMaterial.setSaleMaterialId(saleMaterialId);
|
|
|
+ amsSaleMaterial.setSaleOrderId(saleOrderId);
|
|
|
+ amsSaleMaterial.setMaterialId(materialId);
|
|
|
+ amsSaleMaterial.setMaterialNumber(materialNumber);
|
|
|
+ amsSaleMaterial.setInsertTime(new Date());
|
|
|
+ amsSaleMaterial.setUpdateTime(new Date());
|
|
|
+ if (steelMeters != null && !steelMeters.toString().equals("0")) {
|
|
|
+ amsSaleMaterial.setSteelMeter(steelMeters);
|
|
|
+ }
|
|
|
+ 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 result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 展示销售订单下的车序号和物资
|
|
|
+ * @param saleOrderId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getTruckNoAndMaterialList(BigDecimal saleOrderId) {
|
|
|
+ List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(saleOrderId);
|
|
|
+ for (Map<String,Object> map : mapList) {
|
|
|
+ BigDecimal placeId = (BigDecimal) map.get("placeId");
|
|
|
+ if (placeId != null) {
|
|
|
+ List<Map<String, Object>> carrierAndPriceList = getCarrierByPlace(placeId);
|
|
|
+ map.put("carrierAndPriceList", carrierAndPriceList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return mapList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 销售钢材派车
|
|
|
+ * @param mapList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public int dispatchSteelOrder(List<Map<String, Object>> mapList) {
|
|
|
+ int result = 0;
|
|
|
+ // 遍历每一行
|
|
|
+ for (Map<String,Object> map : mapList) {
|
|
|
+ // 得到车牌号
|
|
|
+ String capacityNumber = (String) map.get("capacityNumber");
|
|
|
+ // 得到车序号表主键
|
|
|
+ BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
|
|
|
+ // 得到承运商
|
|
|
+ BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
|
|
|
+ // 查询到车序号的单价
|
|
|
+ BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map);
|
|
|
+ // 运输线路id
|
|
|
+ BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
|
|
|
+ // 司机电话号码
|
|
|
+ String driverTel = (String) map.get("driverTel");
|
|
|
+ BigDecimal isSteel = new BigDecimal(1);
|
|
|
+ // 得到运力id
|
|
|
+ BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
|
|
|
+ List<Map<String,Object>> materialList = amsSaleOrderMaterialMapper.getMaterial(saleOrderMaterialId);
|
|
|
+ /*
|
|
|
+ 定向派单表
|
|
|
+ */
|
|
|
+ // 通过车序号主键确认定向派单是否已存在
|
|
|
+ BigDecimal dispatchId0 = amsDispatchSaleOrderMapper.isDispatchExist(saleOrderMaterialId);
|
|
|
+ if (dispatchId0 == null || dispatchId0.toString().length() == 0) {
|
|
|
+ AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
|
|
|
+ // 主键
|
|
|
+ BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
|
|
|
+ amsDispatchSaleOrder.setDispatchId(dispatchId);
|
|
|
+ // 车序号表id
|
|
|
+ amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
+ // 承运商id
|
|
|
+ amsDispatchSaleOrder.setCarrierId(carrierId);
|
|
|
+ // 派单时间和成交时间
|
|
|
+ amsDispatchSaleOrder.setDispatchTime(new Date());
|
|
|
+ amsDispatchSaleOrder.setDispatchDealTime(new Date());
|
|
|
+ // 成交类型
|
|
|
+ amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
|
|
|
+ // 车序号状态
|
|
|
+ amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
|
|
|
+ result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
|
|
|
+ }
|
|
|
+ // 如果已经匹配过承运商或者给某个承运商授权过,则派车时做修改承运商操作
|
|
|
+ else {
|
|
|
+ AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId0);
|
|
|
+ amsDispatchSaleOrder.setCarrierId(carrierId);
|
|
|
+ result += amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
|
|
|
+ }
|
|
|
+ /*
|
|
|
+ 运输订单
|
|
|
+ */
|
|
|
+ OmstruckOrder omstruckOrder = new OmstruckOrder();
|
|
|
+ Map<String,Object> map1 = new HashMap<>();
|
|
|
+ map1.put("orderType",new BigDecimal(2));
|
|
|
+ map1.put("orderPlanId",saleOrderMaterialId);
|
|
|
+ List<OmstruckOrder> omstruckOrders = omstruckOrderMapper.selectByParameters(map1);
|
|
|
+ if (omstruckOrders == null || omstruckOrders.size() == 0) {
|
|
|
+ // 运输订单主键
|
|
|
+ BigDecimal orderId = omstruckOrderMapper.selectMaxId();
|
|
|
+ omstruckOrder.setOrderId(orderId);
|
|
|
+ // 车序号主键
|
|
|
+ omstruckOrder.setOrderPlanId(saleOrderMaterialId);
|
|
|
+ //添加承运商ID 和 运价ID
|
|
|
+// Object priceId = map.get("priceId");
|
|
|
+ if (priceId != null) {
|
|
|
+ omstruckOrder.setPriceId(priceId);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ omstruckOrder.setPriceId(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ omstruckOrder.setCarrierId(carrierId);
|
|
|
+ // 运输订单号
|
|
|
+ omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue()));
|
|
|
+ // 运力id
|
|
|
+ omstruckOrder.setCapacityId(capacityId);
|
|
|
+ // 承运商
|
|
|
+ omstruckOrder.setCarrierId(carrierId);
|
|
|
+ // 下发时间
|
|
|
+ omstruckOrder.setOrderIssueTime(new Date());
|
|
|
+ // 运单状态
|
|
|
+ omstruckOrder.setOrderStatus(new BigDecimal(4));
|
|
|
+ // 司机电话
|
|
|
+ if (driverTel != null && !"null".equals(driverTel)) {
|
|
|
+ omstruckOrder.setDriverTel(driverTel);
|
|
|
+ }
|
|
|
+ BigDecimal status;
|
|
|
+ // 钢材
|
|
|
+ if (isSteel != null && isSteel.intValue() == 1) {
|
|
|
+ status = new BigDecimal(1);
|
|
|
+ }
|
|
|
+ // 非钢材(危化品,焦炭,副产品)
|
|
|
+ else {
|
|
|
+ status = new BigDecimal(2);
|
|
|
+ }
|
|
|
+ // 订单类型
|
|
|
+ omstruckOrder.setOrderType(status);
|
|
|
+ // 运输线路id
|
|
|
+ omstruckOrder.setLineId(lineId);
|
|
|
+ omstruckOrder.setInsertTime(new Date());
|
|
|
+ omstruckOrder.setInsertUsername("");
|
|
|
+ result += omstruckOrderMapper.insertSelective(omstruckOrder);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ omstruckOrder = omstruckOrders.get(0);
|
|
|
+ }
|
|
|
+ for (Map<String, Object> materialMap : materialList) {
|
|
|
+ BigDecimal materialId = (BigDecimal) materialMap.get("materialId");
|
|
|
+ BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
|
|
|
+ BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
|
|
|
+ /*
|
|
|
+ 运输订单物资子表
|
|
|
+ */
|
|
|
+ OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
|
|
|
+ // 主键
|
|
|
+ BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
|
|
|
+ omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
|
|
|
+ // 运输订单id
|
|
|
+ omstruckOrderMaterial.setOrderId(omstruckOrder.getOrderId());
|
|
|
+ // 物资id
|
|
|
+ omstruckOrderMaterial.setMaterialId(materialId);
|
|
|
+ // 物资重量
|
|
|
+ omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
|
|
|
+ // 物资件数
|
|
|
+ omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
|
|
|
+ // 新增运输订单子表
|
|
|
+ result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
|
|
|
+ }
|
|
|
+ // 调用websocket
|
|
|
+ Map<String,Object> orderIdMap = new HashMap<>();
|
|
|
+ orderIdMap.put("orderId",omstruckOrder.getOrderId());
|
|
|
+ amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
|
|
|
+ // 生成运输执行总实绩
|
|
|
+ result += tmsTruckFeign.addTotalResult(orderIdMap);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据详细地址匹配承运商
|
|
|
+ * @param placeId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public synchronized List<Map<String,Object>> getCarrierByPlace(BigDecimal placeId) {
|
|
|
+ BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId);
|
|
|
+ List<Map<String,Object>> mapList = amsSaleOrderMapper.getCarrierByPlace(addressId);
|
|
|
+ return mapList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据详细地址和承运商匹配单价
|
|
|
+ * @param mapValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getPriceByCarrierAndPlace(Map<String, Object> mapValue) {
|
|
|
+ Map<String,Object> map = amsSaleOrderMapper.getPriceByCarrierAndPlace(mapValue);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将车序号下发给承运商
|
|
|
+ * @param mapList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int dispatchToCarrier(List<Map<String,Object>> mapList) {
|
|
|
+ int result = 0;
|
|
|
+ // 遍历每一行
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
+ // 得到承运商
|
|
|
+ BigDecimal carrierId =DataChange.dataToBigDecimal(map.get("carrierId"));
|
|
|
+ // 得到车序号表主键
|
|
|
+ BigDecimal saleOrderMaterialId =DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
|
|
|
+ AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
|
|
|
+ BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
|
|
|
+ amsDispatchSaleOrder.setDispatchId(dispatchId);
|
|
|
+ amsDispatchSaleOrder.setCarrierId(carrierId);
|
|
|
+ amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
+ amsDispatchSaleOrder.setInsertTime(new Date());
|
|
|
+ amsDispatchSaleOrder.setInsertUpdateRemark("授权承运商");
|
|
|
+ // 派单时间和成交时间
|
|
|
+ amsDispatchSaleOrder.setDispatchTime(new Date());
|
|
|
+ amsDispatchSaleOrder.setDispatchDealTime(new Date());
|
|
|
+ // 成交类型
|
|
|
+ amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
|
|
|
+ // 车序号状态
|
|
|
+ amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
|
|
|
+ result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSaleOrderListToCarrier(Map<String, Object> map) {
|
|
|
+ List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListToCarrier(map);
|
|
|
+ for (Map<String, Object> resultMap : resultList) {
|
|
|
+ BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
|
|
|
+ // 物资
|
|
|
+ List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoAndMaterial(saleOrderId);
|
|
|
+ if (materialList != null && materialList.size() > 0) {
|
|
|
+ Map<String, Object> materialMap = materialList.get(0);
|
|
|
+ String materialName = (String) materialMap.get("materialName");
|
|
|
+ if (materialList.size() != 1) {
|
|
|
+ materialName += "...";
|
|
|
+ }
|
|
|
+ resultMap.put("materialName",materialName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getSaleOrderListByCarrierSsoId(Map<String, Object> map) {
|
|
|
List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListByCarrierSsoId(map);
|
|
@@ -525,4 +979,121 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
}
|
|
|
return resultList;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param saleOrderId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int deleteSaleOrderById(BigDecimal saleOrderId) {
|
|
|
+ AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
|
|
|
+ amsSaleOrder.setSaleOrderId(saleOrderId);
|
|
|
+ amsSaleOrder.setDeleted(new BigDecimal(1));
|
|
|
+ int result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询出销售订单下的所有数据
|
|
|
+ * @param saleOrderId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getAllSaleMessages(BigDecimal saleOrderId) {
|
|
|
+ Map<String,Object> saleMap = amsSaleOrderMapper.getSaleMapMessages(saleOrderId);
|
|
|
+ List<Map<String,Object>> mapList = amsSaleOrderMapper.getSaleListMessages(saleOrderId);
|
|
|
+ saleMap.put("mapList",mapList);
|
|
|
+ return saleMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 展示未匹配承运商的车序号
|
|
|
+ * @param mapValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSteelTruckNoList(Map<String, Object> mapValue) {
|
|
|
+ List<Map<String, Object>> resultList = amsSaleOrderMapper.getSteelTruckNoList(mapValue);
|
|
|
+ for (Map<String, Object> resultMap : resultList) {
|
|
|
+ BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
|
|
|
+ // 物资
|
|
|
+ List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
|
|
|
+ if (materialList != null && materialList.size() > 0) {
|
|
|
+ Map<String, Object> materialMap = materialList.get(0);
|
|
|
+ String materialName = (String) materialMap.get("materialName");
|
|
|
+ if (materialList.size() != 1) {
|
|
|
+ materialName += "...";
|
|
|
+ }
|
|
|
+ resultMap.put("materialName",materialName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 展示车序号的详情
|
|
|
+ * @param saleOrderMaterialId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getTruckNoMaterial(BigDecimal saleOrderMaterialId) {
|
|
|
+ List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoMaterialAndCarrier(saleOrderMaterialId);
|
|
|
+ for (Map<String,Object> map : mapList) {
|
|
|
+ BigDecimal placeId = (BigDecimal) map.get("placeId");
|
|
|
+ if (placeId != null) {
|
|
|
+ List<Map<String, Object>> carrierAndPriceList = getCarrierByPlace(placeId);
|
|
|
+ map.put("carrierAndPriceList", carrierAndPriceList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return mapList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 展示已分配承运商但未派车的车序号
|
|
|
+ * @param mapValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getNoCarTruckNoList(Map<String, Object> mapValue) {
|
|
|
+ List<Map<String, Object>> resultList = amsSaleOrderMapper.getCarrierTruckNoList(mapValue);
|
|
|
+ for (Map<String, Object> resultMap : resultList) {
|
|
|
+ BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
|
|
|
+ // 物资
|
|
|
+ List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
|
|
|
+ if (materialList != null && materialList.size() > 0) {
|
|
|
+ Map<String, Object> materialMap = materialList.get(0);
|
|
|
+ String materialName = (String) materialMap.get("materialName");
|
|
|
+ if (materialList.size() != 1) {
|
|
|
+ materialName += "...";
|
|
|
+ }
|
|
|
+ resultMap.put("materialName",materialName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 展示已派车的车序号
|
|
|
+ * @param mapValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getHaveCarTruckNoList(Map<String, Object> mapValue) {
|
|
|
+ List<Map<String, Object>> resultList = amsSaleOrderMapper.getHaveCarTruckNoList(mapValue);
|
|
|
+ for (Map<String, Object> resultMap : resultList) {
|
|
|
+ BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
|
|
|
+ // 物资
|
|
|
+ List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
|
|
|
+ if (materialList != null && materialList.size() > 0) {
|
|
|
+ Map<String, Object> materialMap = materialList.get(0);
|
|
|
+ String materialName = (String) materialMap.get("materialName");
|
|
|
+ if (materialList.size() != 1) {
|
|
|
+ materialName += "...";
|
|
|
+ }
|
|
|
+ resultMap.put("materialName",materialName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
}
|