Browse Source

物流优化

dev
wangfukang 2 years ago
parent
commit
4464dc62e8
  1. 16
      hiver-admin/test-output/test-report.html
  2. 15
      hiver-core/src/main/java/cc/hiver/core/common/utils/SecurityUtil.java
  3. 7
      hiver-core/src/main/java/cc/hiver/core/entity/LogiticsCompany.java
  4. 11
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/LogisticsAddressBookService.java
  5. 35
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java
  6. 3
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java
  7. 8
      hiver-core/src/main/java/cc/hiver/core/logisticscompanyroute/service/impl/LogisticsCompanyRouteServiceImpl.java
  8. 6
      hiver-core/src/main/java/cc/hiver/core/logisticscompanyroute/vo/LogisticsCompanyRouteQueryVo.java
  9. 19
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/controller/LogisticsOrderController.java
  10. 8
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/entity/LogisticsOrder.java
  11. 35
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/service/impl/LogisticsOrderServiceImpl.java
  12. 9
      hiver-core/src/main/java/cc/hiver/core/logisticsstation/mapper/LogisticsStationMapper.java
  13. 9
      hiver-core/src/main/java/cc/hiver/core/logisticsstation/service/LogisticsStationService.java
  14. 12
      hiver-core/src/main/java/cc/hiver/core/logisticsstation/service/impl/LogisticsStationServiceImpl.java
  15. 3
      hiver-core/src/main/resources/mapper/LogisticsAddressBookMapper.xml
  16. 8
      hiver-core/src/main/resources/mapper/LogisticsCompanyRouteMapper.xml
  17. 4
      hiver-core/src/main/resources/mapper/LogisticsOrderMapper.xml
  18. 15
      hiver-core/src/main/resources/mapper/LogisticsStationMapper.xml
  19. 16
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/LcomAuthController.java
  20. 17
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java
  21. 4
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/vo/LogisticsOrderOfAiVo.java

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

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

15
hiver-core/src/main/java/cc/hiver/core/common/utils/SecurityUtil.java

@ -139,7 +139,9 @@ public class SecurityUtil {
// 覆盖物流公司id为当前登录的物流公司员工id // 覆盖物流公司id为当前登录的物流公司员工id
logiticsCompany.setId(logisticsUser.getId()); logiticsCompany.setId(logisticsUser.getId());
logiticsCompany.setUsername(logisticsUser.getMobile()); logiticsCompany.setUsername(logisticsUser.getMobile());
logiticsCompany.setContacts(logisticsUser.getNickName());
logiticsCompany.setPassword(logisticsUser.getPassword()); logiticsCompany.setPassword(logisticsUser.getPassword());
logiticsCompany.setCompanyId(logisticsUser.getCompanyId());
} }
} }
// 缓存 // 缓存
@ -237,10 +239,20 @@ public class SecurityUtil {
final Boolean isValid = new BCryptPasswordEncoder().matches(password, logisticsUser.getPassword()); final Boolean isValid = new BCryptPasswordEncoder().matches(password, logisticsUser.getPassword());
if (isValid) { if (isValid) {
final LogiticsCompany logiticsCompany = logiticsCompanyDao.getById(logisticsUser.getCompanyId()); final LogiticsCompany logiticsCompany = logiticsCompanyDao.getById(logisticsUser.getCompanyId());
// 将员工的信息封装至公司信息中
logiticsCompany.setId(logisticsUser.getId());
logiticsCompany.setPassword(logisticsUser.getPassword());
logiticsCompany.setUsername(logisticsUser.getMobile());
logiticsCompany.setCompanyId(logisticsUser.getCompanyId());
logiticsCompanyList.add(logiticsCompany); logiticsCompanyList.add(logiticsCompany);
return logiticsCompanyList; return logiticsCompanyList;
} }
} }
}else{
// 循环将id的值放在companyId上
for (LogiticsCompany logiticsCompany : logiticsCompanyList) {
logiticsCompany.setCompanyId(logiticsCompany.getId());
}
} }
// //
// 校验密码,一个老板有多个店铺的时候,密码一定是一样的,所以这里校验其中一个就行 // 校验密码,一个老板有多个店铺的时候,密码一定是一样的,所以这里校验其中一个就行
@ -678,11 +690,14 @@ public class SecurityUtil {
if(logisticsUser == null){ if(logisticsUser == null){
return null; return null;
}else{ }else{
logiticsCompany = logiticsCompanyDao.getById(logisticsUser.getCompanyId());
// 覆盖物流公司id为当前登录的物流公司员工id // 覆盖物流公司id为当前登录的物流公司员工id
logiticsCompany.setId(logisticsUser.getId()); logiticsCompany.setId(logisticsUser.getId());
logiticsCompany.setContacts(logisticsUser.getNickName()); logiticsCompany.setContacts(logisticsUser.getNickName());
logiticsCompany.setUsername(logisticsUser.getMobile()); logiticsCompany.setUsername(logisticsUser.getMobile());
logiticsCompany.setPassword(logisticsUser.getPassword()); logiticsCompany.setPassword(logisticsUser.getPassword());
logiticsCompany.setCompanyId(logisticsUser.getCompanyId());
} }
} }
Boolean saved = false; Boolean saved = false;

