package com.steerinfo.dil.service.impl; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.steerinfo.dil.feign.JoinFeign; import com.steerinfo.dil.feign.OtmsFeign; 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 com.steerinfo.framework.controller.RESTfulResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; 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 TmstruckLoadResult tmstruckLoadResult; @Autowired TmstruckWeightResult tmstruckWeightResult; @Autowired TmstruckWeightResultMapper tmstruckWeightResultMapper; @Autowired TmstruckLoadResultMapper tmstruckLoadResultMapper; @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 EASSaleOrderUtil easSaleOrderUtil; @Autowired EASTestUtil easTestUtil; @Autowired EASDeleteTestUtil easDeleteTestUtil; @Autowired EASDeleteApproveUtil easDeleteApproveUtil; @Autowired RmsMaterialMapper rmsMaterialMapper; @Autowired TmstrainPleaseApproveResultMapper tmstrainPleaseApproveResultMapper; @Autowired WmspOutboundResultMaterialMapper wmspOutboundResultMaterialMapper; @Resource EasSaleOrderStatusUtil easSaleOrderStatusUtil; @Autowired OtmsFeign otmsFeign; @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; } @Transactional(rollbackFor = Exception.class) @Override public int uploadSaleOrder(BigDecimal saleOrderId) throws Exception { 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 = easSaleOrderUtil.getTotalMap(); // 组装报文 totalMap.put("input",input); System.out.println(totalMap); String json = JSONUtils.toJSONString(totalMap); System.out.println(json); // 得到金蝶返回结果 Map s = joinFeign.pushSaleOrderToEas(totalMap); String status = (String) s.get("status"); if ("-1".equals(status)) { throw new Exception(amsSaleOrder.getSaleNumber() + "上传金蝶失败!"); } 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(2)); 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"); String materialName =(String) map.get("materialName"); if (materialNumber != null && materialNumber.toString().length() != 0 && !materialName.equals("钒渣")) { 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 @Transactional(rollbackFor = Exception.class) public int addSteelSaleOrder(Map mapValue) throws Exception { List> mapList = (List>) 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.findReceiveId(mapValue.get("receiveName")); if (receiveId == null) { throw new Exception("您输入的下单客户:" + mapValue.get("receiveName") + "不存在!!"); }else { //判断该收货客户有没有绑定片区 BigDecimal saleAreaId = amsSaleOrderMapper.selectSaleAreaId(receiveId); if(saleAreaId == null){ //如果片区为null,则绑定片区 //根据片区名称去查找片区ID if(mapValue.get("saleArea") != null){ String saleAreaName = (String) mapValue.get("saleArea"); saleAreaId = amsSaleOrderMapper.selectSaleAreaIdByName(saleAreaName); if(saleAreaId == null){ throw new Exception("您输入的销售片区:" + mapValue.get("saleArea") +"不存在!!"); }else{ //更新收货客户下的销售片区 amsSaleOrderMapper.bindSaleArea(receiveId,saleAreaId); } } } } } // 是否自提 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")); if (salerId == null || salerId.intValue() == 0) { 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 == 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")); 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 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> 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 = getCarrierByAddress(amsSaleOrderMaterial.getSaleShippingAddressId()); BigDecimal carrierCount = null; if(place != null && !"null".equals(place)){ carrierCount = amsSaleOrderMapper.getMoreCarrier("%" + place + "%"); } // 单一承运商才进行匹配 if (carrierList != null && carrierList.size() == 1 && carrierList.get(0) != null && carrierCount.intValue() == 0) { List> list = new ArrayList<>(); Map map1 = carrierList.get(0); // 传入车序号主键和承运商id map1.put("saleOrderMaterialId", saleOrderMaterialId); 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")); 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 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("materialNumber")); // 物资名称 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("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()); 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) { HashMap mapValue = new HashMap<>(); mapValue.put("saleOrderId",saleOrderId); List> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(mapValue); 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(rollbackFor = Exception.class) @Override public int dispatchSteelOrder(List> mapList) throws Exception { Map stringObjectMap = mapList.get(0); Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch(); Integer saleStatus = amsSaleOrderMapper.findStatus(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId"))); String selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId"))); if (saleStatus == 1) { throw new Exception("订单未审核,无法派车!"); } int result = 0; // 遍历每一行 for (Map map : mapList) { // 得到车牌号 String capacityNumber = (String) map.get("capacityNumber"); Map details = amsSaleOrderMapper.getOrderIdByCapacity(map); if(details!=null && details.get("orderId")!=null){ if(details.get("isEn")==null){ throw new Exception(capacityNumber+"有未进厂的运输订单任务,无法派单"); }else if(details.get("isLeave")==null){ throw new Exception(capacityNumber+"有未出厂的运输订单任务,无法派单"); }else if(details.get("isArrival")==null){ throw new Exception(capacityNumber+"有未抵达的运输订单任务,无法派单"); }else if(details.get("isReceipt")==null){ throw new Exception(capacityNumber+"有未签收的运输订单任务,无法派单"); } throw new Exception(capacityNumber+"有未完成的运输订单任务,无法派单"); } if(isCheckGps!=null && isCheckGps==0){ Map locationResult = null; try{ Map data = (Map)otmsFeign.getCurrentLocation(capacityNumber).getData(); locationResult = (Map)data.get("result"); }catch (Exception e){ //出现任何异常不抛出,不终止程序 } if(locationResult==null || locationResult.get("lon")==null || locationResult.get("lat")==null){ throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。"); } } // 得到车序号表主键 BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")); // 得到承运商 BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId")); // 查询到车序号的单价 BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map); // 得到详细地址id BigDecimal placeId = amsSaleOrderMapper.getPlaceId(saleOrderMaterialId); // 如果详细地址匹配不到单价,则匹配省市县内最高的一条单价(只给非自提的进行匹配) if (priceId == null && selfMention.equals("否")) { // 找到详细地址下的省市县id BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId); // 根据省市县匹配出省市县下的所有单价 Map hashMap = new HashMap<>(); hashMap.put("addressId", addressId); hashMap.put("carrierId", carrierId); List> priceList = amsSaleOrderMapper.getAddressPriceList(hashMap); // 如果长度为0,说明此地址所在省市县内也无单价 if (priceList != null && priceList.size() != 0) { Map priceMap = priceList.get(0); priceId = (BigDecimal) priceMap.get("priceId"); } else { priceId = new BigDecimal(2400); } } // 运输线路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.setCanWork(new BigDecimal(0)); // 下发时间 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 placeId * @return */ public synchronized List> getCarrierByAddress(BigDecimal placeId) { BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId); List> mapList = amsSaleOrderMapper.getCarrierByAddress(addressId); 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(2)); // 如果是已经上传金蝶的销售订单,则同步删除 AmsSaleOrder amsSaleOrder1 = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId); if (amsSaleOrder1.getSaleOrderStatus().intValue() == 4) { String reason = "修改物资关闭上一条销售订单"; String number = amsSaleOrder1.getSaleNumber(); 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 = easDeleteApproveUtil.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); }else if(amsSaleOrder1.getSaleOrderStatus().intValue() == 1 || amsSaleOrder1.getSaleOrderStatus().intValue() == 2){ String reason = "修改物资关闭上一条销售订单"; String number = amsSaleOrder1.getSaleNumber(); Map deleteMap = new HashMap<>(); deleteMap.put("saleOrderId",saleOrderId); deleteMap.put("reason",reason); deleteMap.put("number",number); deleteSaleOrderSame(deleteMap); } // 如果是副产品订单则关闭时同步关闭未进厂的运单 Map map = new HashMap<>(); map.put("saleOrderId",saleOrderId); List amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(map); if (amsSaleMaterials != null && amsSaleMaterials.get(0).getSaleWarehouse() != 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 */ @Transactional(rollbackFor = Exception.class) @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); String status = (String) s.get("status"); if ("-1".equals(status)) { continue; } 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 */ @Transactional(rollbackFor = Exception.class) @Override public int updateCarAddress(Map mapValue) { // 判断是否需要删除金蝶分录 Integer isCloseEas = (Integer) mapValue.get("isCloseEas"); String operateName = (String) mapValue.get("operateName"); int result = 0; // 运输订单id BigDecimal orderId = DataChange.dataToBigDecimal(mapValue.get("orderId")); // 车序号id BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")); // 是 if (isCloseEas == 0 && orderId != null && orderId.intValue() != 0) { OmstruckOrder omstruckOrder = new OmstruckOrder(); omstruckOrder.setOrderId(orderId); omstruckOrder.setOrderStatus(new BigDecimal(7)); if(operateName != null){ omstruckOrder.setOptionerCode(operateName); } omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder); // 得到销售订单物资表主键 List> saleMaterialIdList = amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId); for (Map map : saleMaterialIdList) { // 关闭销售订单物资子表 BigDecimal saleMaterialId = (BigDecimal) map.get("saleMaterialId"); AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial(); amsSaleMaterial.setDeleted(new BigDecimal(0)); amsSaleMaterial.setSaleMaterialId(saleMaterialId); amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial); } return 0; } // 判断是否需要修改派车 Object isNewCar = mapValue.get("isNewCar"); // 省市县ID BigDecimal shippingAddressId = DataChange.dataToBigDecimal(mapValue.get("shipperAddressId")); // 具体地址 String place = (String) mapValue.get("place"); Integer addressid1= (Integer) mapValue.get("placeId"); BigDecimal addressid2 =BigDecimal.ZERO; AmsSaleOrderMaterial amsSaleOrderMaterial = amsSaleOrderMaterialMapper.selectByPrimaryKey(saleOrderMaterialId); if (place != null && !("".equals(place))) { List> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId); addressid2 =(BigDecimal) placeIdList.get(0).get("placeId"); 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")); } } String addressids=""; addressids =addressid1+","+addressid2; amsSaleOrderMaterial.setShippingAddressIds(addressids); result += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial); // 需要换车 if (isNewCar != null && (Integer) isNewCar == 0) { // 根据车序号得到定向派单表主键 BigDecimal dispatchId = amsSaleOrderMapper.getDispatchId(saleOrderMaterialId); if (dispatchId != null) { amsDispatchSaleOrderMapper.deleteByPrimaryKey(dispatchId); } if (orderId != null) { omstruckOrderMapper.deleteByPrimaryKey(orderId); } 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(rollbackFor = Exception.class) @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")); // 将车辆改为不可作业状态 OmstruckOrder omstruckOrder = new OmstruckOrder(); omstruckOrder.setOrderId(orderId); omstruckOrder.setCanWork(new BigDecimal(1)); omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder); // 得到运单中的物资 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; BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId")); String reason = (String) mapValue.get("reason"); String number = (String) mapValue.get("number"); Map head = new HashMap<>(); Map input = new HashMap<>(); // 销售订单号 input.put("number",number); Map totalMap = easDeleteUtil.getTotalMap(); totalMap.put("input",input); // 调用金蝶关闭接口 String json = JSONUtils.toJSONString(totalMap); System.out.println(json); Map resultMap = joinFeign.deleteSaleOrderToEas(totalMap); System.out.println(resultMap); 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; } /** * 展示反审批的钢材订单 * @param mapValue * @return */ @Override public List> getSteelOrderDeletedList(Map mapValue) { List> mapList = amsSaleOrderMapper.getSteelOrderDeletedList(mapValue); return mapList; } /** * 展示所有状态销售订单列表 * @param mapValue * @return */ @Override public List> getAllSteelSaleOrderList(Map mapValue) { return amsSaleOrderMapper.getAllSteelSaleOrderList(mapValue); } /** * 修改厂内未装货车辆的运单车牌号 * @param mapValue * @return */ @Override public int updateCapacityNumberInFactory(Map mapValue) { Object lineSequence = mapValue.get("lineSequence"); int result = 0; //查询输入进来的车牌号是否与原有车牌号一致,如果一致则退出 BigDecimal oldCapacityId = omstruckOrderMapper.getOldCapacityId(DataChange.dataToBigDecimal(mapValue.get("orderId"))); if(oldCapacityId.compareTo(DataChange.dataToBigDecimal(mapValue.get("capacityId"))) == 0){ return 1; } if (lineSequence == null || "0".equals(lineSequence.toString()) || "1".equals(lineSequence.toString()) || "2".equals(lineSequence.toString())) { String capacityids=""; Integer capacityid1= (Integer) mapValue.get("capacityIds"); Integer capacityid2= (Integer) mapValue.get("capacityId"); if (capacityid1!=null && !("".equals(capacityid1))){ capacityids=capacityid1+","+capacityid2; } mapValue.put("capacityids",capacityids); //这是修改车牌号 //将排队信息删掉 Map isSpellingMap = omstruckOrderMapper.getSteelIsSpelling(DataChange.dataToBigDecimal(mapValue.get("orderId"))); if(isSpellingMap != null){ int isSpelling = DataChange.dataToBigDecimal(isSpellingMap.get("isSpelling")).intValue(); if(isSpelling == 1){ result += omstruckOrderMapper.deleteSpellingList(isSpellingMap.get("listId")); }else{ result += omstruckOrderMapper.deleteQueueList(isSpellingMap.get("listId")); } } result += amsSaleOrderMapper.updateCapacityNumberInFactory(mapValue); //若是接单之后还需要删除实绩且将状态变为4 //查询运输订单的状态和总实绩ID Map orderMesMap = amsSaleOrderMapper.getOrderMes(mapValue); BigDecimal resultTotalId = DataChange.dataToBigDecimal(orderMesMap.get("resultTotalId")); if(DataChange.dataToBigDecimal(orderMesMap.get("orderStatus")).intValue() == 5){ OmstruckOrder omstruckOrder = new OmstruckOrder(); omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId"))); omstruckOrder.setOrderStatus(new BigDecimal(4)); omstruckOrder.setOrderLineSequence(new BigDecimal(0)); result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder); result += omstruckOrderMapper.deleteEnResult(resultTotalId); result += omstruckOrderMapper.deleteWeightResult(resultTotalId); result += omstruckOrderMapper.deleteLoadResult(resultTotalId); result += omstruckOrderMapper.deleteLeaveResult(resultTotalId); } } return result; } @Override public int updateConsigneeTel(Map mapValue) { String saleOrderNo= (String) mapValue.get("saleOrderNo"); Integer saleOrderMaterialId= (Integer) mapValue.get("saleOrderMaterialId"); String consigneeTel= (String) mapValue.get("consigneeTel"); int result = 0; if (saleOrderNo!=null&&!("".equals(saleOrderNo)) && saleOrderMaterialId!=null && !("".equals(saleOrderMaterialId))){ BigDecimal id = DataChange.dataToBigDecimal(saleOrderMaterialId); if (id!=null&&!("".equals(id))){ result += amsSaleOrderMapper.updateForTel(id,consigneeTel); } } return result; } @Override public List> getSaleMaterialId(BigDecimal saleOrderMaterialId) { return amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId); } /** * 展示下发给承运商的车序号和物资 * @param map * @return */ @Override public List> getCarrierTruckNoAndMaterialList(Map map) { Object carrierSsoId = map.get("carrierSsoId"); if (carrierSsoId != null && ("".equals(carrierSsoId)) || "null".equals(carrierSsoId) || "undefined".equals(carrierSsoId)) { map.replace("carrierSsoId",null); } List> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(map); for (Map mapValue : mapList) { BigDecimal placeId = (BigDecimal) mapValue.get("placeId"); if (placeId != null) { List> carrierAndPriceList = getCarrierByPlace(placeId); mapValue.put("carrierAndPriceList", carrierAndPriceList); } } return mapList; } /** * 同步关闭金蝶物资分录 * @param mapValue * @return */ @Override @Transactional public int closeSteelMaterialId(Map mapValue) { int result = 0; Object orderId = mapValue.get("orderId"); Integer orderStatus = (Integer) mapValue.get("orderStatus"); BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")); List> loadIdList = amsSaleMaterialMapper.findLoadIdList(saleOrderMaterialId); List> weightIdList = amsSaleMaterialMapper.findWeightIdList(saleOrderMaterialId); String reason = (String) mapValue.get("reason"); BigDecimal saleMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleMaterialId")); // 如果还未派车 if (orderId == null) { // 订单子表设为关闭状态 AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial(); amsSaleMaterial.setSaleMaterialId(saleMaterialId); amsSaleMaterial.setDeleted(new BigDecimal(0)); amsSaleMaterial.setInsertUpdateRemark(reason); result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial); return result; } // 订单子表设为关闭状态 AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial(); amsSaleMaterial.setSaleMaterialId(saleMaterialId); amsSaleMaterial.setDeleted(new BigDecimal(0)); amsSaleMaterial.setInsertUpdateRemark(reason); result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial); // 已派车 if (loadIdList == null || loadIdList.size() == 0) { return result; } // 删除实绩表 Map loadMap = loadIdList.get(0); Map weightMap = weightIdList.get(0); BigDecimal loadId = (BigDecimal) loadMap.get("loadId"); BigDecimal weightId = (BigDecimal) weightMap.get("weightId"); result += amsSaleMaterialMapper.updateOrderMaterialToClose(mapValue); result += amsSaleMaterialMapper.deleteLoadResult(loadId); result += amsSaleMaterialMapper.deleteWeightResult(weightId); result += amsSaleMaterialMapper.deleteWmspOutResult(mapValue); return result; } /** * 展示已审核化产焦炭销售订单列表 * @param mapValue * @return */ @Override public List> getSaleCokeOrder(Map mapValue) { List> resultList = amsSaleOrderMapper.getSaleCokeOrder(mapValue); return resultList; } /** * 反关闭金蝶单个分录 * @param saleMaterialId * @return */ @Override public int adverseCloseSaleMaterial(BigDecimal saleMaterialId) { Map head = new HashMap<>(); Map input = new HashMap<>(); // 0:代表不关闭整单 String wholeOrder = "0"; // unClose : 代表反关闭 String status = "unClose"; AmsSaleMaterial amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(saleMaterialId); int result = amsSaleMaterialMapper.adverseCloseSaleMaterial(saleMaterialId); AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(amsSaleMaterial.getSaleOrderId()); // 根据分录id查询运单id,物资id,总实绩id Map saleMaterialMap = amsSaleOrderMapper.getSaleMaterialMessage(saleMaterialId); BigDecimal orderId = (BigDecimal) saleMaterialMap.get("orderId"); BigDecimal orderStatus = (BigDecimal) saleMaterialMap.get("orderStatus"); if (orderId != null && orderStatus.intValue() == 5) { BigDecimal resultTotalId = (BigDecimal) saleMaterialMap.get("resultTotalId"); BigDecimal materialId = (BigDecimal) saleMaterialMap.get("materialId"); // 根据总实绩id查询订单中的最大路段顺序号 int maxNum = amsSaleOrderMapper.findOrderMaxNum(resultTotalId); // 得到皮重顺序号 int tareNum = maxNum - 3; // 得到装货顺序号 int loadNum = maxNum - 2; // 得到毛重顺序号 int grossNum = maxNum - 1; // 装货实绩 TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult(); TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult(); tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId()); tmstruckLoadResult.setResultTotalId(resultTotalId); tmstruckLoadResult.setMaterialId(materialId); tmstruckLoadResult.setSegmentSqe(new BigDecimal(loadNum)); result += tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult); // 计量实绩 tmstruckWeightResult.setWeightTaskResultId(tmstruckWeightResultMapper.selectMaxId()); tmstruckWeightResult.setResultTotalId(resultTotalId); tmstruckWeightResult.setMaterialId(materialId); tmstruckWeightResult.setResultTarePlaceId(new BigDecimal(10)); tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(2)); tmstruckWeightResult.setGrossSegmentSqe(new BigDecimal(grossNum)); tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(tareNum)); result += tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult); // 出库子表 BigDecimal outBoundId = (BigDecimal) saleMaterialMap.get("outBoundId"); BigDecimal materialNumber = (BigDecimal) saleMaterialMap.get("materialNumber"); if (outBoundId != null) { BigDecimal resultMaterialId = wmspOutboundResultMaterialMapper.getSeqNumber("seq__WMSP_OUTBOUND_RESUL_TMATRIAL"); WmspOutboundResultMaterial wmspOutboundResultMaterial = new WmspOutboundResultMaterial(); wmspOutboundResultMaterial.setResultMaterialId(resultMaterialId); wmspOutboundResultMaterial.setOutboundResultId(outBoundId); wmspOutboundResultMaterial.setMaterialId(materialId); wmspOutboundResultMaterial.setMaterialNumber(materialNumber); wmspOutboundResultMaterial.setInsertTime(new Date()); wmspOutboundResultMaterial.setInsertUsername("admin"); wmspOutboundResultMaterial.setStatus(new BigDecimal(1)); result += wmspOutboundResultMaterialMapper.insertSelective(wmspOutboundResultMaterial); } } // 设置反关闭分录id head.put("unCloseEntryId",amsSaleMaterial.getEasPrimaryId()); // 设置是否整单 head.put("wholeOrder",wholeOrder); // 设置销售订单号 head.put("number",amsSaleOrder.getSaleNumber()); // 设置状态:unClose,反关闭;close,关闭 head.put("status",status); input.put("head",head); // 测试 Map totalMap = easUtil.getTotalMap(); // 正式 // 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); return result; } /** * 反关闭金蝶整个销售订单 * @param saleOrderId * @return */ @Override public int adverseCloseSaleOrder(BigDecimal saleOrderId) { Map head = new HashMap<>(); Map input = new HashMap<>(); // 0:代表不关闭整单 String wholeOrder = "1"; // unClose : 代表反关闭 String status = "unClose"; AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId); amsSaleOrder.setDeleted(new BigDecimal(0)); // 开启所有的分录 int result = amsSaleMaterialMapper.openAllSaleMaterial(amsSaleOrder.getSaleOrderId()); result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); // 设置是否整单 head.put("wholeOrder",wholeOrder); // 设置销售订单号 head.put("number",amsSaleOrder.getSaleNumber()); // 设置状态:unClose,反关闭;close,关闭 head.put("status",status); input.put("head",head); // 测试 Map totalMap = easUtil.getTotalMap(); // 正式 // 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); return result; } @Override public List> getKucunList(Map map) { return amsSaleOrderMapper.getKucunList(map); } //反关闭 @Override public int reverseCloseOrder(Map map) { Integer isOpenEas = (Integer) map.get("isOpenEas"); String operateName = (String) map.get("operateName"); int result = 0; // 运输订单id BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId")); // 车序号id BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")); Map head = new HashMap<>(); Map input = new HashMap<>(); // 0:代表不关闭整单 String wholeOrder = "0"; // unClose : 代表反关闭 String status = "unClose"; if( orderId != null && orderId.intValue() != 0){ //根据订单id查询下面的实绩个数 int resultCount = amsSaleMaterialMapper.getOrderResults(orderId); OmstruckOrder omstruckOrder = new OmstruckOrder(); omstruckOrder.setOrderId(orderId); if(resultCount == 0){ omstruckOrder.setOrderStatus(new BigDecimal(4)); }else{ omstruckOrder.setOrderStatus(new BigDecimal(5)); } if(operateName != null){ omstruckOrder.setOptionerCode(operateName); } omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder); // 根据车序号主键修改子表 amsSaleMaterialMapper.updateSaleMaterial(saleOrderMaterialId); //查询分录ID,修改金蝶 List> saleMaterialIdList = amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId); for(Map easMap:saleMaterialIdList){ // 设置反关闭分录id head.put("unCloseEntryId",easMap.get("closeEntryId")); // 设置是否整单 head.put("wholeOrder",wholeOrder); // 设置销售订单号 head.put("number",map.get("saleNumber")); // 设置状态:unClose,反关闭;close,关闭 head.put("status",status); input.put("head",head); Map totalMap = easUtil.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); } return 0; } return 1; } @Override public int getSaleOrderStatus(String saleNumber) { int result = 0; Map input = new HashMap<>(); // 销售订单号 input.put("number",saleNumber); Map totalMap = easSaleOrderStatusUtil.getTotalMap(); totalMap.put("input",input); // 调用金蝶关闭接口 String json = JSONUtils.toJSONString(totalMap); System.out.println(json); Map resultMap = joinFeign.deleteSaleOrderToEas(totalMap); System.out.println(resultMap); String outPutMap = (String) resultMap.get("output"); JSONObject jsonObject = JSON.parseObject(outPutMap); if(jsonObject != null){ result = DataChange.dataToBigDecimal(jsonObject.get("NumberStatus")).intValue(); } if(result == 7){ //如果为7则更新 amsSaleOrderMapper.updateSaleOrderStatus(saleNumber); } return result; } }