package com.steerinfo.dil.service.impl; 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.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * AmsSaleOrder服务实现: * * @author generator * @version 1.0-SNAPSHORT 2021-09-06 07:10 * 类描述 * 修订历史: * 日期:2021-09-06 * 作者:generator * 参考: * 描述:AmsSaleOrder服务实现 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. * @see null */ @Service(value = "amsSaleOrderService") public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService { @Autowired private AmsSaleOrderMapper amsSaleOrderMapper; @Autowired private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper; @Autowired 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; @Autowired EASDeleteUtil easDeleteUtil; @Autowired EASTestUtil easTestUtil; @Autowired EASDeleteTestUtil easDeleteTestUtil; @Override public List> getSaleOrderInfo(Map map) { return amsSaleOrderMapper.getSaleOrderInfo(map); } @Override public List> getSaleOrderReported(Map map) { return amsSaleOrderMapper.getSaleOrderReported(map); } @Override public List> getSaleOrderDetail(Map map) { return amsSaleOrderMapper.getSaleOrderDetail(map); } @Override public List> getSalePlanName() { return amsSaleOrderMapper.getSalePlanName(); } @Override public List> getShipperName() { return amsSaleOrderMapper.getShipperName(); } @Override public List> getConsigneeCompanyName() { return amsSaleOrderMapper.getConsigneeCompanyName(); } @Override /** * map存放为前端获取的amsSaleOrder基础数据以及selectionList物资信息 * map1为基础数据包括,收货地址,收货人等 * map2存放的从selectionList取出的数据,包括物资id,物资名称等。 */ public int addAmsSaleOrder(Map map) throws ParseException { //获取前端传过来的map, int i = 0; Map map1 = (Map) map.get("amsSaleOrder"); AmsSaleOrder amsSaleOrder = new AmsSaleOrder(); Integer id = (amsSaleOrderMapper.selectMaxId()).intValue(); //生成主键id amsSaleOrder.setSaleOrderId(new BigDecimal(id)); //WXSDD-年月日-8位数的顺序号 String wxsdd = DataChange.generateEightDigitsNumber("WXSDD", id); amsSaleOrder.setSaleNumber(wxsdd); //获得是否自提 amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention")); //获取收货地址id amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("receiveId"))); //获取发货单位id amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId"))); //获取备注 amsSaleOrder.setSaleRemark((String) map1.get("saleRemark")); //设置销售订单状态 amsSaleOrder.setSaleOrderStatus(new BigDecimal(0)); amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000)); amsSaleOrder.setSaleOrderTax("13%"); amsSaleOrder.setInsertUsername("admin"); amsSaleOrder.setInsertTime(new Date()); amsSaleOrder.setUpdateUsername("admin"); amsSaleOrder.setUpdateTime(new Date()); amsSaleOrder.setInsertUpdateRemark("无"); amsSaleOrder.setDeleted(new BigDecimal(0)); amsSaleOrder.setSaleOrderStatus(new BigDecimal(0)); //设置收款客户 amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReceiveCustomer")); i += amsSaleOrderMapper.insertSelective(amsSaleOrder); //获取车序号和物资信息进行新增车序号与物资中间表 //一个销售订单对应多个车序号 List> selectionList = (List>) map.get("selectionList"); for (Map map2 : selectionList) { BigDecimal materialId = DataChange.dataToBigDecimal(map2.get("materialId")); Integer cxh = (Integer) map2.get("cxh"); //生成车序号与物资实体 AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial(); //生成主键 amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId()); amsSaleOrderMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId()); // 生成定向派单 AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder(); amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId()); amsDispatchSaleOrder.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId()); //获取收货地址 Integer saleShipperAddressId =(Integer) map2.get("saleShipperAddressId"); amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId)); //根据收货地址查询承运商 Map map4 = amsSaleOrderMapper.selectProvince(saleShipperAddressId); BigDecimal carrierId = amsSaleOrderMapper.selectCarrierIdByprovince(map4); //获取收货方电话号码 amsDispatchSaleOrder.setCarrierId(carrierId); amsDispatchSaleOrder.setDispatchTime(new Date()); //设置成交类型 amsDispatchSaleOrder.setDispatchType(new BigDecimal(0)); //设置下发状态为未下发 amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(1)); amsDispatchSaleOrder.setInsertTime(new Date()); amsDispatchSaleOrder.setInsertUsername("admin"); amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder); amsSaleOrderMaterial.setSaleOrderConsigneeTel(map2.get("saleOrderConsigneeTel").toString()); //获取收货日期 String saleDateOfReceipt =(String) map2.get("saleDateOfReceipt"); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); Date date = simpleDateFormat.parse(saleDateOfReceipt); amsSaleOrderMaterial.setSaleDateOfReceipt(date); //获取收货方姓名 amsSaleOrderMaterial.setSaleOrderConsignee((String) map2.get("saleOrderConsignee")); //设置车序号 amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh)); //设置删除状态 amsSaleOrderMaterial.setDeleted(new BigDecimal(0)); i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial); //新增车序号与物资中间表 AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial(); trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId()); //设置物资id trucknoMaterial.setMaterialId(materialId); //获取车序号物资id trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId()); Integer orderPlanWeight = (Integer) map2.get("orderPlanWeight"); trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight)); //获取物资理重 BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map2.get("materialTheoreticalWeight")); //判断是否有物资理重 if (materialTheoreticalWeight.intValue() != 0) { trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight); } //新增车序号与物资中间表 i += trucknoMaterialMapper.insertSelective(trucknoMaterial); } return i; } @Override public int uploadSaleOrder(BigDecimal saleOrderId) { AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId); // 调用金蝶接口,将销售订单推送到金蝶系统 Map input = joinFeign.getSaleOrder(saleOrderId); Map head = (Map) input.get("head"); head.put("status",""); // 获得金蝶接口配置:正式 // Map totalMap = easUtil.getTotalMap(); // 获得金蝶接口配置:测试 Map totalMap = easUtil.getTotalMap(); // 组装报文 totalMap.put("input",input); System.out.println(totalMap); String json = JSONUtils.toJSONString(totalMap); System.out.println(json); Map s = joinFeign.pushSaleOrderToEas(totalMap); System.out.println(s); amsSaleOrder.setSaleOrderStatus(new BigDecimal(1)); return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder); } @Override public List> selectBySaleOrderId(BigDecimal saleOrderId) { return amsSaleOrderMapper.selectBySaleOrderId(saleOrderId); } /** * 修改订单信息、车序号表、车序号物资中间表 * * @param map * @return */ @Override @Transactional public int updateAmsSaleOrder(Map map) throws ParseException { int i = 0; int j = 0; Map map1 = (Map) map.get("amsSaleOrder"); AmsSaleOrder amsSaleOrder = new AmsSaleOrder(); //修改销售订单表 更新销售订单基础信息 amsSaleOrder.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId"))); amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId"))); amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("reciveId"))); amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention")); amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReciveCustomer")); amsSaleOrder.setSaleRemark((String) map1.get("saleRemark")); amsSaleOrder.setUpdateTime(new Date()); i += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); //根据销售订单id查找销售车序号和车序号与物资中间表主键 List> map2 = amsSaleOrderMapper.selectSaleOrderMaterialIdBySaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId"))); for (Map Id:map2){ BigDecimal truckNoMaterialId =(BigDecimal) Id.get("TruckNoMaterialId"); BigDecimal saleOrderMaterialId=(BigDecimal) Id.get("saleOrderMaterialId"); //删除对应的车序号表与车序号与物资中间表 j+=amsSaleOrderMaterialMapper.deleteByPrimaryKey(saleOrderMaterialId); j+=trucknoMaterialMapper.deleteByPrimaryKey(truckNoMaterialId); } //新增车序号和物资中间表 //获取车序号和物资信息进行新增车序号与物资中间表 //一个销售订单对应多个车序号 List> selectionList = (List>) map.get("selectionList"); for (Map map3 : selectionList) { BigDecimal materialId = DataChange.dataToBigDecimal(map3.get("materialId")); Integer cxh = (Integer) map3.get("cxh"); //生成车序号与物资实体 AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial(); //生成主键 amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId()); amsSaleOrderMaterial.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId"))); //获取收货地址 amsSaleOrderMaterial.setSaleShippingAddressId(DataChange.dataToBigDecimal(map3.get("saleShipperAddressId"))); //获取收货方电话号码 amsSaleOrderMaterial.setSaleOrderConsigneeTel(map3.get("saleOrderConsigneeTel").toString()); //获取收货日期 String saleDateOfReceipt =(String) map3.get("saleDateOfReceipt"); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); Date date = simpleDateFormat.parse(saleDateOfReceipt); amsSaleOrderMaterial.setSaleDateOfReceipt(date); //获取收货方姓名 amsSaleOrderMaterial.setSaleOrderConsignee((String) map3.get("saleOrderConsignee")); //设置车序号 amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh)); //设置删除状态 amsSaleOrderMaterial.setDeleted(new BigDecimal(0)); i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial); // 生成定向派单 AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder(); amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId()); amsDispatchSaleOrder.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId()); //获取收货地址 Integer saleShipperAddressId =(Integer) map3.get("saleShipperAddressId"); amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId)); //根据收货地址查询承运商 Map map4 = amsSaleOrderMapper.selectProvince(saleShipperAddressId); BigDecimal carrierId = amsSaleOrderMapper.selectCarrierIdByprovince(map4); //获取收货方电话号码 amsDispatchSaleOrder.setCarrierId(carrierId); amsDispatchSaleOrder.setDispatchTime(new Date()); //设置成交类型 amsDispatchSaleOrder.setDispatchType(new BigDecimal(0)); //设置下发状态为已下发 amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0)); amsDispatchSaleOrder.setInsertTime(new Date()); amsDispatchSaleOrder.setInsertUsername("admin"); //新增车序号与物资中间表 AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial(); trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId()); //设置物资id trucknoMaterial.setMaterialId(materialId); //获取车序号物资id trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId()); Integer orderPlanWeight = (Integer) map3.get("orderPlanWeight"); trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight)); //获取物资理重 BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map3.get("materialTheoreticalWeight")); //判断是否有物资理重 if (materialTheoreticalWeight.intValue() != 0) { trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight); } //新增车序号与物资中间表 i += trucknoMaterialMapper.insertSelective(trucknoMaterial); } // List> mapList = (List>) map.get("mapList"); // ArrayList list = new ArrayList<>(); // for (Map truckMesMap : mapList) { // //修改车序号表 // BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(truckMesMap.get("saleOrderMaterialId")); // if (!list.contains(saleOrderMaterialId.intValue())) { // //车序号表专用字段 // BigDecimal saleShipperAddressId = DataChange.dataToBigDecimal(truckMesMap.get("saleShipperAddressId")); // String saleDateOfReceipt =(String) truckMesMap.get("saleDateOfReceipt"); // SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); // Date date = simpleDateFormat.parse(saleDateOfReceipt); // String saleOrderConsignee = (String) truckMesMap.get("saleOrderConsignee"); // String saleOrderConsigneeTel = (String) truckMesMap.get("saleOrderConsigneeTel"); // AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial(); // amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId); // amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(DataChange.dataToBigDecimal(truckMesMap.get("cxh"))); // amsSaleOrderMaterial.setSaleShippingAddressId(saleShipperAddressId); // amsSaleOrderMaterial.setSaleDateOfReceipt(date); // amsSaleOrderMaterial.setSaleOrderConsignee(saleOrderConsignee); // amsSaleOrderMaterial.setSaleOrderConsigneeTel(saleOrderConsigneeTel); // i += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial); // list.add(saleOrderMaterialId.intValue()); // } // //修改车车序号物资表 // AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial(); // amsSaleTrucknoMaterial.setTrucknoMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("trucknoMaterialId"))); // amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(truckMesMap.get("orderPlanWeight"))); // amsSaleTrucknoMaterial.setMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("materialId"))); // i += trucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial); // } return i; } @Override public int deleteAmsSaleOrderBySaleOrderId(BigDecimal saleOrderId) { //删除所有从表信息 //amsSaleOrderMapper.deleteBySaleOrderId(saleOrderId); AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId); amsSaleOrder.setDeleted(new BigDecimal(1)); return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder); } @Override public List> getSaleOrderUpdateLog(Map map) { return amsSaleOrderMapper.getSaleOrderUpdateLog(map); } /** * 销售公司查询已审核的订单 * @param map * @return */ @Override public List> getSaleOrderListBySaleCompany(Map map) { return amsSaleOrderMapper.getSaleOrderListBySaleCompany(map); } @Override public List> getAmsSaleOrderApproved(Map map) { return amsSaleOrderMapper.getAmsSaleOrderApproved(map); } @Override public List> getSaleOrderList(Map mapValue) { return amsSaleOrderMapper.getSaleOrderList(mapValue); } public Map getCarrier(Integer addressId) { return amsSaleOrderMapper.selectProvince(addressId); } /** * 根据销售订单id查找信息 */ @Override public Map selectInfoBySaleOrderId(BigDecimal saleOrderId) { return amsSaleOrderMapper.selectInfoBySaleOrderId(saleOrderId); } /** * 根据销售订单id查找物资信息 * * @param saleOrderId * @return */ @Override public List> selectMaterialInfoBySaleOrderId(BigDecimal saleOrderId) { return amsSaleOrderMapper.selectMaterialInfoBySaleOrderId(saleOrderId); } @Override public int addAmsDispatchSaleOrder(List> mapValue) { int result = 0; for (Map map : mapValue) { Integer dispatchId = (Integer)map.get("dispatchId"); AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(new BigDecimal(dispatchId)); amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0)); result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder); } return result; } @Override public List> getSaleOrderInfoes(Map map) { return amsSaleOrderMapper.getSaleOrderInfoes(map); } @Override public List> getSaleOrderReportedes(Map map) { return amsSaleOrderMapper.getSaleOrderReportedes(map); } @Override public List> getSaleOrderListBySaleCompanyes(Map map) { List> resultList = amsSaleOrderMapper.getSaleOrderListBySaleCompanyes(map); return resultList; } @Override public List> getAmsSaleOrderApprovedes(Map map) { List> resultList = amsSaleOrderMapper.getAmsSaleOrderApprovedes(map); return resultList; } /* * 根据销售订单主键展示销售基本信息、物资信息 * */ @Override public List> getSaleOrderAndMaterialById(Map mapValue) { List> mapList=amsSaleOrderMapper.getSaleOrderAndMaterialById(mapValue); for (Map map : mapList) { BigDecimal number; BigDecimal materialNumber = (BigDecimal) map.get("materialNumber"); BigDecimal materialWeight = (BigDecimal) map.get("materialWeight"); if (materialNumber != null && materialNumber.toString().length() != 0) { number = materialNumber; } else { number = materialWeight; } map.put("number",number); } return mapList; } /** * 销售焦炭订单 * @param mapValue * @return */ @Override public List> getCokeSaleOrderList(Map mapValue) { List> mapList = amsSaleOrderMapper.getCokeSaleOrderList(mapValue); for (Map resultMap : mapList) { BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId"); BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId); BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId); resultMap.put("netWeight",netWeight); resultMap.put("carNum",carNum); } return mapList; } /** * 新增钢材销售订单 * @param mapValue * @return */ @Override public int addSteelSaleOrder(Map mapValue) { List> mapList = (List>) 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 map : mapList) { /* 车序号表 */ // 得到车序号 BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo")); Map saleMap = new HashMap<>(); saleMap.put("saleOrderId",saleOrderId); saleMap.put("saleOrderMaterialTruckNo",truckNo); // 检测销售订单下的车序号是否已存在 List 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 truckRemark = (String) (map.get("truckRemark")); String place = (String) (map.get("place")); if (place != null && !"null".equals(place)) { List> 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> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId()); // 单一承运商才进行匹配 if (carrierList != null && carrierList.size() == 1) { List> list = new ArrayList<>(); Map 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> list = new ArrayList<>(); Map 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.setTruckRemark(truckRemark); 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> getTruckNoAndMaterialList(BigDecimal saleOrderId) { List> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(saleOrderId); for (Map map : mapList) { BigDecimal placeId = (BigDecimal) map.get("placeId"); if (placeId != null) { List> carrierAndPriceList = getCarrierByPlace(placeId); map.put("carrierAndPriceList", carrierAndPriceList); } } return mapList; } /** * 销售钢材派车 * @param mapList * @return */ @Transactional @Override public int dispatchSteelOrder(List> mapList) { int result = 0; // 遍历每一行 for (Map 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); if (capacityId == null) { return 0; } List> 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 map1 = new HashMap<>(); map1.put("orderType",new BigDecimal(2)); map1.put("orderPlanId",saleOrderMaterialId); List 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 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 orderIdMap = new HashMap<>(); orderIdMap.put("orderId",omstruckOrder.getOrderId()); amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap); // 生成运输执行总实绩 result += tmsTruckFeign.addTotalResult(orderIdMap); } return result; } /** * 根据详细地址匹配承运商 * @param placeId * @return */ @Override public synchronized List> getCarrierByPlace(BigDecimal placeId) { BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId); List> mapList = amsSaleOrderMapper.getCarrierByPlace(placeId); return mapList; } /** * 根据详细地址和承运商匹配单价 * @param mapValue * @return */ @Override public Map getPriceByCarrierAndPlace(Map mapValue) { Map map = amsSaleOrderMapper.getPriceByCarrierAndPlace(mapValue); return map; } /** * 将车序号下发给承运商 * @param mapList * @return */ @Override public int dispatchToCarrier(List> mapList) { int result = 0; // 遍历每一行 for (Map 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> getSaleOrderListToCarrier(Map map) { List> resultList = amsSaleOrderMapper.getSaleOrderListToCarrier(map); return resultList; } @Override public List> getSaleOrderListByCarrierSsoId(Map map) { List> resultList = amsSaleOrderMapper.getSaleOrderListByCarrierSsoId(map); return resultList; } /** * 同步金蝶删除 * @param saleOrderId * @return */ @Override public int deleteSaleOrderById(BigDecimal saleOrderId) { int result = 0; AmsSaleOrder amsSaleOrder = new AmsSaleOrder(); amsSaleOrder.setSaleOrderId(saleOrderId); amsSaleOrder.setDeleted(new BigDecimal(1)); // 如果是已经上传金蝶的销售订单,则同步删除 AmsSaleOrder amsSaleOrder1 = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId); if (amsSaleOrder1.getSaleOrderStatus().intValue() == 2 || amsSaleOrder1.getSaleOrderStatus().intValue() == 4) { Map input = joinFeign.getSaleOrder(saleOrderId); Map head = (Map) input.get("head"); head.put("status","close"); // 获得金蝶接口配置 Map totalMap = easUtil.getTotalMap(); // 组装报文 totalMap.put("input",input); System.out.println(totalMap); String json = JSONUtils.toJSONString(totalMap); System.out.println(json); Map s = joinFeign.pushSaleOrderToEas(totalMap); System.out.println(s); } // 如果是副产品订单则关闭时同步关闭未进厂的运单 Map map = new HashMap<>(); map.put("saleOrderId",saleOrderId); List amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(map); if (amsSaleMaterials != null && amsSaleMaterials.get(0).getSaleWarehouse().equals("副产品库")) { result += amsSaleOrderMapper.closeOrderNotIn(saleOrderId); } result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); return result; } /** * 查询出销售订单下的所有数据 * @param saleOrderId * @return */ @Override public Map getAllSaleMessages(BigDecimal saleOrderId) { Map saleMap = amsSaleOrderMapper.getSaleMapMessages(saleOrderId); List> mapList = amsSaleOrderMapper.getSaleListMessages(saleOrderId); saleMap.put("mapList",mapList); return saleMap; } /** * 修改承运商授权 * @param mapValue * @return */ @Override public int updateTruckNoCarrier(Map mapValue) { BigDecimal carrierId = DataChange.dataToBigDecimal(mapValue.get("carrierId")); mapValue.remove("carrierId"); List amsDispatchSaleOrders = amsDispatchSaleOrderMapper.selectByParameters(mapValue); AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrders.get(0); amsDispatchSaleOrder.setCarrierId(carrierId); int result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder); return result; } /** * 批量上传销售订单至金蝶 * @param saleOrderIdList * @return */ @Override public int uploadSaleOrderList(List> saleOrderIdList) { int result = 0; for (Map map : saleOrderIdList) { AmsSaleOrder amsSaleOrder = new AmsSaleOrder(); BigDecimal saleOrderId = DataChange.dataToBigDecimal(map.get("saleOrderId")); // 调用金蝶接口,将销售订单推送到金蝶系统 Map input = joinFeign.getSaleOrder(saleOrderId); Map head = (Map) input.get("head"); head.put("status",""); // 获得金蝶接口配置:正式 // Map totalMap = easUtil.getTotalMap(); // 获得金蝶接口配置:测试 Map totalMap = easUtil.getTotalMap(); // 组装报文 totalMap.put("input",input); System.out.println(totalMap); String json = JSONUtils.toJSONString(totalMap); System.out.println(json); Map s = joinFeign.pushSaleOrderToEas(totalMap); System.out.println(s); amsSaleOrder.setSaleOrderId(saleOrderId); amsSaleOrder.setSaleOrderStatus(new BigDecimal(1)); result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); } return result; } /** * 新增钒渣销售订单 * @param mapValue * @return */ @Override public int addVanadiumSaleOrder(Map mapValue) { List> mapList = (List>) 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(2)); 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 map : mapList) { /* 车序号表 */ // 得到车序号 BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo")); Map saleMap = new HashMap<>(); saleMap.put("saleOrderId",saleOrderId); saleMap.put("saleOrderMaterialTruckNo",truckNo); // 检测销售订单下的车序号是否已存在 List 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 truckRemark = (String) (map.get("truckRemark")); String place = (String) (map.get("place")); if (place != null && !"null".equals(place)) { List> 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> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId()); // 单一承运商才进行匹配 if (carrierList != null && carrierList.size() == 1) { List> list = new ArrayList<>(); Map 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> list = new ArrayList<>(); Map 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.setTruckRemark(truckRemark); 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 receiveId * @return */ @Override public List> matchingAddressRecently(BigDecimal receiveId) { List> mapList = amsSaleOrderMapper.matchingAddressRecently(receiveId); List> salerList = amsSaleOrderMapper.getSalerByReceiveId(receiveId); if (mapList != null && mapList.size() != 0) { if (salerList != null && salerList.size() !=0) { Map salerMap = salerList.get(0); for (Map map : mapList) { map.putAll(salerMap); } } } return mapList; } /** * 自动匹配上一条运单的司机电话 * @param capacityNumber * @return */ @Override public String matchingDriverTelRecently(String capacityNumber) { String driverTel = amsSaleOrderMapper.matchingDriverTelRecently(capacityNumber); return driverTel; } /** * 查询内转焦炭订单 * @param mapValue * @return */ @Override public List> getCokeInwardOrderList(Map mapValue) { return amsSaleOrderMapper.getCokeInwardOrderList(mapValue); } /** * 修改收货地址 * @param mapValue * @return */ @Override public int updateCarAddress(Map mapValue) { // 判断是否需要删除金蝶分录 Integer isCloseEas = (Integer) mapValue.get("isCloseEas"); // 判断是否需要修改派车 Object isNewCar = mapValue.get("isNewCar"); // 销售订单主键 BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId")); // 车序号id BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")); int result = 0; // 运输订单id BigDecimal orderId = DataChange.dataToBigDecimal(mapValue.get("orderId")); // 是 if (isCloseEas == 0 && orderId != null && orderId.intValue() != 0) { OmstruckOrder omstruckOrder = new OmstruckOrder(); omstruckOrder.setOrderId(orderId); omstruckOrder.setOrderStatus(new BigDecimal(7)); omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder); // 得到销售订单物资表主键 List> saleMaterialIdList = amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId); for (Map map : saleMaterialIdList) { // 删除销售订单物资子表 BigDecimal saleMaterialId = (BigDecimal) map.get("saleMaterialId"); amsSaleMaterialMapper.deleteByPrimaryKey(saleMaterialId); } // 调用金蝶接口,将销售订单推送到金蝶系统 Map input = joinFeign.getSaleOrder(saleOrderId); Map head = (Map) input.get("head"); head.put("status","update"); // 获得金蝶接口配置 Map totalMap = easUtil.getTotalMap(); // 组装报文 totalMap.put("input",input); System.out.println(totalMap); String json = JSONUtils.toJSONString(totalMap); System.out.println(json); Map s = joinFeign.pushSaleOrderToEas(totalMap); System.out.println(s); return 0; } // 省市县ID BigDecimal shippingAddressId = DataChange.dataToBigDecimal(mapValue.get("shipperAddressId")); // 具体地址 String place = (String) mapValue.get("place"); AmsSaleOrderMaterial amsSaleOrderMaterial = amsSaleOrderMaterialMapper.selectByPrimaryKey(saleOrderMaterialId); if (place != null && !"null".equals(place)) { List> 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")); } } result += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial); // 需要换车 if ((Integer) isNewCar == 0) { // 根据车序号得到定向派单表主键 BigDecimal dispatchId = amsSaleOrderMapper.getDispatchId(saleOrderMaterialId); if (dispatchId != null) { amsDispatchSaleOrderMapper.deleteByPrimaryKey(dispatchId); } if (amsSaleOrderMaterial.getSaleShippingAddressId() != null) { // 自动匹配承运商 List> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId()); // 单一承运商才进行匹配 if (carrierList != null && carrierList.size() == 1) { List> list = new ArrayList<>(); Map map1 = carrierList.get(0); // 传入车序号主键和承运商id map1.put("saleOrderMaterialId", saleOrderMaterialId); map1.put("carrierId", map1.get("value")); list.add(map1); dispatchToCarrier(list); } } } return result; } /** * 展示未匹配承运商的车序号 * @param mapValue * @return */ @Override public List> getSteelTruckNoList(Map mapValue) { List> resultList = amsSaleOrderMapper.getSteelTruckNoList(mapValue); return resultList; } /** * 展示车序号的详情 * @param saleOrderMaterialId * @return */ @Override public List> getTruckNoMaterial(BigDecimal saleOrderMaterialId) { List> mapList = amsSaleOrderMapper.getTruckNoMaterialAndCarrier(saleOrderMaterialId); for (Map map : mapList) { BigDecimal placeId = (BigDecimal) map.get("placeId"); if (placeId != null) { List> carrierAndPriceList = getCarrierByPlace(placeId); map.put("carrierAndPriceList", carrierAndPriceList); } } return mapList; } /** * 展示已分配承运商但未派车的车序号 * @param mapValue * @return */ @Override public List> getNoCarTruckNoList(Map mapValue) { List> resultList = amsSaleOrderMapper.getCarrierTruckNoList(mapValue); return resultList; } /** * 展示已派车的车序号 * @param mapValue * @return */ @Override public List> getHaveCarTruckNoList(Map mapValue) { List> resultList = amsSaleOrderMapper.getHaveCarTruckNoList(mapValue); return resultList; } /** * 修改销售订单中的物资 * @param mapValue * @return */ @Transactional @Override public int updateAllMaterialInSale(Map mapValue) { int result = 0; // 得到销售订单主键 BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId")); BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")); BigDecimal orderId = DataChange.dataToBigDecimal(mapValue.get("orderId")); // 得到运单中的物资 List> oldList = omstruckOrderMaterialMapper.getMaterialList(orderId); Map toTmsMap = new HashMap<>(); Map truckNoMap = new HashMap<>(); truckNoMap.put("saleOrderMaterialId",saleOrderMaterialId); toTmsMap.put("orderId", orderId); toTmsMap.put("oldMaterialMapList", oldList); // 得到所有的物资 List> mapList = (List>) mapValue.get("mapList"); /* 删除三个物资表数据 */ List amsSaleTrucknoMaterials = amsSaleTrucknoMaterialMapper.selectByParameters(truckNoMap); for (AmsSaleTrucknoMaterial amsSaleTrucknoMaterial : amsSaleTrucknoMaterials) { // 销售订单物资子表 amsSaleMaterialMapper.deleteByPrimaryKey(amsSaleTrucknoMaterial.getMaterialId()); // 车序号子表 amsSaleTrucknoMaterialMapper.deleteByPrimaryKey(amsSaleTrucknoMaterial.getTrucknoMaterialId()); } // 运输订单物资子表 List omstruckOrderMaterials = omstruckOrderMaterialMapper.selectByParameters(toTmsMap); for (OmstruckOrderMaterial omstruckOrderMaterial : omstruckOrderMaterials) { omstruckOrderMaterialMapper.deleteByPrimaryKey(omstruckOrderMaterial.getOrderMaterialId()); } /* 重新新增三个表 */ for (Map map : mapList) { Object saleMaterialId = map.get("saleMaterialId"); BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId")); BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight")); Object trucknoMaterialId = map.get("trucknoMaterialId"); BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPound")); Object materialWeight = map.get("materialWeight"); Object steelMeter = map.get("meterNumber"); Object easId = map.get("easId"); Object warehouse = map.get("warehouse"); // 销售订单分录表 AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial(); // 车序号子表 AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial(); // 运输订单子表 OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial(); // if (saleMaterialId != null) { // amsSaleMaterial.setSaleMaterialId(DataChange.dataToBigDecimal(saleMaterialId)); // amsSaleTrucknoMaterial.setTrucknoMaterialId(DataChange.dataToBigDecimal(trucknoMaterialId)); // } // if (saleMaterialId == null){ amsSaleMaterial.setSaleMaterialId(amsSaleMaterialMapper.selectMaxId()); amsSaleTrucknoMaterial.setTrucknoMaterialId(amsSaleTrucknoMaterialMapper.selectMaxId()); // } if (easId != null) { amsSaleMaterial.setEasPrimaryId(easId.toString()); } if (warehouse != null) { amsSaleMaterial.setSaleWarehouse(warehouse.toString()); } if (steelMeter != null) { amsSaleMaterial.setSteelMeter(DataChange.dataToBigDecimal(steelMeter)); } if (materialWeight != null) { amsSaleMaterial.setMaterialWeight(DataChange.dataToBigDecimal(materialWeight)); omstruckOrderMaterial.setOrderMaterialWeight(DataChange.dataToBigDecimal(materialWeight)); } amsSaleMaterial.setSaleOrderId(saleOrderId); amsSaleMaterial.setIsPoundSale(isPoundSale); amsSaleMaterial.setMaterialId(materialId); amsSaleMaterial.setDeleted(new BigDecimal(0)); amsSaleMaterial.setMaterialNumber(materialNumber); amsSaleMaterial.setUpdateTime(new Date()); result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial); // 车序号子表 amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialId); amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId()); amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber); amsSaleTrucknoMaterial.setUpdateTime(new Date()); result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial); // 运输订单子表 omstruckOrderMaterial.setOrderMaterialId(omstruckOrderMaterialMapper.selectMaxId()); omstruckOrderMaterial.setOrderId(orderId); omstruckOrderMaterial.setMaterialId(materialId); omstruckOrderMaterial.setOrderMaterialNumber(materialNumber); result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial); } // 得到运单中的物资 List> newList = omstruckOrderMaterialMapper.getMaterialList(orderId); toTmsMap.put("newMaterialMapList", newList); // 修改实绩结果 Map updateResult = tmsTruckFeign.update(toTmsMap); System.out.println(updateResult); return result; } /** * 副产品订单 * @param map * @return */ @Override public List> getFuSaleOrderList(Map map) { List> resultList = amsSaleOrderMapper.getFuSaleOrderList(map); return resultList; } /** * 同步关闭金蝶销售订单 * @param mapValue * @return */ @Override public int deleteSaleOrderSame(Map mapValue) { int result = 0; String reason = (String) mapValue.get("reason"); String number = (String) mapValue.get("number"); String wholeOrder = "1"; String status = "close"; Map head = new HashMap<>(); head.put("number",number); head.put("reason",reason); head.put("wholeOrder",wholeOrder); head.put("status",status); Map input = new HashMap<>(); Map totalMap = easDeleteUtil.getTotalMap(); input.put("head",head); totalMap.put("input",input); // 调用金蝶关闭接口 String json = JSONUtils.toJSONString(totalMap); System.out.println(json); Map resultMap = joinFeign.deleteSaleOrderToEas(totalMap); System.out.println(resultMap); BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId")); AmsSaleOrder amsSaleOrder = new AmsSaleOrder(); amsSaleOrder.setSaleOrderId(saleOrderId); amsSaleOrder.setDeleted(new BigDecimal(2)); amsSaleOrder.setInsertUpdateRemark(reason); result += amsSaleOrderMapper.closeOrderNotIn(saleOrderId); result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); return result; } }