7
hiver-core/src/main/java/cc/hiver/core/entity/LogiticsCompany.java

@ -16,6 +16,7 @@ limitations under the License.
package cc.hiver.core.entity; package cc.hiver.core.entity;
import cc.hiver.core.base.HiverBaseEntity; import cc.hiver.core.base.HiverBaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@ -25,6 +26,7 @@ import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Transient;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
@ -105,4 +107,9 @@ public class LogiticsCompany extends HiverBaseEntity {
@ApiModelProperty(value = "是否支持上门取货:0:否;1:是") @ApiModelProperty(value = "是否支持上门取货:0:否;1:是")
private Integer canToDoor = 0; private Integer canToDoor = 0;
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "物流公司id")
private String companyId;
} }

11
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/LogisticsAddressBookService.java

@ -7,6 +7,8 @@ import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
public interface LogisticsAddressBookService extends IService<LogisticsAddressBook> { public interface LogisticsAddressBookService extends IService<LogisticsAddressBook> {
@ -23,4 +25,13 @@ public interface LogisticsAddressBookService extends IService<LogisticsAddressBo
* @return JSONObject * @return JSONObject
*/ */
JSONObject getLogisticsAddressBookList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo); JSONObject getLogisticsAddressBookList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo);
/**
* 获取订单中收货人及发货人信息
* @author 王富康
* @date 2024/10/15
* @param logisticsOrder
* @return Map<LogisticsAddressBook>
*/
Map<String, LogisticsAddressBook> getByOrder(LogisticsOrder logisticsOrder);
} }

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

@ -16,7 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @ClassNameLogisticsAddressBookServiceImpl * @ClassNameLogisticsAddressBookServiceImpl
@ -69,8 +71,6 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
shipperAddressBook.setMobile(logisticsOrder.getShipperMobile()); shipperAddressBook.setMobile(logisticsOrder.getShipperMobile());
// 设置收发货人名称,从物流订单的发货人名称中获取 // 设置收发货人名称,从物流订单的发货人名称中获取
shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName()); shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
// 设置创建人
shipperAddressBook.setCreateBy(logisticsOrder.getCreateBy());
list.add(shipperAddressBook); list.add(shipperAddressBook);
} }
@ -98,8 +98,6 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
reciverAddressBook.setCreateBy(logisticsOrder.getCreateBy()); reciverAddressBook.setCreateBy(logisticsOrder.getCreateBy());
// 设置联系电话,从物流订单的发货人手机信息中获取 // 设置联系电话,从物流订单的发货人手机信息中获取
reciverAddressBook.setMobile(logisticsOrder.getReceiverMobile()); reciverAddressBook.setMobile(logisticsOrder.getReceiverMobile());
// 设置创建人
reciverAddressBook.setCreateBy(logisticsOrder.getCreateBy());
list.add(reciverAddressBook); list.add(reciverAddressBook);
} }
// 调用save方法保存地址簿信息,返回保存结果 // 调用save方法保存地址簿信息,返回保存结果
@ -148,4 +146,33 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
return jsonObject; return jsonObject;
} }
@Override
public Map<String, LogisticsAddressBook> getByOrder(LogisticsOrder logisticsOrder) {
final Map<String, LogisticsAddressBook> logisticsAddressBookMap = new HashMap<>();
// 根据名称、电话、地址查询,正常这里是能查询到的。
// 发货人
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 LogisticsAddressBook shipperLogisticsAddressBook = getBaseMapper().selectOne(stuQuery);
if(shipperLogisticsAddressBook != null ){
logisticsAddressBookMap.put("shipperLogisticsAddressBook",shipperLogisticsAddressBook);
}
// 收货人
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 LogisticsAddressBook receiverLogisticsAddressBook = getBaseMapper().selectOne(stuQuery2);
if(receiverLogisticsAddressBook != null ){
logisticsAddressBookMap.put("receiverLogisticsAddressBook",receiverLogisticsAddressBook);
}
return logisticsAddressBookMap;
}
} }

