This commit is contained in:
李宇奇 2025-04-11 18:08:35 +08:00
commit cbb9332e64
13 changed files with 1559 additions and 1116 deletions

View File

@ -153,3 +153,12 @@ export const closeCurrentWorks = (params) => {
timeout: 5000
})
}
// 请求料盒标签数据
export const requestPrintBoxTags = (params) => {
return request({
url: '/kate/requestPrintBoxTags',
method: 'post',
data: params,
timeout: 5000
})
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
package com.wms_main.controller.wms;
import com.wms_main.model.bo.wms.BoxSummary;
import com.wms_main.model.dto.query.*;
import com.wms_main.model.dto.request.wms.*;
import com.wms_main.model.dto.response.wms.BaseWmsApiResponse;
@ -164,12 +165,12 @@ public class KateWorkController {
/**
* 查询当前站台待工作的物料列表
* @param workSummaryQuery 查询参数
* @param kateWorksQuery 查询参数
* @return 查询结果
*/
@PostMapping("/getLackGoods")
public WmsApiResponse<List<KateWorkVo>> getLackGoods(@RequestBody WorkSummaryQuery workSummaryQuery) {
return kateWorkControllerService.getLackGoods(workSummaryQuery);
public WmsApiResponse<List<KateWorkVo>> getLackGoods(@RequestBody KateWorksQuery kateWorksQuery) {
return kateWorkControllerService.getLackGoods(kateWorksQuery);
}
/**
@ -191,4 +192,14 @@ public class KateWorkController {
public BaseWmsApiResponse closeCurrentWorks(@RequestBody UpdateWorkRequest closeWorkRequest) {
return kateWorkControllerService.closeCurrentWorks(closeWorkRequest);
}
/**
* 请求打印料盒标签
* @param kateWorksQuery 查询参数
* @return 需要打印的料盒标签
*/
@PostMapping("/requestPrintBoxTags")
WmsApiResponse<BoxSummary> requestPrintBoxTags(@RequestBody KateWorksQuery kateWorksQuery) {
return kateWorkControllerService.requestPrintBoxTags(kateWorksQuery);
}
}

View File

@ -180,6 +180,9 @@ public class ExportExcelEasyPoi extends BaseExportExcelEasyPoi implements IExpor
// 未关闭订单
List<TAppWork> poList = appWorkService.list(new LambdaQueryWrapper<TAppWork>()
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkOrder()), TAppWork::getWorkOrder, workSummaryQuery.getWorkOrder())
.like(StringUtils.isNotEmpty(workSummaryQuery.getProductId()), TAppWork::getProductId, workSummaryQuery.getProductId())
.like(StringUtils.isNotEmpty(workSummaryQuery.getSingleProductId()), TAppWork::getSingleProductId, workSummaryQuery.getSingleProductId())
.like(StringUtils.isNotEmpty(workSummaryQuery.getBoxNo()), TAppWork::getBoxNo, workSummaryQuery.getBoxNo())
.eq(workSummaryQuery.getWorkStatus() != null, TAppWork::getWorkStatus, workSummaryQuery.getWorkStatus())
.eq(workSummaryQuery.getLackStatus() != null, TAppWork::getLackStatus, workSummaryQuery.getLackStatus()));
// excel模版列表
@ -215,6 +218,9 @@ public class ExportExcelEasyPoi extends BaseExportExcelEasyPoi implements IExpor
// 已关闭订单
List<TAppWorkRecord> poList = appWorkRecordService.list(new LambdaQueryWrapper<TAppWorkRecord>()
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkOrder()), TAppWorkRecord::getWorkOrder, workSummaryQuery.getWorkOrder())
.like(StringUtils.isNotEmpty(workSummaryQuery.getProductId()), TAppWorkRecord::getProductId, workSummaryQuery.getProductId())
.like(StringUtils.isNotEmpty(workSummaryQuery.getSingleProductId()), TAppWorkRecord::getSingleProductId, workSummaryQuery.getSingleProductId())
.like(StringUtils.isNotEmpty(workSummaryQuery.getBoxNo()), TAppWorkRecord::getBoxNo, workSummaryQuery.getBoxNo())
.eq(workSummaryQuery.getWorkStatus() != null, TAppWorkRecord::getWorkStatus, workSummaryQuery.getWorkStatus())
.eq(workSummaryQuery.getLackStatus() != null, TAppWorkRecord::getLackStatus, workSummaryQuery.getLackStatus()));
// excel模版列表

View File

