导入workOrder新增一列需求时间待定

This commit is contained in:
bo.wu@finesys.com.cn 2025-06-26 19:45:20 +08:00
parent c54ee29613
commit 62aece5bbd
10 changed files with 81 additions and 12 deletions

View File

@ -26,6 +26,7 @@ import lombok.RequiredArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
@ -71,6 +72,9 @@ public class ExcelController {
private final List<String> uploadFileHashStringList = new ArrayList<>(); private final List<String> uploadFileHashStringList = new ArrayList<>();
@Value("${reqmtsDate}")
private boolean reqmtsDate;
/** /**
* 查询上传记录 * 查询上传记录
* *
@ -210,7 +214,7 @@ public class ExcelController {
// 获取之前DBS表的内容 // 获取之前DBS表的内容
Map<String, KateDBS> kateDbsMap = kateDbsService.list().stream().collect(Collectors.toMap(KateDBS::getWorkOrder, kateDBS -> kateDBS)); Map<String, KateDBS> kateDbsMap = kateDbsService.list().stream().collect(Collectors.toMap(KateDBS::getWorkOrder, kateDBS -> kateDBS));
// 导入excel // 导入excel
EasyExcel.read(file.getInputStream(), KateDbsExcelVo.class, new UploadDbsListener(kateDbsService, kateDbsMap, fileVo.getUserName())).sheet().headRowNumber(8).doRead(); EasyExcel.read(file.getInputStream(), KateDbsExcelVo.class, new UploadDbsListener(kateDbsService, kateDbsMap, fileVo.getUserName(),reqmtsDate)).sheet().headRowNumber(8).doRead();
// 添加导入记录 // 添加导入记录
uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "DBS")); uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "DBS"));
uploadFileHashStringList.remove(fileVo.getHash()); uploadFileHashStringList.remove(fileVo.getHash());
@ -251,7 +255,7 @@ public class ExcelController {
// 获取之前工单表的内容 // 获取之前工单表的内容
Map<String, KateOrders> kateOrdersMap = kateOrdersService.list().stream().collect(Collectors.toMap(kateOrders -> kateOrders.getWorkOrder() + kateOrders.getGoodsId() + kateOrders.getSupplyArea(), kateOrders -> kateOrders)); Map<String, KateOrders> kateOrdersMap = kateOrdersService.list().stream().collect(Collectors.toMap(kateOrders -> kateOrders.getWorkOrder() + kateOrders.getGoodsId() + kateOrders.getSupplyArea(), kateOrders -> kateOrders));
// 导入excel // 导入excel
EasyExcel.read(file.getInputStream(), KateOrdersExcelVo.class, new UploadKateOrdersListener(kateOrdersService, kateOrdersMap, fileVo.getUserName())).sheet().doRead(); EasyExcel.read(file.getInputStream(), KateOrdersExcelVo.class, new UploadKateOrdersListener(kateOrdersService, kateOrdersMap, fileVo.getUserName(),reqmtsDate)).sheet().doRead();
// 添加导入记录 // 添加导入记录
uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "ORDERS")); uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "ORDERS"));
uploadFileHashStringList.remove(fileVo.getHash()); uploadFileHashStringList.remove(fileVo.getHash());

View File

@ -276,6 +276,7 @@ public class KateWorkQueryController {
.set(kateOrdersQuery.getLackQuantity() != null, KateOrders::getLackQuantity, kateOrdersQuery.getLackQuantity()) .set(kateOrdersQuery.getLackQuantity() != null, KateOrders::getLackQuantity, kateOrdersQuery.getLackQuantity())
.set(kateOrdersQuery.getPickedQuantity() != null, KateOrders::getPickedQuantity, kateOrdersQuery.getPickedQuantity()) .set(kateOrdersQuery.getPickedQuantity() != null, KateOrders::getPickedQuantity, kateOrdersQuery.getPickedQuantity())
.set(kateOrdersQuery.getRequirementQuantity() != null, KateOrders::getRequirementQuantity, kateOrdersQuery.getRequirementQuantity()) .set(kateOrdersQuery.getRequirementQuantity() != null, KateOrders::getRequirementQuantity, kateOrdersQuery.getRequirementQuantity())
.set(kateOrdersQuery.getPlanStartDate() != null, KateOrders::getPlanStartDate, kateOrdersQuery.getPlanStartDate())
.set(kateOrdersQuery.getOrderStatus() == 4, KateOrders::getFinishTime, LocalDateTime.now()) .set(kateOrdersQuery.getOrderStatus() == 4, KateOrders::getFinishTime, LocalDateTime.now())
.set(kateOrdersQuery.getOrderStatus() == 4, KateOrders::getUserName, kateOrdersQuery.getUserName()) .set(kateOrdersQuery.getOrderStatus() == 4, KateOrders::getUserName, kateOrdersQuery.getUserName())
.eq(KateOrders::getOrderId, kateOrdersQuery.getOrderId())); .eq(KateOrders::getOrderId, kateOrdersQuery.getOrderId()));

View File

@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -104,4 +105,12 @@ public class KateOrdersQuery extends PageQuery {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime finishTime; private LocalDateTime finishTime;
/**
* 计划开工时间
*/
@JsonProperty("planStartDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate planStartDate;
} }

