diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/CodeDesEnum.java b/blade-biz-common/src/main/java/org/springblade/common/constant/CodeDesEnum.java index bac51f589..65e3dbee2 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/CodeDesEnum.java +++ b/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; diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/CodeNumConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/CodeNumConstant.java index c2db16a2f..c494a2990 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/CodeNumConstant.java +++ b/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;//异常工单号 } diff --git a/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java b/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java index 552fc31dc..2cc5d698e 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java +++ b/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 数字 diff --git a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataCodeClient.java b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataCodeClient.java index 04ab9332f..4d28599c8 100644 --- a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataCodeClient.java +++ b/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); } diff --git a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java index a48df2dd6..975f9c38b 100644 --- a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java +++ b/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); + } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataCodeClient.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataCodeClient.java index f43c5d99f..40abf0ddb 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataCodeClient.java +++ b/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); } } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataWarehouseClient.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataWarehouseClient.java index 152fbf27e..60a518478 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataWarehouseClient.java +++ b/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 queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("warehouse_code",warehouseCode) + .eq("is_deleted",0) + .eq("enable_status",2); + + List 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 queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("department",deptId) + .eq("is_deleted",0) + .eq("enable_status",2); + return warehouseWarehouseService.getOne(queryWrapper); + } + } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataCodeService.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataCodeService.java index 2a1a7debd..5c71c2826 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataCodeService.java +++ b/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); } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataCodeServiceImpl.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataCodeServiceImpl.java index 2e80ea922..a2f5c09d1 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataCodeServiceImpl.java +++ b/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); } } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java index 40253ecc2..842d6be22 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java +++ b/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 selectDistributionStockupPage(IPage page, DistributionStockupVO distributionStockup) { @@ -426,10 +430,13 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl 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); }