Browse Source

物流优化

dev
wangfukang 1 year ago
parent
commit
057590635f
  1. 16
      hiver-admin/test-output/test-report.html
  2. 9
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/controller/LogisticsAddressBookController.java
  3. 23
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java
  4. 69
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/controller/LogisticsOrderController.java
  5. 5
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/entity/LogisticsOrder.java
  6. 12
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/service/impl/LogisticsOrderServiceImpl.java
  7. 75
      hiver-core/src/main/java/cc/hiver/core/serviceimpl/LogiticsCompanyServiceImpl.java
  8. 5
      hiver-core/src/main/resources/mapper/LogisticsAddressBookMapper.xml
  9. 4
      hiver-core/src/main/resources/mapper/LogisticsEntruckingLogMapper.xml
  10. 21
      hiver-core/src/main/resources/mapper/LogisticsOrderMapper.xml
  11. 4
      hiver-core/src/main/resources/mapper/LogisticsStationMapper.xml
  12. 22
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/LogiticsCompanyController.java
  13. 4
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java
  14. 11
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/AliOcrUtil.java
  15. 2
      hiver-modules/hiver-mall/src/main/resources/mapper/CustomerCategoryMapper.xml

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">十一月 15, 2024 17:26:52</span></a> <a href="#"><span class="badge badge-primary">十一月 18, 2024 00:59:02</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>17:26:54 下</span> / <span>0.023 secs</span></p> <p class="text-sm"><span>00:59:03 上</span> / <span>0.024 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'>11.15.2024 17:26:54</span> <span class='badge badge-success'>11.18.2024 00:59:03</span>
<span class='badge badge-danger'>11.15.2024 17:26:54</span> <span class='badge badge-danger'>11.18.2024 00:59:03</span>
<span class='badge badge-default'>0.023 secs</span> <span class='badge badge-default'>0.024 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>17:26:54</td> <td>0:59:03</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>十一月 15, 2024 17:26:52</h3> <h3>十一月 18, 2024 00:59:02</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>十一月 15, 2024 17:26:54</h3> <h3>十一月 18, 2024 00:59:03</h3>
</div></div> </div></div>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

9
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/controller/LogisticsAddressBookController.java

@ -39,4 +39,13 @@ public class LogisticsAddressBookController {
final IPage<LogisticsAddressBook> result = logisticsAddressBookService.getLogisticsAddressBookPageList(logisticsAddressBookQueryVo); final IPage<LogisticsAddressBook> result = logisticsAddressBookService.getLogisticsAddressBookPageList(logisticsAddressBookQueryVo);
return new ResultUtil<IPage<LogisticsAddressBook>>().setData(result); return new ResultUtil<IPage<LogisticsAddressBook>>().setData(result);
} }
// 修改通讯录
@RequestMapping(value = "/updateLogisticsAddressBook", method = RequestMethod.POST)
@ApiOperation(value = "修改通讯录")
public Result<Boolean> updateLogisticsAddressBook(@RequestBody LogisticsAddressBook logisticsAddressBook) {
final boolean result = logisticsAddressBookService.updateById(logisticsAddressBook);
return new ResultUtil<Boolean>().setData(result);
}
} }

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

@ -45,6 +45,8 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
final List<LogisticsAddressBook> list = new ArrayList<>(); final List<LogisticsAddressBook> list = new ArrayList<>();
//根据名称、电话、地址查询看是不是存在,如果不存在则新建一条 //根据名称、电话、地址查询看是不是存在,如果不存在则新建一条
if(StringUtils.isEmpty(logisticsOrder.getShipperId())){
// 查询,然后判断新增
final LambdaQueryWrapper<LogisticsAddressBook> stuQuery = new LambdaQueryWrapper<>(); final LambdaQueryWrapper<LogisticsAddressBook> stuQuery = new LambdaQueryWrapper<>();
stuQuery.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getShipperName()) stuQuery.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getShipperName())
.eq(LogisticsAddressBook::getAddressType, 1) .eq(LogisticsAddressBook::getAddressType, 1)
@ -73,7 +75,14 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName()); shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
list.add(shipperAddressBook); list.add(shipperAddressBook);
} }
}else{
// 有id,查询,并更新名称
final LogisticsAddressBook oldLogisticsAddressBook = logisticsAddressBookMapper.selectById(logisticsOrder.getShipperId());
oldLogisticsAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
list.add(oldLogisticsAddressBook);
}
if(StringUtils.isEmpty(logisticsOrder.getReceiverId())){
final LambdaQueryWrapper<LogisticsAddressBook> stuQuery2 = new LambdaQueryWrapper<>(); final LambdaQueryWrapper<LogisticsAddressBook> stuQuery2 = new LambdaQueryWrapper<>();
stuQuery2.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getReceiverName()) stuQuery2.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getReceiverName())
.eq(LogisticsAddressBook::getAddressType, 2) .eq(LogisticsAddressBook::getAddressType, 2)
@ -81,7 +90,7 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getReceiverAddress()); .eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getReceiverAddress());
final Long count2 = getBaseMapper().selectCount(stuQuery2); final Long count2 = getBaseMapper().selectCount(stuQuery2);
if(count2 == 0) { if(count2 == 0 && StringUtils.isEmpty(logisticsOrder.getReceiverId())) {
// 创建收货人地址簿 // 创建收货人地址簿
final LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook(); final LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook();
// 设置收货人名称,从物流订单的收货人名称中获取 // 设置收货人名称,从物流订单的收货人名称中获取
@ -100,10 +109,20 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
reciverAddressBook.setMobile(logisticsOrder.getReceiverMobile()); reciverAddressBook.setMobile(logisticsOrder.getReceiverMobile());
list.add(reciverAddressBook); list.add(reciverAddressBook);
} }
}else{
// 有id,查询,并更新名称
final LogisticsAddressBook oldLogisticsAddressBook = logisticsAddressBookMapper.selectById(logisticsOrder.getReceiverId());
oldLogisticsAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
list.add(oldLogisticsAddressBook);
}
// 调用save方法保存地址簿信息,返回保存结果 // 调用save方法保存地址簿信息,返回保存结果
final Gson gson = new Gson(); final Gson gson = new Gson();
System.out.println(gson.toJson(list)); System.out.println(gson.toJson(list));
return saveBatch(list); if(list.isEmpty()){
return true;
}
return saveOrUpdateBatch(list);
} }
@Override @Override

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

