From 3ee73abe8a9087c6bd8715b3480c48f3ab5b7e00 Mon Sep 17 00:00:00 2001 From: PigBaoBei <2739175034@qq.com> Date: Fri, 29 Mar 2024 10:53:03 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E6=94=B6=E4=BB=A3=E7=A0=81=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E3=80=81=E5=B8=82=E9=85=8D=E9=A2=84=E7=BA=A6=E8=BD=AC?= =?UTF-8?q?=E9=85=8D=E9=80=81=E5=9C=B0=E5=9D=80=E7=BB=8F=E7=BA=AC=E5=BA=A6?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/common/utils/AddressUtil.java | 81 +++++++++++++++++++ .../vo/DistributionParcelListVO.java | 5 ++ .../vo/DistributionReservationVO.java | 7 ++ .../DistributionReservationController.java | 2 + .../mapper/DistributionReservationMapper.java | 9 ++- .../mapper/DistributionReservationMapper.xml | 16 ++++ .../DistributionReservationServiceImpl.java | 5 ++ .../impl/DistributionSignforServiceImpl.java | 47 ++++++++--- 8 files changed, 158 insertions(+), 14 deletions(-) create mode 100644 blade-biz-common/src/main/java/org/springblade/common/utils/AddressUtil.java diff --git a/blade-biz-common/src/main/java/org/springblade/common/utils/AddressUtil.java b/blade-biz-common/src/main/java/org/springblade/common/utils/AddressUtil.java new file mode 100644 index 000000000..91d4f4eae --- /dev/null +++ b/blade-biz-common/src/main/java/org/springblade/common/utils/AddressUtil.java @@ -0,0 +1,81 @@ +package org.springblade.common.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.math.BigDecimal; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class AddressUtil { + + +// private static String KEY="<高德key>"; + + +// public static String GD_URL="http://restapi.amap.com/v3/geocode/geo?key=<高德地图KEY>&address="; + public static String GD_URL="http://restapi.amap.com/v3/geocode/geo?key=af745167b52e6548d450cbbf2c6134eb&address="; + + public static String SUCCESS="10000"; + + + + + + + + + /** + * @param addressName + * @Description 根据高德地图, 通过地址获取经纬度坐标 + * @Throws + * @Return java.lang.String + * @Date 2023-04-13 10:50:22 + * @Author WangKun + */ + public static Map getLatAndLngOrGDMap(String addressName) { + try { + Map map = new HashMap<>(); + String address = URLEncoder.encode(addressName, "UTF-8"); + String mapUrl = GD_URL + addressName ; + URL url = new URL(mapUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.connect(); + BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + StringBuilder sb = new StringBuilder(); + while ((line = br.readLine()) != null) { + sb.append(line); + } + br.close(); + connection.disconnect(); + JSONObject a = JSON.parseObject(sb.toString()); + if (!SUCCESS.equals(a.get("infocode"))){ + //解析不成功 + return null; + } + JSONObject c = JSON.parseObject(JSON.parseArray(a.get("geocodes").toString()).get(0).toString()); + String location = c.get("location").toString(); + List result = Arrays.asList(location.split(",")); + map.put("lng", new BigDecimal(result.get(0))); + map.put("lat", new BigDecimal(result.get(1))); + return map; + } catch (IndexOutOfBoundsException index) { + throw new IndexOutOfBoundsException(); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("失败!"); + } + return null; + } + + +} diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java index a750ffc92..40f944836 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java @@ -107,6 +107,11 @@ public class DistributionParcelListVO extends DistributionParcelListEntity { * 商场id */ private Long mallId; + + /** + * 商场id + */ + private Long reservationId; /** * 商场id */ diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationVO.java index d2da34338..1890bd12f 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationVO.java @@ -23,6 +23,7 @@ import lombok.EqualsAndHashCode; import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * 预约列表 视图实体类 @@ -118,4 +119,10 @@ public class DistributionReservationVO extends DistributionReservationEntity { @ApiModelProperty(value = "订单信息列表") private List stockArticleList; + /** + * 客户地图经纬度 + */ + @ApiModelProperty(value = "客户地图经纬度") + private Map mapInfo; + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java index be8c99564..060a59f4d 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java @@ -36,6 +36,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.springblade.common.constant.reservation.ReservationStatusConstant; +import org.springblade.common.utils.AddressUtil; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; @@ -51,6 +52,7 @@ import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Objects; diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java index f87ac952a..2093c1cc8 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java @@ -387,5 +387,12 @@ public interface DistributionReservationMapper extends BaseMapper selectStockupZeroOrderList(Long reservationId); + List selectStockupZeroOrderList(@Param("param") Long reservationId); + + /** + * 批量查询包件信息 + * @param reservationIds + * @return + */ + List selectPackageListByReservationIds(@Param("reservationIds") List reservationIds); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml index 3a6b92e9f..d7cfca701 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml @@ -1818,4 +1818,20 @@ ldrzp.reservation_id = #{reservationId} GROUP BY ldsa.id + diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java index 638b52799..4c105c829 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java @@ -58,6 +58,7 @@ import org.springblade.common.constant.stockup.StockAssignStatusConstant; import org.springblade.common.constant.stockup.StockupStatusConstant; import org.springblade.common.constant.stockup.StockupTypeConstant; import org.springblade.common.serviceConstant.ServiceConstant; +import org.springblade.common.utils.AddressUtil; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.support.Condition; @@ -1092,6 +1093,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl { r.setJingdu(entityWarehouseId.getLongitude()); r.setWeidu(entityWarehouseId.getLatitude()); + Map latAndLngOrGDMap = AddressUtil.getLatAndLngOrGDMap(r.getDeliveryAddress()); + if (Func.isNotEmpty(latAndLngOrGDMap)){ + r.setMapInfo(latAndLngOrGDMap); + } }); } } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java index 65fbdfebf..66ab12ed7 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java @@ -224,6 +224,25 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl collect = myWatchWarehouse.stream().map(BasicdataWarehouseEntity::getId).collect(Collectors.toList()); distributionSignfor.setWarehouseIdList(collect); List distributionSignforVOS = baseMapper.selectDistributionSignforPage(page, distributionSignfor); + List reservationIds = distributionSignforVOS.stream().map(DistributionSignforVO::getReservationId).collect(Collectors.toList()); + List distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationIds(reservationIds); + List list = disStockListDetailService.list(Wrappers.query().lambda() + .in(DisStockListDetailEntity::getReservationId, reservationIds) + .ne(DisStockListDetailEntity::getStockPackageStatus, ReservationPackageStatusConstant.quxiao.getValue()) + ); + Map> packageMap; + if (Func.isNotEmpty(distributionParcelListEntities)){ + packageMap = distributionParcelListEntities.stream().collect(Collectors.groupingBy(DistributionParcelListVO::getReservationId)); + } else { + packageMap = null; + } + Map> inventoryMap ; + if (Func.isNotEmpty(distributionParcelListEntities)){ + inventoryMap = list.stream().collect(Collectors.groupingBy(DisStockListDetailEntity::getReservationId)); + }else { + inventoryMap = null; + } + distributionSignforVOS.forEach(d -> { if (d.getDeliveryType().equals(DistributionTypeConstant.shipie.getValue())) { d.setDeliveryTypeName(DistributionTypeConstant.shipie.getName()); @@ -232,26 +251,28 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationId(d.getReservationId()); - //查询库存品信息 - List list = disStockListDetailService.list(Wrappers.query().lambda() - .eq(DisStockListDetailEntity::getReservationId, d.getReservationId()) - ); +// List distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationId(d.getReservationId()); +// //查询库存品信息 +// List list = disStockListDetailService.list(Wrappers.query().lambda() +// .eq(DisStockListDetailEntity::getReservationId, d.getReservationId()) +// ); int weizhuangchejianshu = 0; int weiqianshoujianshu = 0; int zhuangchejianshu = 0; int qianshoujianshu = 0; - if (Func.isNotEmpty(list) && list.size() > 0) { - zhuangchejianshu += list.stream().filter(f -> f.getStockLockingStatus().equals(InventoryLoadingStatusConstant.yizhuangche.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum(); + List distributionParcelListVOS = packageMap.get(d.getReservationId()); + List listDetailEntityList = inventoryMap.get(d.getReservationId()); + if (Func.isNotEmpty(listDetailEntityList) ) { + zhuangchejianshu += listDetailEntityList.stream().filter(f -> f.getStockLockingStatus().equals(InventoryLoadingStatusConstant.yizhuangche.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum(); // weizhuangchejianshu += list.stream().filter(f -> f.getStockLockingStatus().equals(InventoryLoadingStatusConstant.weizhuangche.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum(); - qianshoujianshu += list.stream().filter(f -> f.getStockSignfoStatus().equals(InventorySigningStatusConstant.yiqianshou.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum(); + qianshoujianshu += listDetailEntityList.stream().filter(f -> f.getStockSignfoStatus().equals(InventorySigningStatusConstant.yiqianshou.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum(); // weiqianshoujianshu += list.stream().filter(f -> f.getStockSignfoStatus().equals(InventorySigningStatusConstant.weiqianshou.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum(); } - if (Func.isNotEmpty(distributionParcelListEntities)) { - weizhuangchejianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); - zhuangchejianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); - weiqianshoujianshu += distributionParcelListEntities.stream().filter(f -> !f.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); - qianshoujianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); + if (Func.isNotEmpty(distributionParcelListVOS)) { + weizhuangchejianshu += distributionParcelListVOS.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); + zhuangchejianshu += distributionParcelListVOS.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); + weiqianshoujianshu += distributionParcelListVOS.stream().filter(f -> !f.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); + qianshoujianshu += distributionParcelListVOS.stream().filter(f -> f.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); } //该客户的异常装车件数 Integer abnormalLoading = distributionLoadscanMapper.selectAbnormalLoadingByReservationId(d.getReservationId());