导入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.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
@ -71,6 +72,9 @@ public class ExcelController {
private final List<String> uploadFileHashStringList = new ArrayList<>();
@Value("${reqmtsDate}")
private boolean reqmtsDate;
/**
* 查询上传记录
*
@ -210,7 +214,7 @@ public class ExcelController {
// 获取之前DBS表的内容
Map<String, KateDBS> kateDbsMap = kateDbsService.list().stream().collect(Collectors.toMap(KateDBS::getWorkOrder, kateDBS -> kateDBS));
// 导入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"));
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));
// 导入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"));
uploadFileHashStringList.remove(fileVo.getHash());

View File

@ -276,6 +276,7 @@ public class KateWorkQueryController {
.set(kateOrdersQuery.getLackQuantity() != null, KateOrders::getLackQuantity, kateOrdersQuery.getLackQuantity())
.set(kateOrdersQuery.getPickedQuantity() != null, KateOrders::getPickedQuantity, kateOrdersQuery.getPickedQuantity())
.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::getUserName, kateOrdersQuery.getUserName())
.eq(KateOrders::getOrderId, kateOrdersQuery.getOrderId()));

View File

@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper = true)
@ -104,4 +105,12 @@ public class KateOrdersQuery extends PageQuery {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
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;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@ -105,4 +106,12 @@ public class KateOrdersVo {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
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 java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
@ -104,4 +105,9 @@ public class KateOrders {
*/
@TableField("finish_time")
private LocalDateTime finishTime;
/**
* 计划开工时间
*/
@TableField("plan_start_date")
private LocalDate planStartDate;
}

View File

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

View File

@ -14,6 +14,7 @@ import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@ -54,6 +55,11 @@ public class WorkServiceImplements implements IWorkService {
private final List<String> workCreatingStations = new ArrayList<>();// 当前正在创建任务的站台
private final VehicleService vehicleService;// 料箱服务
//获取配置文件的是否添加了需求时间
@Value("${reqmtsDate}")
private boolean isAddReqmtsDate;
/**
* 找到下一个工作日
*
@ -412,14 +418,20 @@ public class WorkServiceImplements implements IWorkService {
Map<String, KateDBS> ordersAndDBSMap = new HashMap<>();
for (KateOrders kateWorkOrder : kateWorkOrders) {
if (!ordersAndDBSMap.containsKey(kateWorkOrder.getWorkOrder())) {
LocalDateTime localDateTime = null;
// 从DBS表查询对应的工单以及开工时间
KateDBS kateDBS = allKateDBS.stream().filter(tempKateDBS ->
tempKateDBS.getWorkOrder().equals(kateWorkOrder.getWorkOrder())).findFirst().orElse(null);
if (kateDBS == null || StringUtils.isEmpty(kateDBS.getWorkOrder())) {// 不存在对应的工单计划
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) {
// 工作日不包含此开工日期
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> newKateDBSMap = new HashMap<>();// 新的DBS数据
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.oldKateDBSMap = oldKateDBSMap;
this.uploadUser = uploadUser;
this.isAddReqmtDate = isAddReqmtDate;
// 获取最大序列号
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) {
if (kateDbsExcelVo.getWorkSequence() != null
&& StringUtils.isNotEmpty(kateDbsExcelVo.getWorkOrder())
&& StringUtils.isNotEmpty(kateDbsExcelVo.getMachineNo())
&& kateDbsExcelVo.getPlanStartDate() != null) {
// 符合条件的数据
cachedDataList.add(kateDbsExcelVo);
&& StringUtils.isNotEmpty(kateDbsExcelVo.getMachineNo())) {
if(!isAddReqmtDate){
if(kateDbsExcelVo.getPlanStartDate() != null){
cachedDataList.add(kateDbsExcelVo);
}
}else{
cachedDataList.add(kateDbsExcelVo);
}
}
// 达到BATCH_COUNT了需要去存储一次数据库防止数据几万条数据在内存容易OOM
if (cachedDataList.size() >= BATCH_COUNT) {

View File

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

View File

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