Browse Source

物流优化

dev
wangfukang 1 year ago
parent
commit
6c17755618
  1. 16
      hiver-admin/test-output/test-report.html
  2. 45
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java
  3. 24
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/controller/LogisticsOrderController.java
  4. 4
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/entity/LogisticsOrder.java
  5. 4
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/StatisticsVo.java
  6. 12
      hiver-core/src/main/resources/mapper/LogisticsOrderMapper.xml
  7. 9
      hiver-core/src/main/resources/mapper/LogisticsStationMapper.xml

16
hiver-admin/test-output/test-report.html

@ -35,7 +35,7 @@
<a href="#"><span class="badge badge-primary">Hiver</span></a>
</li>
<li class="m-r-10">
<a href="#"><span class="badge badge-primary">十一月 18, 2024 00:59:02</span></a>
<a href="#"><span class="badge badge-primary">十一月 18, 2024 20:21:08</span></a>
</li>
</ul>
</div>
@ -84,7 +84,7 @@
<div class="test-detail">
<span class="meta text-white badge badge-sm"></span>
<p class="name">passTest</p>
<p class="text-sm"><span>00:59:03 上</span> / <span>0.024 secs</span></p>
<p class="text-sm"><span>20:21:09 下</span> / <span>0.016 secs</span></p>
</div>
<div class="test-contents d-none">
<div class="detail-head">
@ -92,9 +92,9 @@
<div class="info">
<div class='float-right'><span class='badge badge-default'>#test-id=1</span></div>
<h5 class="test-status text-pass">passTest</h5>
<span class='badge badge-success'>11.18.2024 00:59:03</span>
<span class='badge badge-danger'>11.18.2024 00:59:03</span>
<span class='badge badge-default'>0.024 secs</span>
<span class='badge badge-success'>11.18.2024 20:21:09</span>
<span class='badge badge-danger'>11.18.2024 20:21:09</span>
<span class='badge badge-default'>0.016 secs</span>
</div>
<div class="m-t-10 m-l-5"></div>
</div>
@ -104,7 +104,7 @@
<tbody>
<tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td>
<td>0:59:03</td>
<td>20:21:09</td>
<td>
Test passed
</td>
@ -128,13 +128,13 @@
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Started</p>
<h3>十一月 18, 2024 00:59:02</h3>
<h3>十一月 18, 2024 20:21:08</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Ended</p>
<h3>十一月 18, 2024 00:59:03</h3>
<h3>十一月 18, 2024 20:21:09</h3>
</div></div>
</div>
<div class="col-md-3">

45
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java