View File

@ -1,5 +1,6 @@
package com.wms.entity.app.vo; package com.wms.entity.app.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
@ -105,4 +106,12 @@ public class KateOrdersVo {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime finishTime; private LocalDateTime finishTime;
/**
* 计划开工时间
*/
@JsonProperty("planStartDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime planStartDate;
} }

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@ -104,4 +105,9 @@ public class KateOrders {
*/ */
@TableField("finish_time") @TableField("finish_time")
private LocalDateTime finishTime; private LocalDateTime finishTime;
/**
* 计划开工时间
*/
@TableField("plan_start_date")
private LocalDate planStartDate;
} }

View File

@ -364,7 +364,8 @@ public class WmsTaskServiceImplements implements IWmsTaskService {
} }
return needNum; return needNum;
} catch (Exception e) { } catch (Exception e) {
logger.error("呼叫物料时发生异常:{}", convertJsonString(e)); e.printStackTrace();
logger.error("呼叫物料时发生异常:{}", e.getMessage());
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return originNum; return originNum;

View File

@ -14,6 +14,7 @@ import lombok.RequiredArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
@ -54,6 +55,11 @@ public class WorkServiceImplements implements IWorkService {
private final List<String> workCreatingStations = new ArrayList<>();// 当前正在创建任务的站台 private final List<String> workCreatingStations = new ArrayList<>();// 当前正在创建任务的站台
private final VehicleService vehicleService;// 料箱服务 private final VehicleService vehicleService;// 料箱服务
//获取配置文件的是否添加了需求时间
@Value("${reqmtsDate}")
private boolean isAddReqmtsDate;
/** /**
* 找到下一个工作日 * 找到下一个工作日
* *
@ -412,14 +418,20 @@ public class WorkServiceImplements implements IWorkService {
Map<String, KateDBS> ordersAndDBSMap = new HashMap<>(); Map<String, KateDBS> ordersAndDBSMap = new HashMap<>();
for (KateOrders kateWorkOrder : kateWorkOrders) { for (KateOrders kateWorkOrder : kateWorkOrders) {
if (!ordersAndDBSMap.containsKey(kateWorkOrder.getWorkOrder())) { if (!ordersAndDBSMap.containsKey(kateWorkOrder.getWorkOrder())) {
LocalDateTime localDateTime = null;
// 从DBS表查询对应的工单以及开工时间 // 从DBS表查询对应的工单以及开工时间
KateDBS kateDBS = allKateDBS.stream().filter(tempKateDBS -> KateDBS kateDBS = allKateDBS.stream().filter(tempKateDBS ->
tempKateDBS.getWorkOrder().equals(kateWorkOrder.getWorkOrder())).findFirst().orElse(null); tempKateDBS.getWorkOrder().equals(kateWorkOrder.getWorkOrder())).findFirst().orElse(null);
if (kateDBS == null || StringUtils.isEmpty(kateDBS.getWorkOrder())) {// 不存在对应的工单计划 if (kateDBS == null || StringUtils.isEmpty(kateDBS.getWorkOrder())) {// 不存在对应的工单计划
continue; continue;
} }
if(!isAddReqmtsDate) {
localDateTime = kateDBS.getPlanStartDate();
}else{
localDateTime = kateWorkOrder.getPlanStartDate().atStartOfDay();
}
// 判断是否是当天开工 // 判断是否是当天开工
int indexOfDbs = localWorkDateList.indexOf(kateDBS.getPlanStartDate().toLocalDate()); int indexOfDbs = localWorkDateList.indexOf(localDateTime.toLocalDate());
if (indexOfDbs == -1) { if (indexOfDbs == -1) {
// 工作日不包含此开工日期 // 工作日不包含此开工日期
continue; continue;

View File

@ -32,10 +32,12 @@ public class UploadDbsListener implements ReadListener<KateDbsExcelVo> {
private final Map<String, KateDBS> oldKateDBSMap;// 旧的DBS数据 private final Map<String, KateDBS> oldKateDBSMap;// 旧的DBS数据
private final Map<String, KateDBS> newKateDBSMap = new HashMap<>();// 新的DBS数据 private final Map<String, KateDBS> newKateDBSMap = new HashMap<>();// 新的DBS数据
private final int maxSequence; private final int maxSequence;
public UploadDbsListener(KateDBSService kateDBSService, Map<String, KateDBS> oldKateDBSMap, String uploadUser) { private final boolean isAddReqmtDate;
public UploadDbsListener(KateDBSService kateDBSService, Map<String, KateDBS> oldKateDBSMap, String uploadUser, boolean isAddReqmtDate) {
this.kateDBSService = kateDBSService; this.kateDBSService = kateDBSService;
this.oldKateDBSMap = oldKateDBSMap; this.oldKateDBSMap = oldKateDBSMap;
this.uploadUser = uploadUser; this.uploadUser = uploadUser;
this.isAddReqmtDate = isAddReqmtDate;
// 获取最大序列号 // 获取最大序列号
maxSequence = oldKateDBSMap.values().stream().mapToInt(KateDBS::getWorkSequence).max().orElse(0); maxSequence = oldKateDBSMap.values().stream().mapToInt(KateDBS::getWorkSequence).max().orElse(0);
} }
@ -57,10 +59,15 @@ public class UploadDbsListener implements ReadListener<KateDbsExcelVo> {
public void invoke(KateDbsExcelVo kateDbsExcelVo, AnalysisContext analysisContext) { public void invoke(KateDbsExcelVo kateDbsExcelVo, AnalysisContext analysisContext) {
if (kateDbsExcelVo.getWorkSequence() != null if (kateDbsExcelVo.getWorkSequence() != null
&& StringUtils.isNotEmpty(kateDbsExcelVo.getWorkOrder()) && StringUtils.isNotEmpty(kateDbsExcelVo.getWorkOrder())
&& StringUtils.isNotEmpty(kateDbsExcelVo.getMachineNo()) && StringUtils.isNotEmpty(kateDbsExcelVo.getMachineNo())) {
&& kateDbsExcelVo.getPlanStartDate() != null) { if(!isAddReqmtDate){
// 符合条件的数据 if(kateDbsExcelVo.getPlanStartDate() != null){
cachedDataList.add(kateDbsExcelVo); cachedDataList.add(kateDbsExcelVo);
}
}else{
cachedDataList.add(kateDbsExcelVo);
}
} }
// 达到BATCH_COUNT了需要去存储一次数据库防止数据几万条数据在内存容易OOM // 达到BATCH_COUNT了需要去存储一次数据库防止数据几万条数据在内存容易OOM
if (cachedDataList.size() >= BATCH_COUNT) { if (cachedDataList.size() >= BATCH_COUNT) {

View File

@ -35,11 +35,13 @@ public class UploadKateOrdersListener implements ReadListener<KateOrdersExcelVo>
private final String uploadUser;// 用户 private final String uploadUser;// 用户
private final Map<String, KateOrders> oldKateOrdersMap;// 旧的工单数据 private final Map<String, KateOrders> oldKateOrdersMap;// 旧的工单数据
private final Map<String, KateOrders> newKateOrdersMap = new HashMap<>();// 新的工单数据 private final Map<String, KateOrders> newKateOrdersMap = new HashMap<>();// 新的工单数据
private final boolean isAddReqmtDate;
public UploadKateOrdersListener(KateOrdersService kateOrdersService, Map<String, KateOrders> oldKateOrdersMap, String uploadUser) { public UploadKateOrdersListener(KateOrdersService kateOrdersService, Map<String, KateOrders> oldKateOrdersMap, String uploadUser, boolean isAddReqmtDate) {
this.kateOrdersService = kateOrdersService; this.kateOrdersService = kateOrdersService;
this.oldKateOrdersMap = oldKateOrdersMap; this.oldKateOrdersMap = oldKateOrdersMap;
this.uploadUser = uploadUser; this.uploadUser = uploadUser;
this.isAddReqmtDate = isAddReqmtDate;
} }
@Override @Override
@ -65,8 +67,14 @@ public class UploadKateOrdersListener implements ReadListener<KateOrdersExcelVo>
&& StringUtils.isNotEmpty(kateOrdersExcelVo.getSupplyArea()) && StringUtils.isNotEmpty(kateOrdersExcelVo.getSupplyArea())
&& kateOrdersExcelVo.getRequirementQuantity() != null && kateOrdersExcelVo.getRequirementQuantity() != null
&& kateOrdersExcelVo.getRequirementQuantity().compareTo(BigDecimal.ZERO) > 0) { && kateOrdersExcelVo.getRequirementQuantity().compareTo(BigDecimal.ZERO) > 0) {
// 符合条件 if(isAddReqmtDate){
cachedDataList.add(kateOrdersExcelVo); if(kateOrdersExcelVo.getPlanStartDate() != null){
cachedDataList.add(kateOrdersExcelVo);
}
}else {
// 符合条件
cachedDataList.add(kateOrdersExcelVo);
}
} }
} }
// 达到BATCH_COUNT了需要去存储一次数据库防止数据几万条数据在内存容易OOM // 达到BATCH_COUNT了需要去存储一次数据库防止数据几万条数据在内存容易OOM
@ -124,6 +132,10 @@ public class UploadKateOrdersListener implements ReadListener<KateOrdersExcelVo>
newKateOrders.setLackQuantity(kateOrdersExcelVo.getRequirementQuantity()); newKateOrders.setLackQuantity(kateOrdersExcelVo.getRequirementQuantity());
newKateOrders.setPickedQuantity(BigDecimal.ZERO); newKateOrders.setPickedQuantity(BigDecimal.ZERO);
newKateOrders.setUserName(uploadUser); newKateOrders.setUserName(uploadUser);
//计划开工时间这个替换后面的dbs的计划开始时间
if(isAddReqmtDate) {
newKateOrders.setPlanStartDate(kateOrdersExcelVo.getPlanStartDate());
}
newKateOrdersMap.put(key, newKateOrders); newKateOrdersMap.put(key, newKateOrders);
} }
} }

View File

@ -2,6 +2,7 @@ package com.wms.utils.excel.vo;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.wms.entity.table.KateOrders; import com.wms.entity.table.KateOrders;
@ -9,6 +10,7 @@ import com.wms.entity.table.Location;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
@ -103,6 +105,12 @@ public class KateOrdersExcelVo {
*/ */
@ExcelProperty("完成时间") @ExcelProperty("完成时间")
private LocalDateTime finishTime; private LocalDateTime finishTime;
/**
* 计划开始时间
*/
@ExcelProperty("ReqmtsDate")
@DateTimeFormat("yyyy/MM/dd")
private LocalDate planStartDate;
/** /**
* 从数据库实体转换为excel对象 * 从数据库实体转换为excel对象