Browse Source

签收代码调整、市配预约转配送地址经纬度解析

pull/5/head
汤建军 11 months ago
parent
commit
3ee73abe8a
  1. 81
      blade-biz-common/src/main/java/org/springblade/common/utils/AddressUtil.java
  2. 5
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java
  3. 7
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationVO.java
  4. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java
  5. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java
  6. 16
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  7. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
  8. 47
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

81
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<String, BigDecimal> getLatAndLngOrGDMap(String addressName) {
try {
Map<String, BigDecimal> 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<String> 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;
}
}

5
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
*/

7
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<DistributionStockArticleVO> stockArticleList;
/**
* 客户地图经纬度
*/
@ApiModelProperty(value = "客户地图经纬度")
private Map<String,BigDecimal> mapInfo;
}

2
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;

9
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java

@ -387,5 +387,12 @@ public interface DistributionReservationMapper extends BaseMapper<DistributionRe
* @param reservationId
* @return
*/
List<DistributionStockupOrderListVO> selectStockupZeroOrderList(Long reservationId);
List<DistributionStockupOrderListVO> selectStockupZeroOrderList(@Param("param") Long reservationId);
/**
* 批量查询包件信息
* @param reservationIds
* @return
*/
List<DistributionParcelListVO> selectPackageListByReservationIds(@Param("reservationIds") List<Long> reservationIds);
}

16
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
</select>
<select id="selectPackageListByReservationIds"
resultType="com.logpm.distribution.vo.DistributionParcelListVO">
SELECT
ldpl.*,
ldrs.reservation_id AS reservationId
FROM
logpm_distribution_reservation_package AS ldrs
LEFT JOIN logpm_distribution_parcel_list AS ldpl ON ldrs.parce_list_id = ldpl.id
<where>
ldrs.packet_bar_status IN ('1','3') AND ldpl.conditions = 1
AND ldrs.reservation_id IN
<foreach collection="reservationIds" item="reservationId" open="(" separator="," close=")">
#{reservationId}
</foreach>
</where>
</select>
</mapper>

5
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<Distribu
reservationVOList.stream().forEach(r -> {
r.setJingdu(entityWarehouseId.getLongitude());
r.setWeidu(entityWarehouseId.getLatitude());
Map<String, BigDecimal> latAndLngOrGDMap = AddressUtil.getLatAndLngOrGDMap(r.getDeliveryAddress());
if (Func.isNotEmpty(latAndLngOrGDMap)){
r.setMapInfo(latAndLngOrGDMap);
}
});
}
}

47
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

@ -224,6 +224,25 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
List<Long> collect = myWatchWarehouse.stream().map(BasicdataWarehouseEntity::getId).collect(Collectors.toList());
distributionSignfor.setWarehouseIdList(collect);
List<DistributionSignforVO> distributionSignforVOS = baseMapper.selectDistributionSignforPage(page, distributionSignfor);
List<Long> reservationIds = distributionSignforVOS.stream().map(DistributionSignforVO::getReservationId).collect(Collectors.toList());
List<DistributionParcelListVO> distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationIds(reservationIds);
List<DisStockListDetailEntity> list = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.in(DisStockListDetailEntity::getReservationId, reservationIds)
.ne(DisStockListDetailEntity::getStockPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
Map<Long, List<DistributionParcelListVO>> packageMap;
if (Func.isNotEmpty(distributionParcelListEntities)){
packageMap = distributionParcelListEntities.stream().collect(Collectors.groupingBy(DistributionParcelListVO::getReservationId));
} else {
packageMap = null;
}
Map<Long, List<DisStockListDetailEntity>> 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<Distribution
} else {
d.setDeliveryTypeName("");
}
List<DistributionParcelListEntity> distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationId(d.getReservationId());
//查询库存品信息
List<DisStockListDetailEntity> list = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getReservationId, d.getReservationId())
);
// List<DistributionParcelListEntity> distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationId(d.getReservationId());
// //查询库存品信息
// List<DisStockListDetailEntity> list = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>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<DistributionParcelListVO> distributionParcelListVOS = packageMap.get(d.getReservationId());
List<DisStockListDetailEntity> 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());

Loading…
Cancel
Save