@ -50,15 +50,15 @@ public class LogisticsOrderController {
@Autowired @Autowired
private SecurityUtil securityUtil; private SecurityUtil securityUtil;
@PostMapping(value = "/addLogisticsOrder") @PostMapping("/addLogisticsOrder")
@ApiOperation("新增物流订单") @ApiOperation("新增物流订单")
public Result addLogisticsOrder(@RequestBody LogisticsOrder logisticsOrder) { public Result addLogisticsOrder(@RequestBody LogisticsOrder logisticsOrder) {
//单号命名规则 物流公司首字母-yyyyMMdd-递增流水号 //单号命名规则 物流公司首字母-yyyyMMdd-递增流水号
String orderNumber = PinYinUtils.getFirstSpell(logisticsOrder.getCompanyName())+"-"+ DateUtil.COMPAT.getDateText(new Date())+"-"; String orderNumber = PinYinUtils.getFirstSpell(logisticsOrder.getCompanyName()) + '-' + DateUtil.COMPAT.getDateText(new Date()) + '-';
//查询一下这个物流公司,今天最后一条数据的单号是多少,如果没有,默认为1 //查询一下这个物流公司,今天最后一条数据的单号是多少,如果没有,默认为1
LogisticsOrder lastOrder = logisticsOrderService.getLogisticsOrderByCompanyId(logisticsOrder); final LogisticsOrder lastOrder = logisticsOrderService.getLogisticsOrderByCompanyId(logisticsOrder);
if (lastOrder != null) { if (lastOrder != null) {
int newNumber = Integer.parseInt(lastOrder.getOrderNumber().split("-")[2])+1; final int newNumber = Integer.parseInt(lastOrder.getOrderNumber().split("-")[2]) + 1;
orderNumber += newNumber; orderNumber += newNumber;
} else { } else {
orderNumber += 1; orderNumber += 1;
@ -69,10 +69,10 @@ public class LogisticsOrderController {
logisticsOrder.setCreateBy(logiticsCompany.getId()); logisticsOrder.setCreateBy(logiticsCompany.getId());
logisticsOrder.setCreateByName(logiticsCompany.getContacts()); logisticsOrder.setCreateByName(logiticsCompany.getContacts());
// 20241015 保存收发货人地址簿,先保存地址簿,方便后边获取收发货人id // 20241015 保存收发货人地址簿,先保存地址簿,方便后边获取收发货人id
boolean b = logisticsAddressBookService.saveLogisticsAddressBook(logisticsOrder); final boolean b = logisticsAddressBookService.saveLogisticsAddressBook(logisticsOrder);
if (b) { if (b) {
// 获取收货人id // 获取收货人id
Map<String, LogisticsAddressBook> logisticsAddressBook = logisticsAddressBookService.getByOrder(logisticsOrder); final Map<String, LogisticsAddressBook> logisticsAddressBook = logisticsAddressBookService.getByOrder(logisticsOrder);
if (logisticsAddressBook.containsKey("shipperLogisticsAddressBook")) { if (logisticsAddressBook.containsKey("shipperLogisticsAddressBook")) {
logisticsOrder.setShipperId(logisticsAddressBook.get("shipperLogisticsAddressBook").getId()); logisticsOrder.setShipperId(logisticsAddressBook.get("shipperLogisticsAddressBook").getId());
} }
@ -81,7 +81,7 @@ public class LogisticsOrderController {
logisticsOrder.setReceiverId(logisticsAddressBook.get("receiverLogisticsAddressBook").getId()); logisticsOrder.setReceiverId(logisticsAddressBook.get("receiverLogisticsAddressBook").getId());
} }
logisticsOrderService.saveOrUpdate(logisticsOrder); logisticsOrderService.saveOrUpdate(logisticsOrder);
return ResultUtil.success("保存成功!"); return ResultUtil.data(logisticsOrder);
} else { } else {
return ResultUtil.success("保存失败!"); return ResultUtil.success("保存失败!");
} }
@ -95,37 +95,56 @@ public class LogisticsOrderController {
* @author 王富康 * @author 王富康
* @date 2024/8/24 * @date 2024/8/24
*/ */
@PostMapping(value = "/updateLogisticsOrder") @PostMapping("/updateLogisticsOrder")
@ApiOperation("更新物流订单") @ApiOperation("更新物流订单")
public Result updateLogisticsOrder(@RequestBody LogisticsOrder logisticsOrder) { public Result updateLogisticsOrder(@RequestBody LogisticsOrder logisticsOrder) {
if (StringUtils.isEmpty(logisticsOrder.getId())) { if (StringUtils.isEmpty(logisticsOrder.getId())) {
return ResultUtil.error("订单id不能为空!"); return ResultUtil.error("订单id不能为空!");
} }
//先查询出旧的数据 //先查询出旧的数据
LogisticsOrder oldLogisticsOrder = logisticsOrderService.getById(logisticsOrder.getId()); final LogisticsOrder oldLogisticsOrder = logisticsOrderService.getById(logisticsOrder.getId());
// 设置创建人姓名 // 设置创建人姓名
final LogiticsCompany logiticsCompany = securityUtil.getCurrCompany(); final LogiticsCompany logiticsCompany = securityUtil.getCurrCompany();
logisticsOrder.setUpdateBy(logiticsCompany.getId()); logisticsOrder.setUpdateBy(logiticsCompany.getId());
final boolean b = logisticsOrderService.saveOrUpdate(logisticsOrder); // 根据收发货人获取信息,如果名字变了,那么修改收发货人的信息
// 设置创建人姓名
logisticsOrder.setCreateBy(logiticsCompany.getId());
logisticsOrder.setCreateByName(logiticsCompany.getContacts());
// 20241015 保存收发货人地址簿,先保存地址簿,方便后边获取收发货人id
final boolean b = logisticsAddressBookService.saveLogisticsAddressBook(logisticsOrder);
if (b) { 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) {
//如果更新成功,把修改记录保存一下 //如果更新成功,把修改记录保存一下
Gson gson = new Gson(); final Gson gson = new Gson();
LogisticsOrderChangeLog logisticsOrderChangeLog = new LogisticsOrderChangeLog(); final LogisticsOrderChangeLog logisticsOrderChangeLog = new LogisticsOrderChangeLog();
logisticsOrderChangeLog.setCreateBy(logiticsCompany.getId()); logisticsOrderChangeLog.setCreateBy(logiticsCompany.getId());
logisticsOrderChangeLog.setCreateByName(logiticsCompany.getContacts()); logisticsOrderChangeLog.setCreateByName(logiticsCompany.getContacts());
logisticsOrderChangeLog.setOldData(gson.toJson(oldLogisticsOrder)); logisticsOrderChangeLog.setOldData(gson.toJson(oldLogisticsOrder));
logisticsOrderChangeLog.setNewData(gson.toJson(logisticsOrder)); logisticsOrderChangeLog.setNewData(gson.toJson(logisticsOrder));
logisticsOrderChangeLog.setOrderId(logisticsOrder.getId()); logisticsOrderChangeLog.setOrderId(logisticsOrder.getId());
logisticsOrderChangeLog.setCreateTime(new Date()); logisticsOrderChangeLog.setCreateTime(new Date());
int status = logisticsOrderService.saveLogisticsOrderChangeLog(logisticsOrderChangeLog); final int status = logisticsOrderService.saveLogisticsOrderChangeLog(logisticsOrderChangeLog);
if (status == 0) { if (status == 0) {
return ResultUtil.error("保存修改记录失败!"); return ResultUtil.error("保存修改记录失败!");
} }
return ResultUtil.success("保存成功!"); return ResultUtil.success("保存成功!");
} else { } else {
return ResultUtil.error("保存失败!"); return ResultUtil.error("保存失败!");
} }
} }
return ResultUtil.error("保存成功!");
}
/** /**
* 删除物流订单 * 删除物流订单
@ -135,7 +154,7 @@ public class LogisticsOrderController {
* @author 王富康 * @author 王富康
* @date 2024/8/24 * @date 2024/8/24
*/ */
@PostMapping(value = "/deleteLogisticsOrder") @PostMapping("/deleteLogisticsOrder")
@ApiOperation("删除物流订单") @ApiOperation("删除物流订单")
public Result deleteLogisticsOrder(String id) { public Result deleteLogisticsOrder(String id) {
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
@ -158,7 +177,7 @@ public class LogisticsOrderController {
* @date 2024/8/24 * @date 2024/8/24
*/ */
@RequestMapping(value = "/getLogisticsOrderPageList", method = RequestMethod.POST) @RequestMapping(value = "/getLogisticsOrderPageList", method = RequestMethod.POST)
@ApiOperation(value = "分页查询物流订单") @ApiOperation("分页查询物流订单")
public Result<IPage<LogisticsOrder>> getLogisticsOrderPageList(@RequestBody(required = false) LogisticsOrderQueryVo logisticsOrderQueryVo) { public Result<IPage<LogisticsOrder>> getLogisticsOrderPageList(@RequestBody(required = false) LogisticsOrderQueryVo logisticsOrderQueryVo) {
final IPage<LogisticsOrder> result = logisticsOrderService.getLogisticsOrderPageList(logisticsOrderQueryVo); final IPage<LogisticsOrder> result = logisticsOrderService.getLogisticsOrderPageList(logisticsOrderQueryVo);
return new ResultUtil<IPage<LogisticsOrder>>().setData(result); return new ResultUtil<IPage<LogisticsOrder>>().setData(result);
@ -167,11 +186,12 @@ public class LogisticsOrderController {
/** /**
* 查询订单的修改记录 * 查询订单的修改记录
*
* @param * @param
* @return * @return
*/ */
@RequestMapping(value = "/getLogisticsOrderChangeLog", method = RequestMethod.GET) @RequestMapping(value = "/getLogisticsOrderChangeLog", method = RequestMethod.GET)
@ApiOperation(value = "查询物流订单修改记录") @ApiOperation("查询物流订单修改记录")
public Result<List<LogisticsOrderChangeLogVo>> getLogisticsOrderChangeLog(String orderId) { public Result<List<LogisticsOrderChangeLogVo>> getLogisticsOrderChangeLog(String orderId) {
return new ResultUtil<List<LogisticsOrderChangeLogVo>>().setData(logisticsOrderService.getLogisticsOrderChangeLog(orderId)); return new ResultUtil<List<LogisticsOrderChangeLogVo>>().setData(logisticsOrderService.getLogisticsOrderChangeLog(orderId));
@ -179,38 +199,41 @@ public class LogisticsOrderController {
/** /**
* 查询物流订单详情 * 查询物流订单详情
* @author 王富康 *
* @date 2024/9/5
* @param orderId * @param orderId
* @return Result<LogisticsOrder> * @return Result<LogisticsOrder>
* @author 王富康
* @date 2024/9/5
*/ */
@RequestMapping(value = "/getLogisticsOrderDetail", method = RequestMethod.GET) @RequestMapping(value = "/getLogisticsOrderDetail", method = RequestMethod.GET)
@ApiOperation(value = "查询物流订单详情") @ApiOperation("查询物流订单详情")
public Result<LogisticsOrder> getLogisticsOrderDetail(String orderId) { public Result<LogisticsOrder> getLogisticsOrderDetail(String orderId) {
return new ResultUtil<LogisticsOrder>().setData(logisticsOrderService.getById(orderId)); return new ResultUtil<LogisticsOrder>().setData(logisticsOrderService.getById(orderId));
} }
// 数据统计(可按照线路、物流公司、到达站搜索):客户总运费、运单数、客户数、运输费、装车费、小费、保费 // 数据统计(可按照线路、物流公司、到达站搜索):客户总运费、运单数、客户数、运输费、装车费、小费、保费
@RequestMapping(value = "/getLogisticsOrderStatistics", method = RequestMethod.POST) @RequestMapping(value = "/getLogisticsOrderStatistics", method = RequestMethod.POST)
@ApiOperation(value = "物流订单数据统计") @ApiOperation("物流订单数据统计")
public Result getLogisticsOrderStatistics(@RequestBody(required = false) LogisticsOrderQueryVo logisticsOrderQueryVo) { public Result getLogisticsOrderStatistics(@RequestBody(required = false) LogisticsOrderQueryVo logisticsOrderQueryVo) {
try { try {
return new ResultUtil<StatisticsVo>().setData(logisticsOrderService.getLogisticsOrderStatistics(logisticsOrderQueryVo)); return new ResultUtil<StatisticsVo>().setData(logisticsOrderService.getLogisticsOrderStatistics(logisticsOrderQueryVo));
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e);
return ResultUtil.error("查询物流统计失败!"); return ResultUtil.error("查询物流统计失败!");
} }
} }
/** /**
* 批量更新订单状态 * 批量更新订单状态
* @author 王富康 *
* @date 2024/11/15
* @param orderIds * @param orderIds
* @param status * @param status
* @return Result * @return Result
* @author 王富康
* @date 2024/11/15
*/ */
@RequestMapping(value = "/batchUpdateOrderStatus", method = RequestMethod.POST) @RequestMapping(value = "/batchUpdateOrderStatus", method = RequestMethod.POST)
@ApiOperation(value = "批量更新订单状态") @ApiOperation("批量更新订单状态")
public Result batchUpdateOrderStatus(String orderIds, String status) { public Result batchUpdateOrderStatus(String orderIds, String status) {
if (StringUtils.isEmpty(orderIds)) { if (StringUtils.isEmpty(orderIds)) {
return ResultUtil.error("订单id不能为空!"); return ResultUtil.error("订单id不能为空!");

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

@ -16,6 +16,7 @@ import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Transient;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@ -202,5 +203,9 @@ public class LogisticsOrder{
@ApiModelProperty(value = "订单状态") @ApiModelProperty(value = "订单状态")
private String orderStatus; private String orderStatus;
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "修改记录数")
private String changeCount;
} }

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

@ -17,6 +17,7 @@ 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;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
@ -118,13 +119,20 @@ public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper,
} }
// 从订单表获取客户总运费、运单数、小费、保费 // 从订单表获取客户总运费、运单数、小费、保费
final StatisticsVo statisticsVo = logisticsOrderMapper.getLogisticsOrderStatistics(logisticsOrderQueryVo); final StatisticsVo statisticsVo = logisticsOrderMapper.getLogisticsOrderStatistics(logisticsOrderQueryVo);
if(statisticsVo != null){
// 从订单表获取客户数 // 从订单表获取客户数
final int customerCount = logisticsOrderMapper.getCustomerCount(logisticsOrderQueryVo); final int customerCount = logisticsOrderMapper.getCustomerCount(logisticsOrderQueryVo);
statisticsVo.setTotalCustomer(customerCount); statisticsVo.setTotalCustomer(customerCount);
// 从装车记录获取运输费、装车费 // 从装车记录获取运输费、装车费
final StatisticsVo carStatisticsVo = logisticsEntruckingLogService.getCarStatistics(logisticsOrderQueryVo); final StatisticsVo carStatisticsVo = logisticsEntruckingLogService.getCarStatistics(logisticsOrderQueryVo);
statisticsVo.setTotalTransportationFee(carStatisticsVo.getTotalTransportationFee()); if(carStatisticsVo ==null){
statisticsVo.setTotalLoadingFee(carStatisticsVo.getTotalLoadingFee()); statisticsVo.setTotalTransportationFee(BigDecimal.ZERO);
statisticsVo.setTotalLoadingFee(BigDecimal.ZERO);
}else{
statisticsVo.setTotalTransportationFee(carStatisticsVo.getTotalTransportationFee()==null? BigDecimal.ZERO:carStatisticsVo.getTotalTransportationFee());
statisticsVo.setTotalLoadingFee(carStatisticsVo.getTotalLoadingFee()==null?BigDecimal.ZERO:carStatisticsVo.getTotalLoadingFee());
}
}
return statisticsVo; return statisticsVo;
} }

75
hiver-core/src/main/java/cc/hiver/core/serviceimpl/LogiticsCompanyServiceImpl.java

@ -17,13 +17,14 @@ package cc.hiver.core.serviceimpl;
import cc.hiver.core.base.HiverBaseDao; import cc.hiver.core.base.HiverBaseDao;
import cc.hiver.core.common.constant.CommonConstant; import cc.hiver.core.common.constant.CommonConstant;
import cc.hiver.core.common.utils.BeanUtils;
import cc.hiver.core.dao.LogiticsCompanyDao; import cc.hiver.core.dao.LogiticsCompanyDao;
import cc.hiver.core.entity.LogiticsCompany; import cc.hiver.core.entity.LogiticsCompany;
import cc.hiver.core.logisticsuser.entity.LogisticsUser; import cc.hiver.core.logisticsuser.entity.LogisticsUser;
import cc.hiver.core.logisticsuser.service.LogisticsUserService; import cc.hiver.core.logisticsuser.service.LogisticsUserService;
import cc.hiver.core.service.LogiticsCompanyService; import cc.hiver.core.service.LogiticsCompanyService;
import cc.hiver.core.vo.LogiticsCompanyQueryVo; import cc.hiver.core.vo.LogiticsCompanyQueryVo;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.text.CharSequenceUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -65,38 +66,38 @@ public class LogiticsCompanyServiceImpl implements LogiticsCompanyService {
@Nullable @Nullable
@Override @Override
public Predicate toPredicate(Root<LogiticsCompany> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { public Predicate toPredicate(Root<LogiticsCompany> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
Path<String> companyNameField = root.get("companyName"); final Path<String> companyNameField = root.get("companyName");
Path<String> signCompanyField = root.get("signCompany"); final Path<String> signCompanyField = root.get("signCompany");
Path<String> contactsField = root.get("contacts"); final Path<String> contactsField = root.get("contacts");
Path<String> mobileField = root.get("mobile"); final Path<String> mobileField = root.get("mobile");
Path<String> delFlagField = root.get("delFlag"); final Path<String> delFlagField = root.get("delFlag");
Path<String> isOnLineField = root.get("isOnLine"); final Path<String> isOnLineField = root.get("isOnLine");
List<Predicate> list = new ArrayList<>(); final List<Predicate> list = new ArrayList<>();
if (StrUtil.isNotBlank(company.getSignCompany())) { if (CharSequenceUtil.isNotBlank(company.getSignCompany())) {
list.add(cb.equal(signCompanyField, company.getSignCompany() )); list.add(cb.equal(signCompanyField, company.getSignCompany() ));
} }
if (company.getIsOnLine() != null) { if (company.getIsOnLine() != null) {
list.add(cb.equal(isOnLineField, company.getIsOnLine() )); list.add(cb.equal(isOnLineField, company.getIsOnLine() ));
} }
if (StrUtil.isNotBlank(company.getCompanyName())) { if (CharSequenceUtil.isNotBlank(company.getCompanyName())) {
list.add(cb.like(companyNameField, '%' + company.getCompanyName() + '%')); list.add(cb.like(companyNameField, '%' + company.getCompanyName() + '%'));
} }
if (StrUtil.isNotBlank(company.getContacts())) { if (CharSequenceUtil.isNotBlank(company.getContacts())) {
list.add(cb.like(contactsField, '%' + company.getContacts() + '%')); list.add(cb.like(contactsField, '%' + company.getContacts() + '%'));
} }
if (StrUtil.isNotBlank(company.getMobile())) { if (CharSequenceUtil.isNotBlank(company.getMobile())) {
list.add(cb.like(mobileField, '%' + company.getMobile() + '%')); list.add(cb.like(mobileField, '%' + company.getMobile() + '%'));
} }
// 未删除 // 未删除
list.add(cb.equal(delFlagField, company.getDelFlag())); list.add(cb.equal(delFlagField, company.getDelFlag()));
Predicate[] arr = new Predicate[list.size()]; final Predicate[] arr = new Predicate[list.size()];
cq.where(list.toArray(arr)); cq.where(list.toArray(arr));
cq.orderBy(cb.desc(root.<Integer>get("isOnLine")),cb.asc(root.<String>get("companyName"))); cq.orderBy(cb.desc(root.<Integer>get("isOnLine")),cb.asc(root.<String>get("companyName")));
return null; return null;
@ -111,7 +112,7 @@ public class LogiticsCompanyServiceImpl implements LogiticsCompanyService {
@Override @Override
public List<LogiticsCompany> findByMobile(String mobile) { public List<LogiticsCompany> findByMobile(String mobile) {
List<LogiticsCompany> logiticsCompanyList = companyDao.findByMobile(mobile); final List<LogiticsCompany> logiticsCompanyList = companyDao.findByMobile(mobile);
if (logiticsCompanyList.isEmpty()) { if (logiticsCompanyList.isEmpty()) {
// 物流公司主表中没有查询到信息,查询物流公司员工信息 // 物流公司主表中没有查询到信息,查询物流公司员工信息
final LogisticsUser logisticsUser = logisticsUserService.findByMobile(mobile); final LogisticsUser logisticsUser = logisticsUserService.findByMobile(mobile);
@ -119,12 +120,14 @@ public class LogiticsCompanyServiceImpl implements LogiticsCompanyService {
return new ArrayList<>(); return new ArrayList<>();
}else{ }else{
final LogiticsCompany logiticsCompany = companyDao.getById(logisticsUser.getCompanyId()); final LogiticsCompany logiticsCompany = companyDao.getById(logisticsUser.getCompanyId());
final LogiticsCompany userLogiticsCompany = new LogiticsCompany();
BeanUtils.copyBeanProp(userLogiticsCompany,logiticsCompany);
// 将员工的信息封装至公司信息中 // 将员工的信息封装至公司信息中
logiticsCompany.setId(logisticsUser.getId()); userLogiticsCompany.setId(logisticsUser.getId());
logiticsCompany.setPassword(logisticsUser.getPassword()); userLogiticsCompany.setPassword(logisticsUser.getPassword());
logiticsCompany.setUsername(logisticsUser.getMobile()); userLogiticsCompany.setUsername(logisticsUser.getMobile());
logiticsCompany.setCompanyId(logisticsUser.getCompanyId()); userLogiticsCompany.setCompanyId(logisticsUser.getCompanyId());
logiticsCompanyList.add(logiticsCompany); logiticsCompanyList.add(userLogiticsCompany);
return logiticsCompanyList; return logiticsCompanyList;
} }
} }
@ -138,41 +141,41 @@ public class LogiticsCompanyServiceImpl implements LogiticsCompanyService {
@Nullable @Nullable
@Override @Override
public Predicate toPredicate(Root<LogiticsCompany> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { public Predicate toPredicate(Root<LogiticsCompany> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
Path<String> companyNameField = root.get("companyName"); final Path<String> companyNameField = root.get("companyName");
Path<String> signCompanyField = root.get("signCompany"); final Path<String> signCompanyField = root.get("signCompany");
Path<String> contactsField = root.get("contacts"); final Path<String> contactsField = root.get("contacts");
Path<String> mobileField = root.get("mobile"); final Path<String> mobileField = root.get("mobile");
Path<String> delFlagField = root.get("delFlag"); final Path<String> delFlagField = root.get("delFlag");
Path<String> networkField = root.get("network"); final Path<String> networkField = root.get("network");
Path<String> addressField = root.get("companyAddress"); final Path<String> addressField = root.get("companyAddress");
List<Predicate> list = new ArrayList<>(); final List<Predicate> list = new ArrayList<>();
if (StrUtil.isNotEmpty(company.getSignCompany())) { if (CharSequenceUtil.isNotEmpty(company.getSignCompany())) {
list.add(cb.equal(signCompanyField, company.getSignCompany() )); list.add(cb.equal(signCompanyField, company.getSignCompany() ));
} }
if (StrUtil.isNotEmpty(company.getCompanyName())) { if (CharSequenceUtil.isNotEmpty(company.getCompanyName())) {
list.add(cb.like(companyNameField, '%' + company.getCompanyName() + '%')); list.add(cb.like(companyNameField, '%' + company.getCompanyName() + '%'));
} }
if (StrUtil.isNotEmpty(company.getContacts())) { if (CharSequenceUtil.isNotEmpty(company.getContacts())) {
list.add(cb.like(contactsField, '%' + company.getContacts() + '%')); list.add(cb.like(contactsField, '%' + company.getContacts() + '%'));
} }
if (StrUtil.isNotEmpty(company.getMobile())) { if (CharSequenceUtil.isNotEmpty(company.getMobile())) {
list.add(cb.like(mobileField, '%' + company.getMobile() + '%')); list.add(cb.like(mobileField, '%' + company.getMobile() + '%'));
} }
if(StringUtils.isNotEmpty(company.getSeachParams())){ if(StringUtils.isNotEmpty(company.getSeachParams())){
Predicate p = cb.or(cb.like(companyNameField, "%" + company.getSeachParams() + "%")); Predicate p = cb.or(cb.like(companyNameField, '%' + company.getSeachParams() + '%'));
p = cb.or(p, cb.like(networkField, "%" + company.getSeachParams() + "%")); p = cb.or(p, cb.like(networkField, '%' + company.getSeachParams() + '%'));
p = cb.or(p, cb.like(addressField, "%" + company.getSeachParams() + "%")); p = cb.or(p, cb.like(addressField, '%' + company.getSeachParams() + '%'));
list.add(p); list.add(p);
} }
// 未删除 // 未删除
list.add(cb.equal(delFlagField, company.getDelFlag())); list.add(cb.equal(delFlagField, company.getDelFlag()));
Predicate[] arr = new Predicate[list.size()]; final Predicate[] arr = new Predicate[list.size()];
cq.where(list.toArray(arr)); cq.where(list.toArray(arr));
cq.orderBy(cb.desc(root.<Integer>get("isOnLine")),cb.desc(root.<Integer>get("createTime")),cb.asc(root.<String>get("companyName"))); cq.orderBy(cb.desc(root.<Integer>get("isOnLine")),cb.desc(root.<Integer>get("createTime")),cb.asc(root.<String>get("companyName")));
return null; return null;
@ -187,10 +190,12 @@ public class LogiticsCompanyServiceImpl implements LogiticsCompanyService {
} }
} }
@Override
public void onLine(String id){ public void onLine(String id){
companyDao.changeOnLine(id,CommonConstant.ON_LINE); companyDao.changeOnLine(id,CommonConstant.ON_LINE);
} }
@Override
public void offLine(String id){ public void offLine(String id){
companyDao.changeOnLine(id,CommonConstant.OFF_LINE); companyDao.changeOnLine(id,CommonConstant.OFF_LINE);
} }

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

@ -166,9 +166,8 @@
and t.address_type = #{queryParams.addressType} 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 = #{queryParams.shipperOrReceiverName}
OR to_pinyin ( t.shipper_or_receiver_name ) LIKE CONCAT( '%', to_pinyin ( #{queryParams.shipperOrReceiverName} ), '%' ) OR to_pinyin ( t.shipper_or_receiver_name ) = to_pinyin ( #{queryParams.shipperOrReceiverName} )
OR to_initial_pinyin ( t.shipper_or_receiver_name ) LIKE CONCAT( '%', #{queryParams.shipperOrReceiverName}, '%' )
</if> </if>
<if test='queryParams.mobile!=null and queryParams.mobile.trim() neq ""'> <if test='queryParams.mobile!=null and queryParams.mobile.trim() neq ""'>
<if test='queryParams.shipperOrReceiverName!=null and queryParams.shipperOrReceiverName.trim() neq ""'> <if test='queryParams.shipperOrReceiverName!=null and queryParams.shipperOrReceiverName.trim() neq ""'>

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

@ -193,5 +193,9 @@
<if test='logisticsOrderQueryVo.circuitId!=null and logisticsOrderQueryVo.circuitId.trim() neq ""'> <if test='logisticsOrderQueryVo.circuitId!=null and logisticsOrderQueryVo.circuitId.trim() neq ""'>
AND t.circuit_id = #{logisticsOrderQueryVo.circuitId} AND t.circuit_id = #{logisticsOrderQueryVo.circuitId}
</if> </if>
<!--开始时间、结束时间-->
<if test="logisticsOrderQueryVo.startDate!=null and logisticsOrderQueryVo.endDate!=null">
AND create_time BETWEEN #{logisticsOrderQueryVo.startDate} AND #{logisticsOrderQueryVo.endDate}
</if>
</select> </select>
</mapper> </mapper>

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

@ -41,6 +41,8 @@
<result column="payment_for_goods" jdbcType="VARCHAR" property="paymentForGoods" /> <result column="payment_for_goods" jdbcType="VARCHAR" property="paymentForGoods" />
<result column="transfer_addition" jdbcType="VARCHAR" property="transferAddition" /> <result column="transfer_addition" jdbcType="VARCHAR" property="transferAddition" />
<result column="order_status" jdbcType="VARCHAR" property="orderStatus" /> <result column="order_status" jdbcType="VARCHAR" property="orderStatus" />
<result column="shipper_id" jdbcType="VARCHAR" property="shipperId" />
<result column="receiver_id" jdbcType="VARCHAR" property="receiverId" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
@ -48,7 +50,8 @@
shipper_name, shipper_mobile, shipper_address, receiver_name, receiver_mobile, receiver_address, 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, 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, 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 receiving_user_name,image_path, payment_for_goods, transfer_addition,order_status,
shipper_id,receiver_id
</sql> </sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap"> <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
@ -69,7 +72,7 @@
shipper_name, shipper_mobile, shipper_address, receiver_name, receiver_mobile, receiver_address, 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, 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, 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) image_path, payment_for_goods, transfer_addition,order_status,shipper_id,receiver_id)
values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createByName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createByName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP},
#{companyId,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR}, #{circuitId,jdbcType=VARCHAR}, #{circuitName,jdbcType=VARCHAR}, #{companyId,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR}, #{circuitId,jdbcType=VARCHAR}, #{circuitName,jdbcType=VARCHAR},
@ -80,7 +83,7 @@
#{transitFee,jdbcType=DECIMAL}, #{tips,jdbcType=DECIMAL}, #{methodOfSettlement,jdbcType=VARCHAR}, #{cost,jdbcType=DECIMAL}, #{transitFee,jdbcType=DECIMAL}, #{tips,jdbcType=DECIMAL}, #{methodOfSettlement,jdbcType=VARCHAR}, #{cost,jdbcType=DECIMAL},
#{allCost,jdbcType=DECIMAL}, #{orderNumber,jdbcType=VARCHAR}, #{objectName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{allCost,jdbcType=DECIMAL}, #{orderNumber,jdbcType=VARCHAR}, #{objectName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
#{receivingUserId,jdbcType=VARCHAR}, #{receivingUserName,jdbcType=VARCHAR},#{imagePath,jdbcType=VARCHAR}, #{paymentForGoods,jdbcType=VARCHAR}, #{receivingUserId,jdbcType=VARCHAR}, #{receivingUserName,jdbcType=VARCHAR},#{imagePath,jdbcType=VARCHAR}, #{paymentForGoods,jdbcType=VARCHAR},
#{transferAddition,jdbcType=VARCHAR},#{orderStatus,jdbcType=VARCHAR}) #{transferAddition,jdbcType=VARCHAR},#{orderStatus,jdbcType=VARCHAR},#{shipperId,jdbcType=VARCHAR},#{receiverId,jdbcType=VARCHAR})
</insert> </insert>
<!--管理商品分页列表--> <!--管理商品分页列表-->
@ -102,7 +105,7 @@
t.shipper_name, t.shipper_mobile, t.shipper_address, t.receiver_name, t.receiver_mobile, t.receiver_address, 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.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.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.receiving_user_name,t.image_path, t.payment_for_goods, t.transfer_addition,t.order_status,t.shipper_id,t.receiver_id,
COALESCE(occ.change_count, 0) AS change_count COALESCE(occ.change_count, 0) AS change_count
from t_logistics_order t from t_logistics_order t
LEFT JOIN LEFT JOIN
@ -160,6 +163,9 @@
<if test='queryParams.orderNumber!=null and queryParams.orderNumber.trim() neq ""'> <if test='queryParams.orderNumber!=null and queryParams.orderNumber.trim() neq ""'>
AND t.order_number like concat('%',#{queryParams.orderNumber},'%') AND t.order_number like concat('%',#{queryParams.orderNumber},'%')
</if> </if>
<if test='queryParams.orderStatus!=null and queryParams.orderStatus.trim() neq ""'>
AND t.order_status like concat('%',#{queryParams.orderStatus},'%')
</if>
<!--开始时间、结束时间--> <!--开始时间、结束时间-->
<if test="queryParams.startDate!=null and queryParams.endDate!=null"> <if test="queryParams.startDate!=null and queryParams.endDate!=null">
AND t.create_time BETWEEN #{queryParams.startDate} AND #{queryParams.endDate} AND t.create_time BETWEEN #{queryParams.startDate} AND #{queryParams.endDate}
@ -175,7 +181,6 @@
or t.receiver_id like concat('%',#{queryParams.searchStr},'%') or t.receiver_id like concat('%',#{queryParams.searchStr},'%')
or t.receiver_name like concat('%',#{queryParams.searchStr},'%') or t.receiver_name like concat('%',#{queryParams.searchStr},'%')
or t.receiver_mobile like concat('%',#{queryParams.searchStr},'%') or t.receiver_mobile like concat('%',#{queryParams.searchStr},'%')
or t.order_status like concat('%',#{queryParams.searchStr},'%')
) )
</if> </if>
<!--是否有修改记录的筛选--> <!--是否有修改记录的筛选-->
@ -233,7 +238,7 @@
<!--获取客户数--> <!--获取客户数-->
<select id="getCustomerCount" resultType="java.lang.Integer"> <select id="getCustomerCount" resultType="java.lang.Integer">
SELECT count(distinct receiver_mobile) FROM t_logistics_order SELECT count(distinct receiver_id) FROM t_logistics_order
WHERE del_flag = 0 WHERE del_flag = 0
<!--可按照线路、物流公司、到达站搜索--> <!--可按照线路、物流公司、到达站搜索-->
<if test='logisticsOrderQueryVo.companyId!=null and logisticsOrderQueryVo.companyId.trim() neq ""'> <if test='logisticsOrderQueryVo.companyId!=null and logisticsOrderQueryVo.companyId.trim() neq ""'>
@ -245,6 +250,10 @@
<if test='logisticsOrderQueryVo.arrivalStationId!=null and logisticsOrderQueryVo.arrivalStationId.trim() neq ""'> <if test='logisticsOrderQueryVo.arrivalStationId!=null and logisticsOrderQueryVo.arrivalStationId.trim() neq ""'>
AND arrival_station_id = #{logisticsOrderQueryVo.arrivalStationId} AND arrival_station_id = #{logisticsOrderQueryVo.arrivalStationId}
</if> </if>
<!--开始时间、结束时间-->
<if test="logisticsOrderQueryVo.startDate!=null and logisticsOrderQueryVo.endDate!=null">
AND create_time BETWEEN #{logisticsOrderQueryVo.startDate} AND #{logisticsOrderQueryVo.endDate}
</if>
</select> </select>

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

@ -158,7 +158,7 @@
<if test='queryParams.stationName!=null and queryParams.stationName.trim() neq ""'> <if test='queryParams.stationName!=null and queryParams.stationName.trim() neq ""'>
AND (t.station_name LIKE CONCAT( '%', #{queryParams.stationName}, '%' ) AND (t.station_name LIKE CONCAT( '%', #{queryParams.stationName}, '%' )
OR to_pinyin ( t.station_name ) LIKE CONCAT( '%', to_pinyin ( #{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}, '%' )) OR to_initial_pinyin ( t.station_name ) LIKE CONCAT( '%', to_initial_pinyin (#{queryParams.stationName}), '%' ))
</if> </if>
</where> </where>
ORDER BY ORDER BY
@ -184,7 +184,7 @@
<if test='queryParams.stationName!=null and queryParams.stationName.trim() neq ""'> <if test='queryParams.stationName!=null and queryParams.stationName.trim() neq ""'>
AND (t.station_name LIKE CONCAT( '%', #{queryParams.stationName}, '%' ) AND (t.station_name LIKE CONCAT( '%', #{queryParams.stationName}, '%' )
OR to_pinyin ( t.station_name ) LIKE CONCAT( '%', to_pinyin ( #{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}, '%' )) OR to_initial_pinyin ( t.station_name ) LIKE CONCAT( '%', to_initial_pinyin (#{queryParams.stationName}), '%' ))
</if> </if>
</where> </where>
ORDER BY ORDER BY

22
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/LogiticsCompanyController.java

@ -78,7 +78,7 @@ public class LogiticsCompanyController {
@RequestMapping(value = "/add", method = RequestMethod.POST) @RequestMapping(value = "/add", method = RequestMethod.POST)
@ResponseBody @ResponseBody
@ApiOperation("添加") @ApiOperation("添加")
public Result<Object> add(LogiticsCompany company) { public Result<Object> add(@RequestBody LogiticsCompany company) {
if (companyService.findByCompanyName(company.getCompanyName()) != null) { if (companyService.findByCompanyName(company.getCompanyName()) != null) {
return ResultUtil.error("公司名称已经存在"); return ResultUtil.error("公司名称已经存在");
} }
@ -123,7 +123,7 @@ public class LogiticsCompanyController {
@RequestMapping(value = "/edit", method = RequestMethod.PUT) @RequestMapping(value = "/edit", method = RequestMethod.PUT)
@ResponseBody @ResponseBody
@ApiOperation("编辑") @ApiOperation("编辑")
public Result<Object> edit(LogiticsCompany company) { public Result<Object> edit(@RequestBody LogiticsCompany company) {
// 添加商圈名称 // 添加商圈名称
if (CharSequenceUtil.isNotBlank(company.getRegion())) { if (CharSequenceUtil.isNotBlank(company.getRegion())) {
final ShopArea shopArea = shopAreaService.get(company.getRegion()); final ShopArea shopArea = shopAreaService.get(company.getRegion());
@ -221,4 +221,22 @@ public class LogiticsCompanyController {
final List<LogiticsCompany> logiticsCompanyList = companyService.findByMobile(mobile); final List<LogiticsCompany> logiticsCompanyList = companyService.findByMobile(mobile);
return ResultUtil.data(logiticsCompanyList); return ResultUtil.data(logiticsCompanyList);
} }
@RequestMapping(value = "/updateLogiticsCompany", method = RequestMethod.POST)
@ApiOperation("修改某些参数")
public Result<Object> updateLogiticsCompany(@RequestBody LogiticsCompany logiticsCompany) {
if(StringUtils.isEmpty(logiticsCompany.getId())){
return ResultUtil.error("公司id不能为空!");
}
try {
LogiticsCompany oldLogiticsCompany = companyService.findById(logiticsCompany.getId());
oldLogiticsCompany.setPrintMethod(logiticsCompany.getPrintMethod());
companyService.update(oldLogiticsCompany);
return ResultUtil.success("修改成功");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResultUtil.error("修改失败");
}
}
} }

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

@ -658,7 +658,8 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
logisticsAddressBookQueryVo.setShipperOrReceiverName(shipperName); logisticsAddressBookQueryVo.setShipperOrReceiverName(shipperName);
logisticsAddressBookQueryVo.setMobile(shipperMobile); logisticsAddressBookQueryVo.setMobile(shipperMobile);
LogiticsCompany currCompany = securityUtil.getCurrCompany(); LogiticsCompany currCompany = securityUtil.getCurrCompany();
logisticsAddressBookQueryVo.setCompanyId(currCompany.getCompanyId());
logisticsAddressBookQueryVo.setCompanyId(currCompany.getCompanyId() == null ? currCompany.getId() : 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");
@ -668,6 +669,7 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
} }
// 收货人 receiverName,receiverMobile // 收货人 receiverName,receiverMobile
final LogisticsAddressBookQueryVo receiverQueryVo = new LogisticsAddressBookQueryVo(); final LogisticsAddressBookQueryVo receiverQueryVo = new LogisticsAddressBookQueryVo();
receiverQueryVo.setCompanyId(currCompany.getCompanyId() == null ? currCompany.getId() : currCompany.getCompanyId());
receiverQueryVo.setAddressType(2); receiverQueryVo.setAddressType(2);
receiverQueryVo.setShipperOrReceiverName(receiverName); receiverQueryVo.setShipperOrReceiverName(receiverName);
receiverQueryVo.setMobile(receiverMobile); receiverQueryVo.setMobile(receiverMobile);

11
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/AliOcrUtil.java

@ -851,7 +851,7 @@ public class AliOcrUtil {
msgManager.add(userMsg); msgManager.add(userMsg);
stopWatch.start("开始回答"); stopWatch.start("开始回答");
final QwenParam param = final QwenParam param =
QwenParam.builder().model("qwen-coder-turbo").messages(msgManager.get()) QwenParam.builder().model("qwen-turbo-0919").messages(msgManager.get())
.resultFormat(QwenParam.ResultFormat.MESSAGE) .resultFormat(QwenParam.ResultFormat.MESSAGE)
.seed(1234) .seed(1234)
.temperature(0.7F) .temperature(0.7F)
@ -903,7 +903,7 @@ public class AliOcrUtil {
msgManager.add(systemMsg); msgManager.add(systemMsg);
msgManager.add(userMsg); msgManager.add(userMsg);
final QwenParam param = final QwenParam param =
QwenParam.builder().model("qwen-coder-turbo").messages(msgManager.get()) QwenParam.builder().model("qwen-turbo-0919").messages(msgManager.get())
.resultFormat(QwenParam.ResultFormat.MESSAGE) .resultFormat(QwenParam.ResultFormat.MESSAGE)
.seed(1234) .seed(1234)
.temperature(0.7F) .temperature(0.7F)
@ -945,7 +945,7 @@ public class AliOcrUtil {
msgManager.add(userMsg); msgManager.add(userMsg);
stopWatch.start("开始回答"); stopWatch.start("开始回答");
final QwenParam param = final QwenParam param =
QwenParam.builder().model("qwen-coder-turbo").messages(msgManager.get()) QwenParam.builder().model("qwen-turbo-0919").messages(msgManager.get())
.resultFormat(QwenParam.ResultFormat.MESSAGE) .resultFormat(QwenParam.ResultFormat.MESSAGE)
.seed(1234) .seed(1234)
.temperature(0.85F) .temperature(0.85F)
@ -1256,9 +1256,8 @@ public class AliOcrUtil {
final Generation gen = new Generation(); final Generation gen = new Generation();
final MessageManager msgManager = new MessageManager(10); final MessageManager msgManager = new MessageManager(10);
final Message systemMsg = final Message systemMsg =
Message.builder().role(Role.SYSTEM.getValue()).content("You are a helpful assistant.").build(); Message.builder().role(Role.SYSTEM.getValue()).content("你是一个物流开票员(这句话是给你的角色设定,不要在json信息中返回)").build();
questionMsg += "你是一个物流开票员;\n" + questionMsg += "请帮我把所有内容封装为JSON,json格式为:{\"shipperName\":\"发货人\",\"shipperMobile\":\"发货电话\",\"receiverName\":\"收货人\",\"receiverMobile\":\"收货电话\",\"weight\":\"重量\",\"count\":\"数量\",\"tips\":\"小费\",\"premium\":\"保费\",\"arrivalStationName\":\"到达站\",\"objectName\":\"物品\"}" +
"请帮我把所有内容封装为JSON,json格式为:{\"shipperName\":\"发货人\",\"shipperMobile\":\"发货电话\",\"receiverName\":\"收货人\",\"receiverMobile\":\"收货电话\",\"weight\":\"重量\",\"count\":\"数量\",\"tips\":\"小费\",\"premium\":\"保费\",\"arrivalStationName\":\"到达站\",\"objectName\":\"物品\"}" +
"1.没有识别到的字段,赋值\"\";" + "1.没有识别到的字段,赋值\"\";" +
"2.weight、count、tips、premium这几个字段只返回数字;" + "2.weight、count、tips、premium这几个字段只返回数字;" +
"3.只输出1条JSON数据即可,禁止返回除JSON数据外的任何内容!返回的JSON数据不用换行,以最快的速度返回!"; "3.只输出1条JSON数据即可,禁止返回除JSON数据外的任何内容!返回的JSON数据不用换行,以最快的速度返回!";

2
hiver-modules/hiver-mall/src/main/resources/mapper/CustomerCategoryMapper.xml

@ -140,7 +140,7 @@
<if test='queryParams.stationName!=null and queryParams.stationName.trim() neq ""'> <if test='queryParams.stationName!=null and queryParams.stationName.trim() neq ""'>
AND (t.station_name LIKE CONCAT( '%', #{queryParams.stationName}, '%' ) AND (t.station_name LIKE CONCAT( '%', #{queryParams.stationName}, '%' )
OR to_pinyin ( t.station_name ) LIKE CONCAT( '%', to_pinyin ( #{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}, '%' )) OR to_initial_pinyin ( t.station_name ) LIKE CONCAT( '%', to_initial_pinyin (#{queryParams.stationName}), '%' ))
</if> </if>
</where> </where>
ORDER BY ORDER BY

Loading…
Cancel
Save