@ -46,15 +46,6 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
//根据名称、电话、地址查询看是不是存在,如果不存在则新建一条
if (StringUtils.isEmpty(logisticsOrder.getShipperId())) {
// 查询,然后判断新增
final LambdaQueryWrapper<LogisticsAddressBook> stuQuery = new LambdaQueryWrapper<>();
stuQuery.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getShipperName())
.eq(LogisticsAddressBook::getAddressType, 1)
.eq(LogisticsAddressBook::getMobile, logisticsOrder.getShipperMobile())
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getShipperAddress());
final Long count = getBaseMapper().selectCount(stuQuery);
if(count == 0){
// 创建发货人地址簿
final LogisticsAddressBook shipperAddressBook = new LogisticsAddressBook();
// 设置发货人名称,从物流订单的发货人名称中获取
@ -71,26 +62,21 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
shipperAddressBook.setCreateBy(logisticsOrder.getCreateBy());
// 设置联系电话,从物流订单的发货人手机信息中获取
shipperAddressBook.setMobile(logisticsOrder.getShipperMobile());
// 设置收发货人名称,从物流订单的发货人名称中获取
shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
list.add(shipperAddressBook);
}
// 回填新增的发货人id
logisticsOrder.setShipperId(shipperAddressBook.getId());
} else {
// 有id,查询,并更新名称
final LogisticsAddressBook oldLogisticsAddressBook = logisticsAddressBookMapper.selectById(logisticsOrder.getShipperId());
oldLogisticsAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
// 地址
oldLogisticsAddressBook.setAddressInfo(logisticsOrder.getShipperAddress());
// 电话
oldLogisticsAddressBook.setMobile(logisticsOrder.getShipperMobile());
list.add(oldLogisticsAddressBook);
}
if (StringUtils.isEmpty(logisticsOrder.getReceiverId())) {
final LambdaQueryWrapper<LogisticsAddressBook> stuQuery2 = new LambdaQueryWrapper<>();
stuQuery2.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getReceiverName())
.eq(LogisticsAddressBook::getAddressType, 2)
.eq(LogisticsAddressBook::getMobile, logisticsOrder.getReceiverMobile())
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getReceiverAddress());
final Long count2 = getBaseMapper().selectCount(stuQuery2);
if(count2 == 0 && StringUtils.isEmpty(logisticsOrder.getReceiverId())) {
// 创建收货人地址簿
final LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook();
// 设置收货人名称,从物流订单的收货人名称中获取
@ -108,11 +94,18 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
// 设置联系电话,从物流订单的发货人手机信息中获取
reciverAddressBook.setMobile(logisticsOrder.getReceiverMobile());
list.add(reciverAddressBook);
}
// 回填新增的收货人id
logisticsOrder.setReceiverId(reciverAddressBook.getId());
} else {
// 有id,查询,并更新名称
final LogisticsAddressBook oldLogisticsAddressBook = logisticsAddressBookMapper.selectById(logisticsOrder.getReceiverId());
oldLogisticsAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
// 名称
oldLogisticsAddressBook.setShipperOrReceiverName(logisticsOrder.getReceiverName());
// 地址
oldLogisticsAddressBook.setAddressInfo(logisticsOrder.getReceiverAddress());
// 电话
oldLogisticsAddressBook.setMobile(logisticsOrder.getReceiverMobile());
list.add(oldLogisticsAddressBook);
}
@ -136,6 +129,9 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
if (logisticsAddressBookQueryVo != null && logisticsAddressBookQueryVo.getAddressType() != null) {
wrapper.eq(LogisticsAddressBook::getAddressType, logisticsAddressBookQueryVo.getAddressType());
}
if (logisticsAddressBookQueryVo != null && logisticsAddressBookQueryVo.getCompanyId() != null) {
wrapper.eq(LogisticsAddressBook::getCompanyId, logisticsAddressBookQueryVo.getCompanyId());
}
page.setCurrent(logisticsAddressBookQueryVo.getPageNum());
page.setSize(logisticsAddressBookQueryVo.getPageSize());
return logisticsAddressBookMapper.selectPage(page, wrapper);
@ -143,10 +139,11 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
/**
* 根据名称支持拼音模糊匹配及手机号查询列表
* @author 王富康
* @date 2024/10/8
*
* @param logisticsAddressBookQueryVo
* @return List<LogisticsAddressBook>
* @author 王富康
* @date 2024/10/8
*/
@Override
public JSONObject getLogisticsAddressBookList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) {

24
hiver-core/src/main/java/cc/hiver/core/logisticsorder/controller/LogisticsOrderController.java

@ -5,7 +5,6 @@ import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.common.vo.Result;
import cc.hiver.core.entity.LogiticsCompany;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog;
@ -26,7 +25,6 @@ import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 物流订单控制器
@ -71,15 +69,6 @@ public class LogisticsOrderController {
// 20241015 保存收发货人地址簿,先保存地址簿,方便后边获取收发货人id
final boolean b = logisticsAddressBookService.saveLogisticsAddressBook(logisticsOrder);
if (b) {
// 获取收货人id
final Map<String, LogisticsAddressBook> logisticsAddressBook = logisticsAddressBookService.getByOrder(logisticsOrder);
if (logisticsAddressBook.containsKey("shipperLogisticsAddressBook")) {
logisticsOrder.setShipperId(logisticsAddressBook.get("shipperLogisticsAddressBook").getId());
}
if (logisticsAddressBook.containsKey("receiverLogisticsAddressBook")) {
logisticsOrder.setReceiverId(logisticsAddressBook.get("receiverLogisticsAddressBook").getId());
}
logisticsOrderService.saveOrUpdate(logisticsOrder);
return ResultUtil.data(logisticsOrder);
} else {
@ -105,23 +94,16 @@ public class LogisticsOrderController {
final LogisticsOrder oldLogisticsOrder = logisticsOrderService.getById(logisticsOrder.getId());
// 设置创建人姓名
final LogiticsCompany logiticsCompany = securityUtil.getCurrCompany();
if(logiticsCompany != null){
logisticsOrder.setUpdateBy(logiticsCompany.getId());
// 根据收发货人获取信息,如果名字变了,那么修改收发货人的信息
// 设置创建人姓名
logisticsOrder.setCreateBy(logiticsCompany.getId());
logisticsOrder.setCreateByName(logiticsCompany.getContacts());
}
// 20241015 保存收发货人地址簿,先保存地址簿,方便后边获取收发货人id
final boolean b = logisticsAddressBookService.saveLogisticsAddressBook(logisticsOrder);
if (b) {
// 获取收货人id
final Map<String, LogisticsAddressBook> logisticsAddressBook = logisticsAddressBookService.getByOrder(logisticsOrder);
if (logisticsAddressBook.containsKey("shipperLogisticsAddressBook")) {
logisticsOrder.setShipperId(logisticsAddressBook.get("shipperLogisticsAddressBook").getId());
}
if (logisticsAddressBook.containsKey("receiverLogisticsAddressBook")) {
logisticsOrder.setReceiverId(logisticsAddressBook.get("receiverLogisticsAddressBook").getId());
}
final boolean a = logisticsOrderService.saveOrUpdate(logisticsOrder);
if (a) {
//如果更新成功,把修改记录保存一下
@ -243,7 +225,7 @@ public class LogisticsOrderController {
}
try {
logisticsOrderService.batchUpdateOrderStatus(orderIds, status);
return ResultUtil.error("批量更新订单状态成功!");
return ResultUtil.success("批量更新订单状态成功!");
} catch (Exception e) {
return ResultUtil.error("批量更新订单状态失败!");
}

4
hiver-core/src/main/java/cc/hiver/core/logisticsorder/entity/LogisticsOrder.java

@ -203,6 +203,10 @@ public class LogisticsOrder{
@ApiModelProperty(value = "订单状态")
private String orderStatus;
@CompareField(name = "重量历史")
@ApiModelProperty(value = "重量历史")
private String weightHistory;
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "修改记录数")

4
hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/StatisticsVo.java

@ -40,4 +40,8 @@ public class StatisticsVo {
// 保费
@ApiModelProperty(value = "保费")
private BigDecimal totalInsuranceFee;
// 总重量
@ApiModelProperty(value = "总重量")
private BigDecimal totalWeight;
}

12
hiver-core/src/main/resources/mapper/LogisticsOrderMapper.xml

@ -43,6 +43,7 @@
<result column="order_status" jdbcType="VARCHAR" property="orderStatus" />
<result column="shipper_id" jdbcType="VARCHAR" property="shipperId" />
<result column="receiver_id" jdbcType="VARCHAR" property="receiverId" />
<result column="weight_history" jdbcType="VARCHAR" property="weightHistory" />
</resultMap>
<sql id="Base_Column_List">
@ -51,7 +52,7 @@
go_station_id, go_station_name, arrival_station_id, arrival_station_name, weight, count, freight, premium,
transit_fee, tips, method_of_settlement, cost, all_cost, order_number, object_name, remark, receiving_user_id,
receiving_user_name,image_path, payment_for_goods, transfer_addition,order_status,
shipper_id,receiver_id
shipper_id,receiver_id,weight_history
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
@ -72,7 +73,7 @@
shipper_name, shipper_mobile, shipper_address, receiver_name, receiver_mobile, receiver_address,
go_station_id, go_station_name, arrival_station_id, arrival_station_name, weight, count, freight, premium,
transit_fee, tips, method_of_settlement, cost, all_cost, order_number, object_name, remark, receiving_user_id, receiving_user_name,
image_path, payment_for_goods, transfer_addition,order_status,shipper_id,receiver_id)
image_path, payment_for_goods, transfer_addition,order_status,shipper_id,receiver_id,weight_history)
values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createByName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP},
#{companyId,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR}, #{circuitId,jdbcType=VARCHAR}, #{circuitName,jdbcType=VARCHAR},
@ -83,7 +84,7 @@
#{transitFee,jdbcType=DECIMAL}, #{tips,jdbcType=DECIMAL}, #{methodOfSettlement,jdbcType=VARCHAR}, #{cost,jdbcType=DECIMAL},
#{allCost,jdbcType=DECIMAL}, #{orderNumber,jdbcType=VARCHAR}, #{objectName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
#{receivingUserId,jdbcType=VARCHAR}, #{receivingUserName,jdbcType=VARCHAR},#{imagePath,jdbcType=VARCHAR}, #{paymentForGoods,jdbcType=VARCHAR},
#{transferAddition,jdbcType=VARCHAR},#{orderStatus,jdbcType=VARCHAR},#{shipperId,jdbcType=VARCHAR},#{receiverId,jdbcType=VARCHAR})
#{transferAddition,jdbcType=VARCHAR},#{orderStatus,jdbcType=VARCHAR},#{shipperId,jdbcType=VARCHAR},#{receiverId,jdbcType=VARCHAR},#{weightHistory,jdbcType=VARCHAR})
</insert>
<!--管理商品分页列表-->
@ -105,7 +106,7 @@
t.shipper_name, t.shipper_mobile, t.shipper_address, t.receiver_name, t.receiver_mobile, t.receiver_address,
t.go_station_id, t.go_station_name, t.arrival_station_id, t.arrival_station_name, t.weight, t.count, t.freight, t.premium,
t.transit_fee, t.tips, t.method_of_settlement, t.cost, t.all_cost, t.order_number, t.object_name, t.remark, t.receiving_user_id,
t.receiving_user_name,t.image_path, t.payment_for_goods, t.transfer_addition,t.order_status,t.shipper_id,t.receiver_id,
t.receiving_user_name,t.image_path, t.payment_for_goods, t.transfer_addition,t.order_status,t.shipper_id,t.receiver_id,t.weight_history,
COALESCE(occ.change_count, 0) AS change_count
from t_logistics_order t
LEFT JOIN
@ -215,7 +216,8 @@
SUM(t.all_cost) AS total_freight,
COUNT(*) AS total_order,
SUM(t.tips) AS total_tips,
SUM(t.premium) AS total_insurance_fee
SUM(t.premium) AS total_insurance_fee,
SUM(t.weight) AS total_weight
FROM
t_logistics_order t
WHERE

9
hiver-core/src/main/resources/mapper/LogisticsStationMapper.xml

@ -169,9 +169,16 @@
select
t.id, t.create_by,t.create_time,t.del_flag,t.update_by,t.update_time,t.circuit_id,t.station_name,t.freight_rules,t.landing_fee_rules,t.delivery_fee_rules
from t_logistics_station t
where circuit_id in (
<where>
and circuit_id in (
select circuit_id from t_logistics_company_route t where company_id = #{queryParams.companyId}
)
<if test='queryParams.stationName!=null and queryParams.stationName.trim() neq ""'>
AND (t.station_name LIKE CONCAT( '%', #{queryParams.stationName}, '%' )
OR to_pinyin ( t.station_name ) LIKE CONCAT( '%', to_pinyin ( #{queryParams.stationName} ), '%' )
OR to_initial_pinyin ( t.station_name ) LIKE CONCAT( '%', to_initial_pinyin (#{queryParams.stationName}), '%' ))
</if>
</where>
ORDER BY
t.create_time desc
</select>

Loading…
Cancel
Save