@ -416,6 +416,8 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
return BaseWmsApiResponse.error("符合条件数据行为0。");
}
try {
// 先清除数据
tAppGoodsService.remove(new LambdaQueryWrapper<>());
// 保存数据
tAppGoodsService.saveOrUpdateBatch(goodsList);
// 更新common
@ -468,7 +470,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
}
try {
// 先移除这些物料的看板
tAppKanbanService.remove(new LambdaQueryWrapper<TAppKanban>().in(TAppKanban::getGoodsId, kanbanListMap.keySet()));
tAppKanbanService.remove(new LambdaQueryWrapper<>());
// 转换保存数据
List<TAppKanban> kanbanList = new ArrayList<>();
kanbanListMap.values().forEach(kanbanList::addAll);

View File

@ -7,6 +7,8 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* 数据库出库单表映射
*/
@ -66,4 +68,9 @@ public class TAppOuts {
*/
@TableField(value = "reason")
private String reason;
/**
* 请求时间
*/
@TableField(value = "request_time")
private LocalDateTime requestTime;
}

View File

@ -7,6 +7,8 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* 数据库出库单表映射
*/
@ -66,4 +68,9 @@ public class TAppOutsRecord {
*/
@TableField(value = "reason")
private String reason;
/**
* 请求时间
*/
@TableField(value = "request_time")
private LocalDateTime requestTime;
}

View File

@ -1,5 +1,6 @@
package com.wms_main.service.controller;
import com.wms_main.model.bo.wms.BoxSummary;
import com.wms_main.model.dto.query.*;
import com.wms_main.model.dto.request.wms.*;
import com.wms_main.model.dto.response.wms.BaseWmsApiResponse;
@ -112,10 +113,10 @@ public interface IKateWorkControllerService {
/**
* 查询当前站台待工作的物料列表
* @param workSummaryQuery 查询参数
* @param kateWorksQuery 查询参数
* @return 查询结果---分页
*/
WmsApiResponse<List<KateWorkVo>> getLackGoods(WorkSummaryQuery workSummaryQuery);
WmsApiResponse<List<KateWorkVo>> getLackGoods(KateWorksQuery kateWorksQuery);
/**
* 更新当前工作流
@ -130,4 +131,11 @@ public interface IKateWorkControllerService {
* @return 关闭结果
*/
BaseWmsApiResponse closeCurrentWorks(UpdateWorkRequest closeWorkRequest);
/**
* 请求打印料盒标签
* @param kateWorksQuery 查询参数
* @return 需要打印的料盒标签
*/
WmsApiResponse<BoxSummary> requestPrintBoxTags(KateWorksQuery kateWorksQuery);
}

View File

@ -929,6 +929,9 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
Page<TAppWorkRecord> page = workSummaryQuery.toMpPage();
LambdaQueryWrapper<TAppWorkRecord> lambdaQueryWrapper = new LambdaQueryWrapper<TAppWorkRecord>()
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkOrder()), TAppWorkRecord::getWorkOrder, workSummaryQuery.getWorkOrder())
.like(StringUtils.isNotEmpty(workSummaryQuery.getProductId()), TAppWorkRecord::getProductId, workSummaryQuery.getProductId())
.like(StringUtils.isNotEmpty(workSummaryQuery.getSingleProductId()), TAppWorkRecord::getSingleProductId, workSummaryQuery.getSingleProductId())
.like(StringUtils.isNotEmpty(workSummaryQuery.getBoxNo()), TAppWorkRecord::getBoxNo, workSummaryQuery.getBoxNo())
.eq(workSummaryQuery.getWorkStatus() != null, TAppWorkRecord::getWorkStatus, workSummaryQuery.getWorkStatus())
.eq(workSummaryQuery.getLackStatus() != null, TAppWorkRecord::getLackStatus, workSummaryQuery.getLackStatus());
Page<TAppWorkRecord> pagePo = appWorkRecordService.page(page, lambdaQueryWrapper);
@ -973,19 +976,19 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
/**
* 查询缺料列表
*
* @param workSummaryQuery 查询参数
* @param kateWorksQuery 查询参数
* @return 查询结果
*/
@Override
public WmsApiResponse<List<KateWorkVo>> getLackGoods(WorkSummaryQuery workSummaryQuery) {
if (workSummaryQuery == null) {
public WmsApiResponse<List<KateWorkVo>> getLackGoods(KateWorksQuery kateWorksQuery) {
if (kateWorksQuery == null) {
return WmsApiResponse.error("查询参数为空。", null);
}
LambdaQueryWrapper<TAppWork> lambdaQueryWrapper = new LambdaQueryWrapper<TAppWork>()
.eq(TAppWork::getWorkOrder, workSummaryQuery.getWorkOrder())
.eq(TAppWork::getProductId, workSummaryQuery.getProductId())
.eq(StringUtils.isNotEmpty(workSummaryQuery.getSingleProductId()), TAppWork::getSingleProductId, workSummaryQuery.getSingleProductId())
.eq(TAppWork::getBoxNo, workSummaryQuery.getBoxNo())
.eq(TAppWork::getWorkOrder, kateWorksQuery.getWorkOrder())
.eq(StringUtils.isNotEmpty(kateWorksQuery.getProductId()), TAppWork::getProductId, kateWorksQuery.getProductId())
.eq(StringUtils.isNotEmpty(kateWorksQuery.getSingleProductId()), TAppWork::getSingleProductId, kateWorksQuery.getSingleProductId())
.eq(TAppWork::getBoxNo, kateWorksQuery.getBoxNo())
.eq(TAppWork::getLackStatus, 1);
List<TAppWork> poList = appWorkService.list(lambdaQueryWrapper);
if (poList == null || poList.isEmpty()) {
@ -1070,6 +1073,116 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
return BaseWmsApiResponse.success("关闭缺料工作成功。");
}
/**
* 获取料盒打印标签数量
* @param kateWorksQuery 查询参数
* @return 标签信息
*/
@Override
public WmsApiResponse<BoxSummary> requestPrintBoxTags(KateWorksQuery kateWorksQuery) {
if (kateWorksQuery == null) {
// 站台号不能为空
return WmsApiResponse.error("请求为空。", null);
}
if (StringUtils.isEmpty(kateWorksQuery.getWorkOrder())) {
return WmsApiResponse.error("请求缺少工单号。", null);
}
if (StringUtils.isEmpty(kateWorksQuery.getBoxNo())) {
return WmsApiResponse.error("请求缺少料盒号。", null);
}
// 查询对应的dbs
List<TAppDbs> dbsList = appDbsService.list(new LambdaQueryWrapper<TAppDbs>()
.eq(TAppDbs::getWorkOrder, kateWorksQuery.getWorkOrder()));
if (dbsList == null || dbsList.isEmpty()) {
return WmsApiResponse.error("DBS数据异常不存在工单" + kateWorksQuery.getWorkOrder() + "", null);
}
TAppDbs thisDbs = dbsList.getFirst();
// 计划产量
int planProduction = thisDbs.getPlanProduction();
// 结果集
BoxSummary boxSummary = new BoxSummary();
boxSummary.setWorkOrder(thisDbs.getWorkOrder());
boxSummary.setTaoQty(planProduction);
boxSummary.setSingleProductId(kateWorksQuery.getSingleProductId());
boxSummary.setBoxNo(kateWorksQuery.getBoxNo());
// 设置打印标签相关的信息
boxSummary.setProductIdOrigin(thisDbs.getProductIdOrigin());
boxSummary.setKittingDate(thisDbs.getTestPlanStartDate());
boxSummary.setProduceDate(thisDbs.getPntPlanStartDate());
boxSummary.setTestNo(thisDbs.getTestNo());
boxSummary.setProductionQty(planProduction);
// 服务件
List<TAppSingleProduct> singleProductList;
// 非服务件
List<TAppProduct> productList = new ArrayList<>();
// 查询对应料盒信息
String queryProductId = thisDbs.getProductIdOrigin();
if (StringUtils.isNotEmpty(kateWorksQuery.getSingleProductId())) {
// 输入单片号
queryProductId = kateWorksQuery.getSingleProductId();
// 查询服务件
singleProductList = appSingleProductService.list(new LambdaQueryWrapper<TAppSingleProduct>()
.eq(TAppSingleProduct::getProductId, queryProductId)
.eq(TAppSingleProduct::getBoxNo, kateWorksQuery.getBoxNo()));
if (singleProductList.isEmpty()) {
// 查询非服务件
productList = appProductService.list(new LambdaQueryWrapper<TAppProduct>()
.eq(TAppProduct::getProductId, queryProductId)
.eq(TAppProduct::getBoxNo, kateWorksQuery.getBoxNo()));
}
} else {
// 查询服务件
singleProductList = appSingleProductService.list(new LambdaQueryWrapper<TAppSingleProduct>()
.eq(TAppSingleProduct::getProductId, queryProductId)
.eq(TAppSingleProduct::getBoxNo, kateWorksQuery.getBoxNo()));
if (singleProductList.isEmpty()) {
queryProductId = thisDbs.getProductId();
// 查询非服务件
productList = appProductService.list(new LambdaQueryWrapper<TAppProduct>()
.eq(TAppProduct::getProductId, queryProductId)
.eq(TAppProduct::getBoxNo, kateWorksQuery.getBoxNo()));
}
}
if (singleProductList.isEmpty() && productList.isEmpty()) {
return WmsApiResponse.error("数据异常:配料单信息缺失。", null);
}
// 查询到对应的图纸信息
List<TAppImage> imageList = appImageService.list(new LambdaQueryWrapper<TAppImage>()
.eq(TAppImage::getProductId, queryProductId)
.eq(TAppImage::getBoxNo, kateWorksQuery.getBoxNo()));
if (imageList != null && !imageList.isEmpty()) {
boxSummary.setImageId(imageList.getFirst().getImageId());
}
// 最大料盒数量
int maxBoxQty = 0;
if (!singleProductList.isEmpty()) {
boxSummary.setProductId(thisDbs.getProductIdOrigin());
// 处理服务件
for (TAppSingleProduct singleProduct : singleProductList) {
// 设置料盒数量
int tempBoxQty = Math.ceilDiv(planProduction, singleProduct.getQuantityOfPair());
if (tempBoxQty > maxBoxQty) {
maxBoxQty = tempBoxQty;
}
}
} else {
if (!productList.isEmpty()) {
// 处理非服务件
boxSummary.setProductId(thisDbs.getProductId());
for (TAppProduct product : productList) {
// 设置料盒数量
int tempBoxQty = Math.ceilDiv(planProduction, product.getQuantityOfPair());
if (tempBoxQty > maxBoxQty) {
maxBoxQty = tempBoxQty;
}
}
}
}
// 设置料盒数量
boxSummary.setBoxQty(maxBoxQty);
return WmsApiResponse.success("获取料盒标签数据成功。", boxSummary);
}
/**
* 获取服务件成品号的物料需求
*
@ -1296,8 +1409,14 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
.set(TAppStandWork::getPutArea, "")
.eq(TAppStandWork::getStandId, confirmWorkRequest.getStandId()));
// 清除拣选计划
appPickPlanService.remove(new LambdaQueryWrapper<TAppPickPlan>()
.eq(TAppPickPlan::getWorkIndex, confirmWorkRequest.getOrderConfirm().getWorkIndex()));
// 清除拣选计划
LambdaQueryWrapper<TAppPickPlan> pickPlanQueryWrapper = new LambdaQueryWrapper<TAppPickPlan>()
.eq(TAppPickPlan::getWorkIndex, confirmWorkRequest.getOrderConfirm().getWorkIndex());
if (confirmWorkRequest.getStockConfirm() != null && StringUtils.isNotEmpty(confirmWorkRequest.getStockConfirm().getVehicleId())) {
// 箱号
pickPlanQueryWrapper.eq(TAppPickPlan::getVehicleId, confirmWorkRequest.getStockConfirm().getVehicleId());
}
appPickPlanService.remove(pickPlanQueryWrapper);
return "";
}

View File

@ -316,7 +316,8 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
stockOutRequest.getOutType(),
stockOutRequest.getDestination(),
stockOutRequest.getUserName(),
stockOutRequest.getReason()
stockOutRequest.getReason(),
LocalDateTime.now()
);
appOutsService.save(task);
return BaseWmsApiResponse.success("添加出库请求成功。");
@ -381,7 +382,8 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
WmsOutTypeEnums.FOR_IN.getCode(),
"R1",
voiRequest.getUserName(),
""
"",
LocalDateTime.now()
));
}
@ -773,7 +775,8 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
outs.getOutType(),
outs.getDestination(),
outs.getUserName(),
outs.getReason()
outs.getReason(),
outs.getRequestTime()
);
// 删除出库单
appOutsService.removeById(outs.getTaskId());
@ -784,8 +787,13 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
appOutsService.updateById(outs);
}
// 清除拣选计划
appPickPlanService.remove(new LambdaQueryWrapper<TAppPickPlan>()
.eq(TAppPickPlan::getWorkIndex, confirmTaskRequest.getTaskConfirm().getTaskId()));
LambdaQueryWrapper<TAppPickPlan> pickPlanQueryWrapper = new LambdaQueryWrapper<TAppPickPlan>()
.eq(TAppPickPlan::getWorkIndex, confirmTaskRequest.getTaskConfirm().getTaskId());
if (confirmTaskRequest.getStockConfirm() != null && StringUtils.isNotEmpty(confirmTaskRequest.getStockConfirm().getVehicleId())) {
// 箱号
pickPlanQueryWrapper.eq(TAppPickPlan::getVehicleId, confirmTaskRequest.getStockConfirm().getVehicleId());
}
appPickPlanService.remove(pickPlanQueryWrapper);
return "";
}
}

View File

@ -1207,7 +1207,8 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
thisOuts.getOutType(),
thisOuts.getDestination(),
thisOuts.getUserName(),
thisOuts.getReason()
thisOuts.getReason(),
thisOuts.getRequestTime()
));
}
}

View File

@ -8,6 +8,10 @@ spring:
# url: jdbc:mysql://112.4.208.194:3001/wms_kate_wuxi?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
# username: developer
# password: developer
# 本地
# url: jdbc:mysql://localhost:3306/wms_kate_wuxi_test?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
# username: root
# password: liangzhou
# 卡特服务器
url: jdbc:mysql://10.90.83.37:3306/wms_kate_wuxi?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
username: developer