3
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java

@ -24,5 +24,8 @@ public class LogisticsAddressBookQueryVo extends HiverBasePageQuery {
@ApiModelProperty(value = "地址类型 1发货地址信息 2收货地址信息") @ApiModelProperty(value = "地址类型 1发货地址信息 2收货地址信息")
private Integer addressType; private Integer addressType;
@ApiModelProperty(value = "物流公司id")
private String companyId;
private String keyWord; private String keyWord;
} }

8
hiver-core/src/main/java/cc/hiver/core/logisticscompanyroute/service/impl/LogisticsCompanyRouteServiceImpl.java

@ -4,9 +4,11 @@ import cc.hiver.core.logisticscompanyroute.entity.LogisticsCompanyRoute;
import cc.hiver.core.logisticscompanyroute.mapper.LogisticsCompanyRouteMapper; import cc.hiver.core.logisticscompanyroute.mapper.LogisticsCompanyRouteMapper;
import cc.hiver.core.logisticscompanyroute.service.LogisticsCompanyRouteService; import cc.hiver.core.logisticscompanyroute.service.LogisticsCompanyRouteService;
import cc.hiver.core.logisticscompanyroute.vo.LogisticsCompanyRouteQueryVo; import cc.hiver.core.logisticscompanyroute.vo.LogisticsCompanyRouteQueryVo;
import cc.hiver.core.utils.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -27,12 +29,18 @@ public class LogisticsCompanyRouteServiceImpl extends ServiceImpl<LogisticsCompa
*/ */
@Override @Override
public IPage<LogisticsCompanyRoute> getLogisticsCompanyRoutePageList(LogisticsCompanyRouteQueryVo logisticsCompanyRouteQueryVo) { public IPage<LogisticsCompanyRoute> getLogisticsCompanyRoutePageList(LogisticsCompanyRouteQueryVo logisticsCompanyRouteQueryVo) {
if(StringUtils.isNotEmpty(logisticsCompanyRouteQueryVo.getEndDate())){
logisticsCompanyRouteQueryVo.setEndDate(DateUtil.addDay(logisticsCompanyRouteQueryVo.getEndDate(), 1));
}
final Page<LogisticsCompanyRoute> page = new Page<>(logisticsCompanyRouteQueryVo.getPageNum(), logisticsCompanyRouteQueryVo.getPageSize()); final Page<LogisticsCompanyRoute> page = new Page<>(logisticsCompanyRouteQueryVo.getPageNum(), logisticsCompanyRouteQueryVo.getPageSize());
return logisticsCompanyRouteMapper.getLogisticsCompanyRoutePageList(page, logisticsCompanyRouteQueryVo); return logisticsCompanyRouteMapper.getLogisticsCompanyRoutePageList(page, logisticsCompanyRouteQueryVo);
} }
@Override @Override
public List<LogisticsCompanyRoute> getLogisticsCompanyRouteListByCompanyId(LogisticsCompanyRouteQueryVo logisticsCompanyRouteQueryVo) { public List<LogisticsCompanyRoute> getLogisticsCompanyRouteListByCompanyId(LogisticsCompanyRouteQueryVo logisticsCompanyRouteQueryVo) {
if(StringUtils.isNotEmpty(logisticsCompanyRouteQueryVo.getEndDate())){
logisticsCompanyRouteQueryVo.setEndDate(DateUtil.addDay(logisticsCompanyRouteQueryVo.getEndDate(), 1));
}
return logisticsCompanyRouteMapper.getLogisticsCompanyRouteListByCompanyId(logisticsCompanyRouteQueryVo); return logisticsCompanyRouteMapper.getLogisticsCompanyRouteListByCompanyId(logisticsCompanyRouteQueryVo);
} }
} }

6
hiver-core/src/main/java/cc/hiver/core/logisticscompanyroute/vo/LogisticsCompanyRouteQueryVo.java

@ -26,4 +26,10 @@ public class LogisticsCompanyRouteQueryVo extends HiverBasePageQuery {
@ApiModelProperty(value = "线路名称") @ApiModelProperty(value = "线路名称")
private String circuitName; private String circuitName;
@ApiModelProperty(value = "开始时间")
private String startDate;
@ApiModelProperty(value = "结束时间")
private String endDate;
} }

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

