Browse Source

13.开单表单号(orderNumber) 生成规则:TC240830-01、TC240830-02、TC240830-03. 字母是物流首拼

qiaohui 2 years ago
parent
commit
a87733a4ab
  1. 5
      hiver-core/pom.xml
  2. 45
      hiver-core/src/main/java/cc/hiver/core/common/utils/PinYinUtils.java
  3. 14
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/controller/LogisticsOrderController.java
  4. 7
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/service/LogisticsOrderService.java
  5. 21
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/service/impl/LogisticsOrderServiceImpl.java

5
hiver-core/pom.xml

@ -165,5 +165,10 @@
<artifactId>aliyun-java-sdk-dysmsapi</artifactId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

45
hiver-core/src/main/java/cc/hiver/core/common/utils/PinYinUtils.java

@ -0,0 +1,45 @@
package cc.hiver.core.common.utils;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class PinYinUtils {
/**
* 获取汉字串拼音首字母英文字符不变
* @param chinese 汉字串
* @return 汉语拼音首字母
*/
public static String getFirstSpell(String chinese) {
if(chinese == null || "".equals(chinese)) {
return "";
}
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i]);
if (temp != null) {
pybf.append(temp[0].charAt(0));
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString().replaceAll("\\W", "").trim();
}
public static void main(String[] args) {
System.out.println(getFirstSpell("王富康"));
}
}

14
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/controller/LogisticsOrderController.java

@ -1,11 +1,13 @@
package cc.hiver.mall.logisticsorder.controller; package cc.hiver.mall.logisticsorder.controller;
import cc.hiver.core.common.utils.PinYinUtils;
import cc.hiver.core.common.utils.ResultUtil; import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.vo.Result; import cc.hiver.core.common.vo.Result;
import cc.hiver.mall.logisticsaddressbook.service.LogisticsAddressBookService; import cc.hiver.mall.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.mall.logisticsorder.entity.LogisticsOrder; import cc.hiver.mall.logisticsorder.entity.LogisticsOrder;
import cc.hiver.mall.logisticsorder.service.LogisticsOrderService; import cc.hiver.mall.logisticsorder.service.LogisticsOrderService;
import cc.hiver.mall.logisticsorder.vo.LogisticsOrderQueryVo; import cc.hiver.mall.logisticsorder.vo.LogisticsOrderQueryVo;
import cc.hiver.mall.utils.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -15,6 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date;
/** /**
* 物流订单控制器 * 物流订单控制器
* *
@ -37,7 +41,15 @@ public class LogisticsOrderController {
@PostMapping(value = "/addLogisticsOrder") @PostMapping(value = "/addLogisticsOrder")
@ApiOperation("新增物流订单") @ApiOperation("新增物流订单")
public Result addLogisticsOrder(@RequestBody LogisticsOrder logisticsOrder) { public Result addLogisticsOrder(@RequestBody LogisticsOrder logisticsOrder) {
//单号命名规则 物流公司首字母-yyyyMMdd-递增流水号
String orderNumber = PinYinUtils.getFirstSpell(logisticsOrder.getCompanyName())+"-"+ DateUtil.COMPAT.getDateText(new Date())+"-";
//查询一下这个物流公司,今天最后一条数据的单号是多少,如果没有,默认为1
LogisticsOrder lastOrder = logisticsOrderService.getLogisticsOrderByCompanyId(logisticsOrder);
if(lastOrder != null){
int newNumber = Integer.parseInt(lastOrder.getOrderNumber().split("-")[2])+1;
orderNumber += newNumber;
}
logisticsOrder.setOrderNumber(orderNumber);
final boolean b = logisticsOrderService.saveOrUpdate(logisticsOrder); final boolean b = logisticsOrderService.saveOrUpdate(logisticsOrder);
if (b) { if (b) {
//保存收发货人地址簿 //保存收发货人地址簿

7
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/service/LogisticsOrderService.java

@ -16,4 +16,11 @@ public interface LogisticsOrderService extends IService<LogisticsOrder> {
* @date 2024/8/24 * @date 2024/8/24
*/ */
IPage<LogisticsOrder> getLogisticsOrderPageList(LogisticsOrderQueryVo logisticsOrderQueryVo); IPage<LogisticsOrder> getLogisticsOrderPageList(LogisticsOrderQueryVo logisticsOrderQueryVo);
/**
* 根据条件查询物流订单
*/
LogisticsOrder getLogisticsOrderByCompanyId(LogisticsOrder logisticsOrder);
} }

21
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/service/impl/LogisticsOrderServiceImpl.java

@ -1,10 +1,12 @@
package cc.hiver.mall.logisticsorder.service.impl; package cc.hiver.mall.logisticsorder.service.impl;
import cc.hiver.mall.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.mall.logisticsorder.entity.LogisticsOrder; import cc.hiver.mall.logisticsorder.entity.LogisticsOrder;
import cc.hiver.mall.logisticsorder.mapper.LogisticsOrderMapper; import cc.hiver.mall.logisticsorder.mapper.LogisticsOrderMapper;
import cc.hiver.mall.logisticsorder.service.LogisticsOrderService; import cc.hiver.mall.logisticsorder.service.LogisticsOrderService;
import cc.hiver.mall.logisticsorder.vo.LogisticsOrderQueryVo; import cc.hiver.mall.logisticsorder.vo.LogisticsOrderQueryVo;
import cc.hiver.mall.utils.DateUtil; import cc.hiver.mall.utils.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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;
@ -12,6 +14,8 @@ 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.util.Date;
@Service @Service
public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper, LogisticsOrder> implements LogisticsOrderService { public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper, LogisticsOrder> implements LogisticsOrderService {
@ -35,4 +39,21 @@ public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper,
final Page<LogisticsOrder> page = new Page<>(logisticsOrderQueryVo.getPageNum(), logisticsOrderQueryVo.getPageSize()); final Page<LogisticsOrder> page = new Page<>(logisticsOrderQueryVo.getPageNum(), logisticsOrderQueryVo.getPageSize());
return logisticsOrderMapper.getLogisticsOrderPageList(page, logisticsOrderQueryVo); return logisticsOrderMapper.getLogisticsOrderPageList(page, logisticsOrderQueryVo);
} }
/**
* 根据条件查询物流订单
*/
@Override
public LogisticsOrder getLogisticsOrderByCompanyId(LogisticsOrder logisticsOrder){
LambdaQueryWrapper<LogisticsOrder> stuQuery = new LambdaQueryWrapper<>();
stuQuery.eq(LogisticsOrder::getCompanyId, logisticsOrder.getCompanyId())
.orderByDesc(LogisticsOrder::getCreateTime)
.between(LogisticsOrder::getCreateTime, DateUtil.COMMON.getDateText(new Date())+" 00:00:00", DateUtil.COMMON.getDateText(new Date())+" 23:59:59")
.last("limit 1");
return getBaseMapper().selectOne(stuQuery);
}
} }

Loading…
Cancel
Save