Browse Source

1.完成 运单号 包条码 托盘码 异常单 的码值生成

dev-warehouse
zhenghaoyu 1 year ago
parent
commit
9170d5a79c
  1. 3
      blade-biz-common/src/main/java/org/springblade/common/constant/CodeDesEnum.java
  2. 19
      blade-biz-common/src/main/java/org/springblade/common/constant/CodeNumConstant.java
  3. 35
      blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  4. 2
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataCodeClient.java
  5. 7
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java
  6. 4
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataCodeClient.java
  7. 28
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataWarehouseClient.java
  8. 2
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataCodeService.java
  9. 129
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataCodeServiceImpl.java
  10. 11
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java

3
blade-biz-common/src/main/java/org/springblade/common/constant/CodeDesEnum.java

@ -13,7 +13,8 @@ public enum CodeDesEnum {
TRAYS(6,"TP"),
PACKAGE(7,"BJ"),
SHELF(8,"HJ"),
PSKH(9,"PSKH");
PSKH(9,"PSKH"),
EXCE(10,"PSKH");
private Integer codeNum;

19
blade-biz-common/src/main/java/org/springblade/common/constant/CodeNumConstant.java

@ -2,14 +2,15 @@ package org.springblade.common.constant;
public class CodeNumConstant {
public final static int WAYBILL = 1;
public final static int ORDER = 2;
public final static int PSCC = 3;
public final static int PSJH = 4;
public final static int LOCATION = 5;
public final static int TRAYS = 6;
public final static int PACKAGE = 7;
public final static int SHELF = 8;
public final static int PSKH = 9;
public final static int WAYBILL = 1;//运单号
public final static int ORDER = 2;//订单号
public final static int PSCC = 3;//配送车次号
public final static int PSJH = 4;//配送计划号
public final static int LOCATION = 5;//库位号
public final static int TRAYS = 6;//托盘号
public final static int PACKAGE = 7;//包件号
public final static int SHELF = 8;//货架号
public final static int PSKH = 9;//配送客户号
public final static int ABNORMAL_ORDER = 10;//异常工单号
}

35
blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@ -104,10 +104,25 @@ public class CommonUtil {
}
}
public static String dateToString(Date date){
if (!Objects.isNull(date)) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
return simpleDateFormat.format(date);
}
return null;
}
public static String dateToStringShort(Date date){
if (!Objects.isNull(date)) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyMMdd");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
return simpleDateFormat.format(date);
}
return null;
}
public static String dateToStringShortYM(Date date){
if (!Objects.isNull(date)) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
return simpleDateFormat.format(date);
}
return null;
@ -124,6 +139,24 @@ public class CommonUtil {
return calendar.getTime();
}
public static Date getMonthDayEnd(){
//获取一个Calendar对象
Calendar cal = Calendar.getInstance();
//获取当前时间
cal.setTime(new Date());
//获取当前月
cal.add(Calendar.MONTH, 0);
//获取当前月的最后一天
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
//得到当前月的最后一天
Date preMonth=cal.getTime();
return preMonth;
}
/**
* 数字前面自动补零
* @param number 数字

2
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataCodeClient.java

@ -13,6 +13,6 @@ public interface IBasicdataCodeClient {
String API_PREFIX = "/client";
@GetMapping(API_PREFIX+"/getCodeByType")
String getCodeByType(@RequestParam Integer type,@RequestParam String warehouseCode);
String getCodeByType(@RequestParam Integer type,@RequestParam String warehouseCode,@RequestParam String orderCode);
}

7
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java

@ -68,4 +68,11 @@ public interface IBasicdataWarehouseClient {
@PostMapping(API_PREFIX+"/addWarehouse")
Long addWarehouse(@RequestBody BasicdataWarehouseEntity newEntity);
@GetMapping(API_PREFIX+"/getWarehouseEntityByWarehouseCode")
BasicdataWarehouseEntity getWarehouseEntityByWarehouseCode(@RequestParam String warehouseCode);
@GetMapping(API_PREFIX+"/getWarehouseByDepartment")
BasicdataWarehouseEntity getWarehouseByDepartment(@RequestParam String deptId);
}

4
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataCodeClient.java

@ -13,7 +13,7 @@ public class BasicdataCodeClient implements IBasicdataCodeClient {
private final IBasicdataCodeService basicdataCodeService;
@Override
public String getCodeByType(Integer type,String warehouseCode) {
return basicdataCodeService.getCodeByType(type,warehouseCode);
public String getCodeByType(Integer type,String warehouseCode,String orderCode) {
return basicdataCodeService.getCodeByType(type,warehouseCode,orderCode);
}
}

28
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataWarehouseClient.java

@ -30,6 +30,9 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import java.util.Objects;
/**
* 仓库 Feign实现类
*
@ -91,4 +94,29 @@ public class BasicdataWarehouseClient implements IBasicdataWarehouseClient {
}
}
@Override
public BasicdataWarehouseEntity getWarehouseEntityByWarehouseCode(String warehouseCode) {
QueryWrapper<BasicdataWarehouseEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("warehouse_code",warehouseCode)
.eq("is_deleted",0)
.eq("enable_status",2);
List<BasicdataWarehouseEntity> list = warehouseWarehouseService.list(queryWrapper);
if(!Objects.isNull(list) && list.size()>0){
return list.get(0);
}else{
return null;
}
}
@Override
public BasicdataWarehouseEntity getWarehouseByDepartment(String deptId) {
QueryWrapper<BasicdataWarehouseEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("department",deptId)
.eq("is_deleted",0)
.eq("enable_status",2);
return warehouseWarehouseService.getOne(queryWrapper);
}
}

2
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataCodeService.java

@ -2,6 +2,6 @@ package com.logpm.basicdata.service;
public interface IBasicdataCodeService {
String getCodeByType(Integer type,String warehouseCode);
String getCodeByType(Integer type,String warehouseCode,String orderCode);
}

129
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataCodeServiceImpl.java

@ -1,6 +1,8 @@
package com.logpm.basicdata.service.impl;
import com.logpm.basic.feign.IBasicTenantCodeClient;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.basicdata.service.IBasicdataCodeService;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
@ -9,9 +11,11 @@ import org.springblade.common.constant.CodeNumConstant;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Objects;
@Service
@AllArgsConstructor
@ -22,7 +26,7 @@ public class BasicdataCodeServiceImpl implements IBasicdataCodeService {
private final IBasicTenantCodeClient basicTenantCodeClient;
// private final IWarehouseClient warehouseClient;
private final IBasicdataWarehouseClient basicdataWarehouseClient;
/**
* 根据类型生成编号
@ -30,29 +34,34 @@ public class BasicdataCodeServiceImpl implements IBasicdataCodeService {
* @return
*/
@Override
public String getCodeByType(Integer type,String warehouseCode) {
public String getCodeByType(Integer type,String warehouseCode,String orderCode) {
String code = null;
switch (type){
// case CodeNumConstant.WAYBILL:
// break;
case CodeNumConstant.WAYBILL:
code = getWayBillNo(type,warehouseCode);
break;
// case CodeNumConstant.ORDER:
// break;
case CodeNumConstant.PSCC:
code = generateDeliveryTrainNumber(type,warehouseCode);
break;
// case CodeNumConstant.PSCC:
// code = generateDeliveryTrainNumber(type,warehouseCode);
// break;
// case CodeNumConstant.PSJH:
// break;
// case CodeNumConstant.LOCATION:
// break;
// case CodeNumConstant.TRAYS:
// break;
case CodeNumConstant.TRAYS:
code = generateTraysCode(type,warehouseCode);
break;
case CodeNumConstant.PACKAGE:
code = generatePackageCode(type,warehouseCode);
code = generatePackageCode(type,warehouseCode,orderCode);
break;
// case CodeNumConstant.SHELF:
// break;
case CodeNumConstant.PSKH:
code = generateDeliveryCustomOrder(type,warehouseCode);
// case CodeNumConstant.PSKH:
// code = generateDeliveryCustomOrder(type,warehouseCode);
// break;
case CodeNumConstant.ABNORMAL_ORDER:
code = generateExOrderCode(type,warehouseCode,orderCode);
break;
default:
log.info("##################getCodeByType: 暂不支持的编码类型 type={}", CodeDesEnum.getMes(type));
@ -60,6 +69,81 @@ public class BasicdataCodeServiceImpl implements IBasicdataCodeService {
return code;
}
private String generateExOrderCode(Integer type, String warehouseCode, String orderCode) {
if(!StringUtil.hasLength(warehouseCode)){
log.warn("############generateTraysCode: 仓库编码为空warehouseCode={}",warehouseCode);
return null;
}
//HTEX+仓库code+年月日+(仓库当天的数量+1)
//获得年月日短字符串
String dateShort = CommonUtil.dateToStringShort(new Date());
String key = "HTEX"+":"+warehouseCode+":"+dateShort;
//获得序号
Long incr = bladeRedis.incr(key);
if(1 == incr){
//如果为1就是刚刚才建立,给他一个过期时间
bladeRedis.expireAt(key,CommonUtil.getMonthDayEnd());
}
return "HTEX"+warehouseCode+CommonUtil.geFourNumber(incr);
}
private String generateTraysCode(Integer type, String warehouseCode) {
if(!StringUtil.hasLength(warehouseCode)){
log.warn("############generateTraysCode: 仓库编码为空warehouseCode={}",warehouseCode);
return null;
}
//托盘 HT+仓库拼音+ 年月 +【当前仓库总数+1(五位数 不足补零)】
//通过仓库编码获取仓库简写
BasicdataWarehouseEntity entity = basicdataWarehouseClient.getWarehouseEntityByWarehouseCode(warehouseCode);
if(Objects.isNull(entity)){
log.warn("############generateTraysCode: 未找到对应仓库warehouseCode={}",warehouseCode);
return null;
}
String abbreviation = entity.getAbbreviation();//简称
//获得年月日短字符串
String dateShort = CommonUtil.dateToStringShortYM(new Date());
String key = "汇通"+":"+abbreviation+":"+dateShort;
//获得序号
Long incr = bladeRedis.incr(key);
if(1 == incr){
//如果为1就是刚刚才建立,给他一个过期时间
bladeRedis.expireAt(key,CommonUtil.getMonthDayEnd());
}
return "汇通"+abbreviation+dateShort+CommonUtil.geFourNumber(incr);
}
/**
* 生成仓库对应的运单号
* @param type
* @param warehouseCode
* @return
*/
private String getWayBillNo(Integer type, String warehouseCode) {
if(!StringUtil.hasLength(warehouseCode)){
log.warn("############getWayBillNo: 仓库编码为空warehouseCode={}",warehouseCode);
return null;
}
//运单 仓库拼音+年月+(仓库当月数量+1)
//获得年月日短字符串
String dateShort = CommonUtil.dateToStringShortYM(new Date());
String key = warehouseCode + ":" +dateShort;
//获得序号
Long incr = bladeRedis.incr(key);
if(1 == incr){
//如果为1就是刚刚才建立,给他一个过期时间
bladeRedis.expireAt(key,CommonUtil.getMonthDayEnd());
}
return warehouseCode+dateShort+CommonUtil.geFourNumber(incr);
}
private String generateDeliveryCustomOrder(Integer type, String warehouseCode) {
//查询租户编码
@ -106,16 +190,23 @@ public class BasicdataCodeServiceImpl implements IBasicdataCodeService {
}
private String generatePackageCode(Integer type,String warehouseCode) {
String des = CodeDesEnum.getMes(type);//摘要
String tenantId = AuthUtil.getTenantId();//租户号
// String tenantId = "627683";//租户号
private String generatePackageCode(Integer type,String warehouseCode,String orderCode) {
if(!StringUtil.hasLength(warehouseCode)){
log.warn("############generatePackageCode: 仓库编码为空warehouseCode={}",warehouseCode);
return null;
}
if(!StringUtil.hasLength(orderCode)){
log.warn("############generatePackageCode: 订单号为空orderCode={}",orderCode);
return null;
}
//包条 HT+仓库拼音/超管/职能+年月日时分秒+订单索引+包条个数索引
//获得年月日短字符串
String dateShort = CommonUtil.dateToStringShort(new Date());
String dateShort = CommonUtil.dateToString(new Date());
//redis的key
String key = tenantId + ":" + warehouseCode + ":" + des+":"+dateShort;
String key = warehouseCode + ":" + orderCode+":"+dateShort;
//获得序号
Long incr = bladeRedis.incr(key);
if(1 == incr){
@ -123,6 +214,6 @@ public class BasicdataCodeServiceImpl implements IBasicdataCodeService {
bladeRedis.expireAt(key,CommonUtil.getDayEnd());
}
return warehouseCode + des + dateShort + CommonUtil.geFourNumber(incr);
return "HT" + warehouseCode + dateShort + CommonUtil.geFourNumber(incr);
}
}

11
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java

@ -19,10 +19,11 @@ package com.logpm.distribution.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataCodeClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.dto.app.StockupDTO;
import com.logpm.distribution.entity.DistributionReservationEntity;
import com.logpm.distribution.entity.DistributionStockupEntity;
@ -76,6 +77,9 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
@Autowired
private IBasicdataCodeClient basicDataCodeClient;
@Autowired
private IBasicdataWarehouseClient basicdataWarehouseClient;
@Override
public IPage<DistributionStockupVO> selectDistributionStockupPage(IPage<DistributionStockupVO> page, DistributionStockupVO distributionStockup) {
@ -426,10 +430,13 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
throw new CustomerException(405,"包条数量与预约数量不正确");
}
String deptId = AuthUtil.getDeptId();
BasicdataWarehouseEntity basicdataWarehouseEntity = basicdataWarehouseClient.getWarehouseByDepartment(deptId);
List<String> ls = new ArrayList<>();
for (int i = 0 ; i < packageNum ; i++){
String packageCode = basicDataCodeClient.getCodeByType(CodeDesEnum.PACKAGE.getCodeNum(), "TESTCode");
String packageCode = basicDataCodeClient.getCodeByType(CodeDesEnum.PACKAGE.getCodeNum(), basicdataWarehouseEntity.getWarehouseCode(),null);//TODO 这个滴地方需要传入订单编号来区别是哪个订单的包件
ls.add(packageCode);
}

Loading…
Cancel
Save