@ -5,6 +5,7 @@ import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.common.vo.Result; import cc.hiver.core.common.vo.Result;
import cc.hiver.core.entity.LogiticsCompany; import cc.hiver.core.entity.LogiticsCompany;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService; import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder; import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog; import cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog;
@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 物流订单控制器 * 物流订单控制器
@ -66,13 +68,22 @@ public class LogisticsOrderController {
final LogiticsCompany logiticsCompany = securityUtil.getCurrCompany(); final LogiticsCompany logiticsCompany = securityUtil.getCurrCompany();
logisticsOrder.setCreateBy(logiticsCompany.getId()); logisticsOrder.setCreateBy(logiticsCompany.getId());
logisticsOrder.setCreateByName(logiticsCompany.getContacts()); logisticsOrder.setCreateByName(logiticsCompany.getContacts());
final boolean b = logisticsOrderService.saveOrUpdate(logisticsOrder); // 20241015 保存收发货人地址簿,先保存地址簿,方便后边获取收发货人id
boolean b = logisticsAddressBookService.saveLogisticsAddressBook(logisticsOrder);
if(b){ if(b){
//保存收发货人地址簿 // 获取收货人id
logisticsAddressBookService.saveLogisticsAddressBook(logisticsOrder); 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.success("保存成功!"); return ResultUtil.success("保存成功!");
}else{ }else{
return ResultUtil.error("保存失败!"); return ResultUtil.success("保存失败!");
} }
} }

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

