src/main/java/com/zy/asrs/controller/OutController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/StockOutParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/utils/YyyyMmddUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OutController.java
@@ -169,7 +169,9 @@ param.setLocDetls(locDetls); List<StockOutParam> stockOutParams = OutboundAllocationUtil.OutboundClassification(param); Date now = new Date(); for (StockOutParam stockOutParam : stockOutParams){ stockOutParam.setNowTime(now); workService.startupFullTakeStore(stockOutParam, getUserId()); } src/main/java/com/zy/asrs/entity/param/StockOutParam.java
@@ -2,6 +2,7 @@ import lombok.Data; import java.util.Date; import java.util.List; /** @@ -14,6 +15,7 @@ private Integer outSite; private String orderNo; private String cstmrName; private Date nowTime; // 物料编号集合 private List<LocDetl> locDetls; src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -20,6 +20,7 @@ import com.zy.common.model.enums.WorkNoType; import com.zy.common.properties.SlaveProperties; import com.zy.common.service.CommonService; import com.zy.common.utils.YyyyMmddUtils; import com.zy.common.web.WcsController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -165,6 +166,7 @@ @Transactional public void startupFullTakeStore(StockOutParam param, Long userId) { // 目标站点状态检测 Date now = param.getNowTime(); BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); // 获取库位明细 List<LocDetlDto> locDetlDtos = new ArrayList<>(); @@ -180,6 +182,7 @@ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ){ // 启动出库开始 101.出库 staNo.setModiTime(now); stockOut(staNo, locDetlDtos, null, userId); }else { throw new CoolException("所选库位存在状态不为F、D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$()); @@ -394,6 +397,7 @@ @Transactional public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) { Date now = new Date(); Date nowPri = staNo.getModiTime(); // 合并同类项 Set<String> locNos = new HashSet<>(); List<OutLocDto> dtos = new ArrayList<>(); @@ -439,7 +443,9 @@ wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(ioType); // 入出库状态 Integer pri = YyyyMmddUtils.convertPri(nowPri); wrkMast.setIoType(pri); // 入出库状态 wrkMast.setIoPri(13D); // 优先级:13 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 src/main/java/com/zy/common/utils/YyyyMmddUtils.java
New file @@ -0,0 +1,80 @@ package com.zy.common.utils; import com.core.common.DateUtils; import java.time.Duration; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.util.Date; public class YyyyMmddUtils { public static String convertYyyyMMdd() { return DateUtils.convert(new Date(), "MMdd"); } public static String convertYyyyMMdd(Date date) { return DateUtils.convert(date, "MMdd"); } public static long convertYyyyMMdd100000() { String convert = convertYyyyMMdd(); return 100000*(Long.valueOf(convert)); } public static long convertYyyyMMdd100000(Date date) { String convert = convertYyyyMMdd(date); return 100000*(Long.valueOf(convert)); } public static LocalTime convertToBeijingTime(Date date) { return date.toInstant() // Date -> Instant(时间戳) .atZone(ZoneId.of("Asia/Shanghai")) // 绑定北京时区(UTC+8) .toLocalTime(); // 提取时间部分 } public static LocalDateTime convert(Date date) { return date.toInstant() // 将 Date 转换为 Instant(时间戳) .atZone(ZoneId.systemDefault()) // 绑定系统默认时区 .toLocalDateTime(); // 提取无时区的日期时间 } // 基于 java.time 的实现(线程安全且简洁) public static long getSecondsOfDay(Date date) { // 1. 获取当天零点时间(系统时区) LocalDateTime startOfDay = LocalDateTime.now().with(LocalTime.MIN); // 2. 获取当前时间 LocalDateTime currentTime = convert(date); // 3. 计算时间差的秒数 long secondsSinceMidnight = Duration.between(startOfDay, currentTime).getSeconds(); return secondsSinceMidnight; } // 原方法改造(带 Date 参数) public static long convertYyyyMMdd100000ioPri(Date data) { long ioPri = convertYyyyMMdd100000(data); long secondsOfDay = getSecondsOfDay(data); System.out.println(secondsOfDay); return ioPri + (1000000 - secondsOfDay); } // 重载方法(兼容无 Date 参数的调用) public static long convertYyyyMMdd1000000ioPri() { return convertYyyyMMdd100000ioPri(new Date()); } // 重载方法(兼容无 Date 参数的调用) public static Integer convertPri(Date date) { long datePri = convertYyyyMMdd100000ioPri(date); return (int)datePri; } public static void main(String[] args) { Date now = new Date(); long result = YyyyMmddUtils.convertYyyyMMdd100000ioPri(now); System.out.println("计算值:" + result); System.out.println("计算值:" + (int)result); } }