@ -82,6 +82,10 @@ public class LogisticsOrder{
@ApiModelProperty(value = "线路名称") @ApiModelProperty(value = "线路名称")
private String circuitName; private String circuitName;
@CompareField(name = "发货人id")
@ApiModelProperty(value = "发货人id")
private String shipperId;
@CompareField(name = "发货人名称") @CompareField(name = "发货人名称")
@ApiModelProperty(value = "发货人名称") @ApiModelProperty(value = "发货人名称")
private String shipperName; private String shipperName;
@ -94,6 +98,10 @@ public class LogisticsOrder{
@ApiModelProperty(value = "发货地址") @ApiModelProperty(value = "发货地址")
private String shipperAddress; private String shipperAddress;
@CompareField(name = "收货人id")
@ApiModelProperty(value = "收货人id")
private String receiverId;
@CompareField(name = "收货人名称") @CompareField(name = "收货人名称")
@ApiModelProperty(value = "收货人名称") @ApiModelProperty(value = "收货人名称")
private String receiverName; private String receiverName;

35
hiver-core/src/main/java/cc/hiver/core/logisticsorder/service/impl/LogisticsOrderServiceImpl.java

@ -55,7 +55,7 @@ public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper,
@Override @Override
public LogisticsOrder getLogisticsOrderByCompanyId(LogisticsOrder logisticsOrder) { public LogisticsOrder getLogisticsOrderByCompanyId(LogisticsOrder logisticsOrder) {
LambdaQueryWrapper<LogisticsOrder> stuQuery = new LambdaQueryWrapper<>(); final LambdaQueryWrapper<LogisticsOrder> stuQuery = new LambdaQueryWrapper<>();
stuQuery.eq(LogisticsOrder::getCompanyId, logisticsOrder.getCompanyId()) stuQuery.eq(LogisticsOrder::getCompanyId, logisticsOrder.getCompanyId())
.orderByDesc(LogisticsOrder::getCreateTime) .orderByDesc(LogisticsOrder::getCreateTime)
.between(LogisticsOrder::getCreateTime, DateUtil.COMMON.getDateText(new Date()) + " 00:00:00", DateUtil.COMMON.getDateText(new Date()) + " 23:59:59") .between(LogisticsOrder::getCreateTime, DateUtil.COMMON.getDateText(new Date()) + " 00:00:00", DateUtil.COMMON.getDateText(new Date()) + " 23:59:59")
@ -73,21 +73,22 @@ public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper,
/** /**
* 查询物流订单修改记录 * 查询物流订单修改记录
*
* @param orderId * @param orderId
* @return int * @return int
*/ */
@Override @Override
public List<LogisticsOrderChangeLogVo> getLogisticsOrderChangeLog(String orderId) { public List<LogisticsOrderChangeLogVo> getLogisticsOrderChangeLog(String orderId) {
List<LogisticsOrderChangeLog> list = logisticsOrderMapper.getLogisticsOrderChangeLog(orderId); final List<LogisticsOrderChangeLog> list = logisticsOrderMapper.getLogisticsOrderChangeLog(orderId);
List<LogisticsOrderChangeLogVo> logisticsOrderChangeLogVoList = new ArrayList<>(); final List<LogisticsOrderChangeLogVo> logisticsOrderChangeLogVoList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(list)) { if (CollectionUtils.isNotEmpty(list)) {
Gson gson = new Gson(); final Gson gson = new Gson();
for (LogisticsOrderChangeLog logisticsOrderChangeLog : list) { for (LogisticsOrderChangeLog logisticsOrderChangeLog : list) {
LogisticsOrderChangeLogVo logisticsOrderChangeLogVo = new LogisticsOrderChangeLogVo(); final LogisticsOrderChangeLogVo logisticsOrderChangeLogVo = new LogisticsOrderChangeLogVo();
LogisticsOrder oldData = gson.fromJson(logisticsOrderChangeLog.getOldData(), LogisticsOrder.class); final LogisticsOrder oldData = gson.fromJson(logisticsOrderChangeLog.getOldData(), LogisticsOrder.class);
LogisticsOrder newData = gson.fromJson(logisticsOrderChangeLog.getNewData(), LogisticsOrder.class); final LogisticsOrder newData = gson.fromJson(logisticsOrderChangeLog.getNewData(), LogisticsOrder.class);
CompareObjectUtils<LogisticsOrder> compareObjectUtils = new CompareObjectUtils<>(); final CompareObjectUtils<LogisticsOrder> compareObjectUtils = new CompareObjectUtils<>();
List<DiffAttr> diffAttrs = compareObjectUtils.CompareObjWithAnnotation(oldData, newData); final List<DiffAttr> diffAttrs = compareObjectUtils.CompareObjWithAnnotation(oldData, newData);
logisticsOrderChangeLogVo.setOrderId(oldData.getId()); logisticsOrderChangeLogVo.setOrderId(oldData.getId());
logisticsOrderChangeLogVo.setCreateBy(logisticsOrderChangeLog.getCreateBy()); logisticsOrderChangeLogVo.setCreateBy(logisticsOrderChangeLog.getCreateBy());
logisticsOrderChangeLogVo.setCreateByName(logisticsOrderChangeLog.getCreateByName()); logisticsOrderChangeLogVo.setCreateByName(logisticsOrderChangeLog.getCreateByName());
@ -101,20 +102,26 @@ public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper,
/** /**
* 物流订单数据统计 * 物流订单数据统计
* @author 王富康 *
* @date 2024/9/7
* @param logisticsOrderQueryVo * @param logisticsOrderQueryVo
* @return StatisticsVo * @return StatisticsVo
* @author 王富康
* @date 2024/9/7
*/ */
@Override @Override
public StatisticsVo getLogisticsOrderStatistics(LogisticsOrderQueryVo logisticsOrderQueryVo) { public StatisticsVo getLogisticsOrderStatistics(LogisticsOrderQueryVo logisticsOrderQueryVo) {
// 如果结束时间不为空,加1天
if (StringUtils.isNotEmpty(logisticsOrderQueryVo.getEndDate())) {
logisticsOrderQueryVo.setEndDate(DateUtil.addDay(logisticsOrderQueryVo.getEndDate(), 1));
}
// 从订单表获取客户总运费、运单数、小费、保费 // 从订单表获取客户总运费、运单数、小费、保费
StatisticsVo statisticsVo = logisticsOrderMapper.getLogisticsOrderStatistics(logisticsOrderQueryVo); final StatisticsVo statisticsVo = logisticsOrderMapper.getLogisticsOrderStatistics(logisticsOrderQueryVo);
// 从订单表获取客户数 // 从订单表获取客户数
int customerCount = logisticsOrderMapper.getCustomerCount(logisticsOrderQueryVo); final int customerCount = logisticsOrderMapper.getCustomerCount(logisticsOrderQueryVo);
statisticsVo.setTotalCustomer(customerCount); statisticsVo.setTotalCustomer(customerCount);
// 从装车记录获取运输费、装车费 // 从装车记录获取运输费、装车费
StatisticsVo carStatisticsVo = logisticsEntruckingLogService.getCarStatistics(logisticsOrderQueryVo); final StatisticsVo carStatisticsVo = logisticsEntruckingLogService.getCarStatistics(logisticsOrderQueryVo);
statisticsVo.setTotalTransportationFee(carStatisticsVo.getTotalTransportationFee()); statisticsVo.setTotalTransportationFee(carStatisticsVo.getTotalTransportationFee());
statisticsVo.setTotalLoadingFee(carStatisticsVo.getTotalLoadingFee()); statisticsVo.setTotalLoadingFee(carStatisticsVo.getTotalLoadingFee());
return statisticsVo; return statisticsVo;

9
hiver-core/src/main/java/cc/hiver/core/logisticsstation/mapper/LogisticsStationMapper.java

@ -31,4 +31,13 @@ public interface LogisticsStationMapper extends BaseMapper<LogisticsStation> {
* @date 2024/8/28 * @date 2024/8/28
*/ */
List<LogisticsStation> getLogisticsStationListByCompanyId(@Param("queryParams") LogisticsStationQueryVo logisticsRouteQueryVo); List<LogisticsStation> getLogisticsStationListByCompanyId(@Param("queryParams") LogisticsStationQueryVo logisticsRouteQueryVo);
/**
* 根据站点名称匹配到达站支持拼音
* @author 王富康
* @date 2024/10/15
* @param logisticsRouteQueryVo
* @return List<LogisticsStation>
*/
List<LogisticsStation> getLogisticsStationListBystationName(@Param("queryParams") LogisticsStationQueryVo logisticsRouteQueryVo);
} }

9
hiver-core/src/main/java/cc/hiver/core/logisticsstation/service/LogisticsStationService.java

@ -28,4 +28,13 @@ public interface LogisticsStationService extends IService<LogisticsStation> {
* @date 2024/8/28 * @date 2024/8/28
*/ */
List<LogisticsStation> getLogisticsStationListByCompanyId(LogisticsStationQueryVo logisticsRouteQueryVo); List<LogisticsStation> getLogisticsStationListByCompanyId(LogisticsStationQueryVo logisticsRouteQueryVo);
/**
* 根据站点名称匹配到达站支持拼音
* @author 王富康
* @date 2024/10/15
* @param logisticsRouteQueryVo
* @return List<LogisticsStation>
*/
List<LogisticsStation> getLogisticsStationListBystationName(LogisticsStationQueryVo logisticsRouteQueryVo);
} }

12
hiver-core/src/main/java/cc/hiver/core/logisticsstation/service/impl/LogisticsStationServiceImpl.java

@ -44,4 +44,16 @@ public class LogisticsStationServiceImpl extends ServiceImpl<LogisticsStationMap
public List<LogisticsStation> getLogisticsStationListByCompanyId(LogisticsStationQueryVo logisticsRouteQueryVo) { public List<LogisticsStation> getLogisticsStationListByCompanyId(LogisticsStationQueryVo logisticsRouteQueryVo) {
return logisticsStationMapper.getLogisticsStationListByCompanyId(logisticsRouteQueryVo); return logisticsStationMapper.getLogisticsStationListByCompanyId(logisticsRouteQueryVo);
} }
/**
* 根据站点名称匹配到达站支持拼音
* @author 王富康
* @date 2024/10/15
* @param logisticsRouteQueryVo
* @return List<LogisticsStation>
*/
@Override
public List<LogisticsStation> getLogisticsStationListBystationName(LogisticsStationQueryVo logisticsRouteQueryVo) {
return logisticsStationMapper.getLogisticsStationListBystationName(logisticsRouteQueryVo);
}
} }

3
hiver-core/src/main/resources/mapper/LogisticsAddressBookMapper.xml

@ -162,7 +162,8 @@
t.shipper_or_receiver_name, t.address_type, t.mobile, t.address_info, t.company_id, t.company_name t.shipper_or_receiver_name, t.address_type, t.mobile, t.address_info, t.company_id, t.company_name
from t_logistics_address_book t from t_logistics_address_book t
<where> <where>
t.address_type = #{queryParams.addressType} t.company_id = #{queryParams.companyId}
and t.address_type = #{queryParams.addressType}
AND ( AND (
<if test='queryParams.shipperOrReceiverName!=null and queryParams.shipperOrReceiverName.trim() neq ""'> <if test='queryParams.shipperOrReceiverName!=null and queryParams.shipperOrReceiverName.trim() neq ""'>
t.shipper_or_receiver_name LIKE CONCAT( '%', #{queryParams.shipperOrReceiverName}, '%' ) t.shipper_or_receiver_name LIKE CONCAT( '%', #{queryParams.shipperOrReceiverName}, '%' )

8
hiver-core/src/main/resources/mapper/LogisticsCompanyRouteMapper.xml

@ -156,6 +156,10 @@
<if test='queryParams.circuitName!=null and queryParams.circuitName.trim() neq ""'> <if test='queryParams.circuitName!=null and queryParams.circuitName.trim() neq ""'>
AND t.circuit_name like concat('%',#{queryParams.circuitName},'%') AND t.circuit_name like concat('%',#{queryParams.circuitName},'%')
</if> </if>
<!--开始时间、结束时间-->
<if test="queryParams.startDate!=null and queryParams.endDate!=null">
AND t.create_time BETWEEN #{queryParams.startDate} AND #{queryParams.endDate}
</if>
</where> </where>
ORDER BY ORDER BY
t.create_time desc t.create_time desc
@ -180,6 +184,10 @@
<if test='queryParams.circuitName!=null and queryParams.circuitName.trim() neq ""'> <if test='queryParams.circuitName!=null and queryParams.circuitName.trim() neq ""'>
AND t.circuit_name like concat('%',#{queryParams.circuitName},'%') AND t.circuit_name like concat('%',#{queryParams.circuitName},'%')
</if> </if>
<!--开始时间、结束时间-->
<if test="queryParams.startDate!=null and queryParams.endDate!=null">
AND t.create_time BETWEEN #{queryParams.startDate} AND #{queryParams.endDate}
</if>
</where> </where>
ORDER BY ORDER BY
t.create_time desc t.create_time desc

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

@ -191,6 +191,10 @@
<if test='logisticsOrderQueryVo.arrivalStationId!=null and logisticsOrderQueryVo.arrivalStationId.trim() neq ""'> <if test='logisticsOrderQueryVo.arrivalStationId!=null and logisticsOrderQueryVo.arrivalStationId.trim() neq ""'>
AND t.arrival_station_id = #{logisticsOrderQueryVo.arrivalStationId} AND t.arrival_station_id = #{logisticsOrderQueryVo.arrivalStationId}
</if> </if>
<!--开始时间、结束时间-->
<if test="logisticsOrderQueryVo.startDate!=null and logisticsOrderQueryVo.endDate!=null">
AND t.create_time BETWEEN #{logisticsOrderQueryVo.startDate} AND #{logisticsOrderQueryVo.endDate}
</if>
</select> </select>
<!--获取客户数--> <!--获取客户数-->

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

@ -175,4 +175,19 @@
ORDER BY ORDER BY
t.create_time desc t.create_time desc
</select> </select>
<select id="getLogisticsStationListBystationName" resultMap="BaseResultMap" parameterType="cc.hiver.core.logisticsstation.vo.LogisticsStationQueryVo">
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>
<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( '%', #{queryParams.stationName}, '%' ))
</if>
</where>
ORDER BY
t.create_time desc
</select>
</mapper> </mapper>

16
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/LcomAuthController.java

@ -24,6 +24,8 @@ import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.common.vo.Result; import cc.hiver.core.common.vo.Result;
import cc.hiver.core.config.properties.HiverTokenProperties; import cc.hiver.core.config.properties.HiverTokenProperties;
import cc.hiver.core.entity.LogiticsCompany; import cc.hiver.core.entity.LogiticsCompany;
import cc.hiver.core.logisticsuser.entity.LogisticsUser;
import cc.hiver.core.logisticsuser.service.LogisticsUserService;
import cc.hiver.core.service.LogiticsCompanyService; import cc.hiver.core.service.LogiticsCompanyService;
import cc.hiver.core.vo.LcomDetailVO; import cc.hiver.core.vo.LcomDetailVO;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
@ -59,6 +61,9 @@ public class LcomAuthController {
@Autowired @Autowired
private LogiticsCompanyService logiticsCompanyService; private LogiticsCompanyService logiticsCompanyService;
@Autowired
private LogisticsUserService logisticsUserService;
public static final String LOGIN_FAIL_FLAG = "COMPANY_LOGIN_FAIL_FLAG:"; public static final String LOGIN_FAIL_FLAG = "COMPANY_LOGIN_FAIL_FLAG:";
public static final String LOGIN_TIME_LIMIT = "COMPANY_LOGIN_TIME_LIMIT:"; public static final String LOGIN_TIME_LIMIT = "COMPANY_LOGIN_TIME_LIMIT:";
@ -164,7 +169,16 @@ public class LcomAuthController {
@RateLimiter(name = "sendLoginSms", ipLimit = true) @RateLimiter(name = "sendLoginSms", ipLimit = true)
public Result chooseCompany(@RequestParam String companyId,@RequestParam String username) { public Result chooseCompany(@RequestParam String companyId,@RequestParam String username) {
final boolean saveLogin = true; final boolean saveLogin = true;
final LogiticsCompany logiticsCompany = logiticsCompanyService.findById(companyId); LogiticsCompany logiticsCompany = logiticsCompanyService.findById(companyId);
if(logiticsCompany == null ){
// 可能是员工登录,这里反查公司信息
final LogisticsUser logisticsUser = logisticsUserService.getById(companyId);
logiticsCompany = logiticsCompanyService.findById(logisticsUser.getCompanyId());
}else{
logiticsCompany.setCompanyId(logiticsCompany.getId());
}
// accessToken,是根据username去设置的,可能是员工的,也可能是公司的。
final String accessToken = securityUtil.getAppWLToken(logiticsCompany, saveLogin,username); final String accessToken = securityUtil.getAppWLToken(logiticsCompany, saveLogin,username);
final LcomDetailVO detailVO = new LcomDetailVO(); final LcomDetailVO detailVO = new LcomDetailVO();

17
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java

@ -2,10 +2,14 @@ package cc.hiver.mall.purchaseocr.service.impl;
import cc.hiver.core.common.utils.CommonUtil; import cc.hiver.core.common.utils.CommonUtil;
import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.entity.LogiticsCompany;
import cc.hiver.core.entity.User; import cc.hiver.core.entity.User;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook; import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService; import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo; import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.core.logisticsstation.entity.LogisticsStation;
import cc.hiver.core.logisticsstation.service.LogisticsStationService;
import cc.hiver.core.logisticsstation.vo.LogisticsStationQueryVo;
import cc.hiver.mall.common.constant.PurchaseConstant; import cc.hiver.mall.common.constant.PurchaseConstant;
import cc.hiver.mall.config.thread.AiPurchaseThread; import cc.hiver.mall.config.thread.AiPurchaseThread;
import cc.hiver.mall.config.thread.ThreadPoolConfiguration; import cc.hiver.mall.config.thread.ThreadPoolConfiguration;
@ -83,6 +87,9 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
@Autowired @Autowired
private LogisticsAddressBookService logisticsAddressBookService; private LogisticsAddressBookService logisticsAddressBookService;
@Autowired
private LogisticsStationService logisticsStationService;
@Override @Override
public JSONObject batchSave(PurchaseOciPictureAddVo purchaseOciPictureAddVo) { public JSONObject batchSave(PurchaseOciPictureAddVo purchaseOciPictureAddVo) {
@ -650,6 +657,8 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
logisticsAddressBookQueryVo.setAddressType(1); logisticsAddressBookQueryVo.setAddressType(1);
logisticsAddressBookQueryVo.setShipperOrReceiverName(shipperName); logisticsAddressBookQueryVo.setShipperOrReceiverName(shipperName);
logisticsAddressBookQueryVo.setMobile(shipperMobile); logisticsAddressBookQueryVo.setMobile(shipperMobile);
LogiticsCompany currCompany = securityUtil.getCurrCompany();
logisticsAddressBookQueryVo.setCompanyId(currCompany.getCompanyId());
final cn.hutool.json.JSONObject logisticsAddressBookList = logisticsAddressBookService.getLogisticsAddressBookList(logisticsAddressBookQueryVo); final cn.hutool.json.JSONObject logisticsAddressBookList = logisticsAddressBookService.getLogisticsAddressBookList(logisticsAddressBookQueryVo);
if ("1".equals(logisticsAddressBookList.get("flag"))) { if ("1".equals(logisticsAddressBookList.get("flag"))) {
final List<LogisticsAddressBook> data = (List<LogisticsAddressBook>) logisticsAddressBookList.get("data"); final List<LogisticsAddressBook> data = (List<LogisticsAddressBook>) logisticsAddressBookList.get("data");
@ -669,6 +678,14 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
} else { } else {
log.info(receiverList.get("msg").toString()); log.info(receiverList.get("msg").toString());
} }
// 到达站列表
if (StringUtils.isNotEmpty(arrivalStationName)) {
LogisticsStationQueryVo logisticsRouteQueryVo = new LogisticsStationQueryVo();
logisticsRouteQueryVo.setStationName(arrivalStationName);
List<LogisticsStation> logisticsStationListBystationName = logisticsStationService.getLogisticsStationListBystationName(logisticsRouteQueryVo);
logisticsOrderOfAiVo.setLogisticsStationList(logisticsStationListBystationName);
}
logisticsOrderOfAiVos.add(logisticsOrderOfAiVo); logisticsOrderOfAiVos.add(logisticsOrderOfAiVo);
} }
} catch (Exception e) { } catch (Exception e) {

4
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/vo/LogisticsOrderOfAiVo.java

@ -1,6 +1,7 @@
package cc.hiver.mall.purchaseocr.vo; package cc.hiver.mall.purchaseocr.vo;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook; import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsstation.entity.LogisticsStation;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -43,6 +44,9 @@ public class LogisticsOrderOfAiVo {
@ApiModelProperty(value = "到达站") @ApiModelProperty(value = "到达站")
private String arrivalStationName; private String arrivalStationName;
@ApiModelProperty(value = "到达站列表")
private List<LogisticsStation> logisticsStationList;
@ApiModelProperty(value = "物品") @ApiModelProperty(value = "物品")
private String objectName; private String objectName;
} }

Loading…
Cancel
Save