1. 增加需求看板的导出

2. 修复图纸的显示
3. 兼容料盒号为中文的二维码数据
This commit is contained in:
梁州 2025-03-17 19:30:54 +08:00
parent c853315460
commit ee307fe9ea
13 changed files with 247 additions and 38 deletions

View File

@ -146,4 +146,13 @@ public class ExcelController {
public void exportWorkSummaryExcel(@RequestBody WorkSummaryQuery workSummaryQuery, HttpServletResponse response) throws IOException { public void exportWorkSummaryExcel(@RequestBody WorkSummaryQuery workSummaryQuery, HttpServletResponse response) throws IOException {
exportExcelEasyPoi.exportWorkSummaryExcel(workSummaryQuery, response); exportExcelEasyPoi.exportWorkSummaryExcel(workSummaryQuery, response);
} }
/**
* 导出看板需求
* @param kanbanQuery 请求
*/
@PostMapping("/exportKanbanExcel")
public void exportKanbanExcel(@RequestBody KanbanQuery kanbanQuery, HttpServletResponse response) throws IOException {
exportExcelEasyPoi.exportKanbanExcel(kanbanQuery, response);
}
} }

View File

@ -23,4 +23,9 @@ public class KanbanExcelTemplate {
*/ */
@Excel(name = "标识编号") @Excel(name = "标识编号")
private String kanbanId; private String kanbanId;
/**
* 看板状态
*/
@Excel(name = "状态")
private String kanbanStatus;
} }

View File

@ -1,10 +1,7 @@
package com.wms_main.excel.easypoi.service; package com.wms_main.excel.easypoi.service;
import com.wms_main.excel.easypoi.service.base.IBaseExportExcelEasyPoi; import com.wms_main.excel.easypoi.service.base.IBaseExportExcelEasyPoi;
import com.wms_main.model.dto.query.DbsQuery; import com.wms_main.model.dto.query.*;
import com.wms_main.model.dto.query.KittingBomQuery;
import com.wms_main.model.dto.query.KittingBomRelationQuery;
import com.wms_main.model.dto.query.WorkSummaryQuery;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -37,4 +34,10 @@ public interface IExportExcelEasyPoi extends IBaseExportExcelEasyPoi {
* @param workSummaryQuery 查询条件 * @param workSummaryQuery 查询条件
*/ */
void exportWorkSummaryExcel(@RequestBody WorkSummaryQuery workSummaryQuery, HttpServletResponse response) throws IOException; void exportWorkSummaryExcel(@RequestBody WorkSummaryQuery workSummaryQuery, HttpServletResponse response) throws IOException;
/**
* 导出看板需求
* @param kanbanQuery 查询条件
*/
void exportKanbanExcel(@RequestBody KanbanQuery kanbanQuery, HttpServletResponse response) throws IOException;
} }

View File

@ -6,11 +6,8 @@ import com.wms_main.dao.*;
import com.wms_main.excel.easypoi.excelTemplate.*; import com.wms_main.excel.easypoi.excelTemplate.*;
import com.wms_main.excel.easypoi.service.IExportExcelEasyPoi; import com.wms_main.excel.easypoi.service.IExportExcelEasyPoi;
import com.wms_main.excel.easypoi.service.base.impl.BaseExportExcelEasyPoi; import com.wms_main.excel.easypoi.service.base.impl.BaseExportExcelEasyPoi;
import com.wms_main.model.dto.query.KittingBomQuery; import com.wms_main.model.dto.query.*;
import com.wms_main.model.dto.query.KittingBomRelationQuery;
import com.wms_main.model.dto.query.WorkSummaryQuery;
import com.wms_main.model.po.*; import com.wms_main.model.po.*;
import com.wms_main.model.dto.query.DbsQuery;
import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.StringUtils;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -29,6 +26,7 @@ public class ExportExcelEasyPoi extends BaseExportExcelEasyPoi implements IExpor
private final ITAppSingleProductService tAppSingleProductService;// 单片服务 private final ITAppSingleProductService tAppSingleProductService;// 单片服务
private final ITAppWorkService appWorkService;// 工作服务 private final ITAppWorkService appWorkService;// 工作服务
private final ITAppWorkRecordService appWorkRecordService;// 工作记录服务 private final ITAppWorkRecordService appWorkRecordService;// 工作记录服务
private final ITAppKanbanService appKanbanService;// 看板服务
/** /**
* 导出DBS计划实现 * 导出DBS计划实现
@ -252,4 +250,36 @@ public class ExportExcelEasyPoi extends BaseExportExcelEasyPoi implements IExpor
throw new IOException("数据类型不在设定值范围内。"); throw new IOException("数据类型不在设定值范围内。");
} }
} }
/**
* 导出看板数据 实现
* @param kanbanQuery 查询条件
* @param response 响应
* @throws IOException 异常
*/
@Override
public void exportKanbanExcel(KanbanQuery kanbanQuery, HttpServletResponse response) throws IOException {
if (kanbanQuery == null) {
throw new IOException("参数不能为空");
}
// 配对关系列表
List<TAppKanban> kanbanList = appKanbanService.list(new LambdaQueryWrapper<TAppKanban>()
.like(StringUtils.isNotEmpty(kanbanQuery.getGoodsId()), TAppKanban::getGoodsId, kanbanQuery.getGoodsId())
.like(StringUtils.isNotEmpty(kanbanQuery.getKanbanId()), TAppKanban::getKanbanId, kanbanQuery.getKanbanId())
.eq(kanbanQuery.getKanbanStatus() != null, TAppKanban::getKanbanStatus, kanbanQuery.getKanbanStatus()));
// excel模版列表
List<KanbanExcelTemplate> resultList = new ArrayList<>();
if (!kanbanList.isEmpty()) {
for (TAppKanban kanban : kanbanList) {
resultList.add(new KanbanExcelTemplate(
kanban.getGoodsId(),
kanban.getKanbanId(),
kanban.getKanbanStatus() == 1 ? "" : ""
));
}
} else {
resultList.add(new KanbanExcelTemplate());
}
doWriteExcel("看板需求", response, resultList, KanbanExcelTemplate.class);
}
} }

View File

@ -578,7 +578,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
String oldImageName = imageRawData.getImageDetail().substring(startIndex + 1); String oldImageName = imageRawData.getImageDetail().substring(startIndex + 1);
String fileType = imageRawData.getImageDetail().substring(endIndex); String fileType = imageRawData.getImageDetail().substring(endIndex);
// 文件路径 // 文件路径
tempImage.setImagePath(fileDir + File.separator); tempImage.setImagePath(fileDir);
// 格式化文件名 // 格式化文件名
String newImageName = productId + "_" + imageRawData.getBoxNo() + fileType; String newImageName = productId + "_" + imageRawData.getBoxNo() + fileType;
//将图片文件转为base64图片 //将图片文件转为base64图片
@ -590,14 +590,6 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
} else { } else {
tempImage.setImageName(oldImageName); tempImage.setImageName(oldImageName);
} }
// 存储图片实例
// FileInputStream inputStream = new FileInputStream(renamedFile);
// byte[] buffer = new byte[inputStream.available()];
// if (inputStream.read(buffer) == -1) {
// inputStream.close();
// }
// StringBuilder imageBase64 = new StringBuilder(Base64.getEncoder().encodeToString(buffer));
// tempImage.setImageDetail(new String(imageBase64));
tempImage.setImageDetail(""); tempImage.setImageDetail("");
tempImage.setImageType(imageType); tempImage.setImageType(imageType);
tempImage.setFirstImportTime(LocalDateTime.now()); tempImage.setFirstImportTime(LocalDateTime.now());

View File

@ -75,4 +75,9 @@ public class BoxSummary {
*/ */
@JsonProperty("boxQty") @JsonProperty("boxQty")
private Integer boxQty; private Integer boxQty;
/**
* 用于生成图纸二维码
*/
@JsonProperty("imageId")
private String imageId;
} }

View File

@ -14,6 +14,11 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class ImageQuery extends PageQuery { public class ImageQuery extends PageQuery {
/**
* 图纸id
*/
@JsonProperty("imageId")
private String imageId;
/** /**
* 成品号/单片号 * 成品号/单片号
*/ */

View File

@ -1,4 +1,108 @@
package com.wms_main.model.vo.wms; package com.wms_main.model.vo.wms;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* 任务记录Vo
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TaskRecordVo { public class TaskRecordVo {
/**
* 任务ID
*/
@JsonProperty("taskId")
private String taskId;
/**
* 任务类型
*/
@JsonProperty("taskType")
private Integer taskType;
/**
* 任务状态
*/
@JsonProperty("taskStatus")
private Integer taskStatus;
/**
* 任务优先级
*/
@JsonProperty("taskPriority")
private Integer taskPriority;
/**
* 载具号
*/
@JsonProperty("vehicleId")
private String vehicleId;
/**
* 起点
*/
@JsonProperty("origin")
private String origin;
/**
* 终点
*/
@JsonProperty("destination")
private String destination;
/**
* wcs任务id
*/
@JsonProperty("wcsTaskId")
private String wcsTaskId;
/**
* 创建时间
*/
@JsonProperty("createTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 完成时间
*/
@JsonProperty("finishTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime finishTime;
/**
* 料号
*/
@JsonProperty("goodsId")
private String goodsId;
/**
* 操作数量
*/
@JsonProperty("opNum")
private Integer opNum;
/**
* 库存数量
*/
@JsonProperty("stockNum")
private Integer stockNum;
/**
* 操纵用户
*/
@JsonProperty("opUser")
private String opUser;
/**
* 备注
*/
@JsonProperty("remark")
private String remark;
/**
* 申请出库的站台
*/
@JsonProperty("callStand")
private String callStand;
/**
* 物料描述
*/
@JsonProperty("goodsDesc")
private String goodsDesc;
} }

View File

@ -1,94 +1,108 @@
package com.wms_main.model.vo.wms; package com.wms_main.model.vo.wms;
import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/**
* 任务Vo
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TaskVo { public class TaskVo {
/** /**
* 任务ID * 任务ID
*/ */
@TableId(value = "task_id") @JsonProperty("taskId")
private String taskId; private String taskId;
/** /**
* 任务类型 * 任务类型
*/ */
@TableField(value = "task_type") @JsonProperty("taskType")
private Integer taskType; private Integer taskType;
/** /**
* 任务状态 * 任务状态
*/ */
@TableField(value = "task_status") @JsonProperty("taskStatus")
private Integer taskStatus; private Integer taskStatus;
/** /**
* 任务优先级 * 任务优先级
*/ */
@TableField(value = "task_priority") @JsonProperty("taskPriority")
private Integer taskPriority; private Integer taskPriority;
/** /**
* 载具号 * 载具号
*/ */
@TableField(value = "vehicle_id") @JsonProperty("vehicleId")
private String vehicleId; private String vehicleId;
/** /**
* 起点 * 起点
*/ */
@TableField(value = "origin") @JsonProperty("origin")
private String origin; private String origin;
/** /**
* 终点 * 终点
*/ */
@TableField(value = "destination") @JsonProperty("destination")
private String destination; private String destination;
/** /**
* wcs任务id * wcs任务id
*/ */
@TableField(value = "wcs_task_id") @JsonProperty("wcsTaskId")
private String wcsTaskId; private String wcsTaskId;
/** /**
* 创建时间 * 创建时间
*/ */
@TableField(value = "create_time") @JsonProperty("createTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**
* 完成时间 * 完成时间
*/ */
@TableField(value = "finish_time") @JsonProperty("finishTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime finishTime; private LocalDateTime finishTime;
/** /**
* 料号 * 料号
*/ */
@TableField(value = "goods_id") @JsonProperty("goodsId")
private String goodsId; private String goodsId;
/** /**
* 操作数量 * 操作数量
*/ */
@TableField(value = "op_num") @JsonProperty("opNum")
private Integer opNum; private Integer opNum;
/** /**
* 库存数量 * 库存数量
*/ */
@TableField(value = "stock_num") @JsonProperty("stockNum")
private Integer stockNum; private Integer stockNum;
/** /**
* 操纵用户 * 操纵用户
*/ */
@TableField(value = "op_user") @JsonProperty("opUser")
private String opUser; private String opUser;
/** /**
* 备注 * 备注
*/ */
@TableField(value = "remark") @JsonProperty("remark")
private String remark; private String remark;
/** /**
* 申请出库的站台 * 申请出库的站台
*/ */
@TableField(value = "call_stand") @JsonProperty("callStand")
private String callStand; private String callStand;
/** /**
* 物料描述 * 物料描述
*/ */
@TableField(value = "goods_desc") @JsonProperty("goodsDesc")
private String goodsDesc; private String goodsDesc;
} }

View File

@ -74,6 +74,7 @@ public class WcsTaskRecordVo {
private LocalDateTime finishTime; private LocalDateTime finishTime;
/** /**
* 备注 * 备注
*/@JsonProperty("remark") */
@JsonProperty("remark")
private String remark; private String remark;
} }

View File

@ -1,8 +1,11 @@
package com.wms_main.model.vo.wms; package com.wms_main.model.vo.wms;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -16,45 +19,64 @@ public class WcsTaskVo {
/** /**
* wcs任务id * wcs任务id
*/ */
@JsonProperty("wcsTaskId")
private String wcsTaskId; private String wcsTaskId;
/** /**
* wcs任务状态 * wcs任务状态
*/ */
@JsonProperty("wcsTaskStatus")
private Integer wcsTaskStatus; private Integer wcsTaskStatus;
/** /**
* wcs任务类型 * wcs任务类型
*/ */
@JsonProperty("wcsTaskType")
private Integer wcsTaskType; private Integer wcsTaskType;
/** /**
* wcs任务优先级 * wcs任务优先级
*/ */
@JsonProperty("taskPriority")
private Integer taskPriority; private Integer taskPriority;
/** /**
* 载具号 * 载具号
*/ */
@JsonProperty("vehicleId")
private String vehicleId; private String vehicleId;
/** /**
* 起点 * 起点
*/ */
@JsonProperty("origin")
private String origin; private String origin;
/** /**
* 终点 * 终点
*/ */
@JsonProperty("destination")
private String destination; private String destination;
/** /**
* 创建时间 * 创建时间
*/ */
@JsonProperty("createTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**
* 发送时间 * 发送时间
*/ */
@JsonProperty("sendTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime sendTime; private LocalDateTime sendTime;
/** /**
* 完成时间 * 完成时间
*/ */
@JsonProperty("finishTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime finishTime; private LocalDateTime finishTime;
/** /**
* 备注 * 备注
*/ */
@JsonProperty("remark")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String remark; private String remark;
} }

View File

@ -20,9 +20,18 @@ public class FileUtils {
public static String getImageDetail(String imagePath, String imageName) { public static String getImageDetail(String imagePath, String imageName) {
// 获取图片实例 // 获取图片实例
String imageDetail = ""; String imageDetail = "";
if (StringUtils.isEmpty(imagePath) || StringUtils.isEmpty(imageName)) {
// 空文件信息直接返回
return imageDetail;
}
try { try {
// 如果最后一位是/或者\则去掉
String lastStr = imagePath.substring(imagePath.length() - 1);
if (lastStr.equals("/") || lastStr.equals("\\")) {
imagePath = imagePath.substring(0, imagePath.length() - 1);
}
//将图片文件转为base64图片 //将图片文件转为base64图片
File imageFile = new File(imagePath + imageName); File imageFile = new File(imagePath + File.separator + imageName);
FileInputStream inputStream = new FileInputStream(imageFile); FileInputStream inputStream = new FileInputStream(imageFile);
byte[] buffer = new byte[inputStream.available()]; byte[] buffer = new byte[inputStream.available()];
if (inputStream.read(buffer) == -1) { if (inputStream.read(buffer) == -1) {

View File

@ -579,6 +579,13 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
if (StringUtils.isNotEmpty(thisStandWork.getSingleProductId())) { if (StringUtils.isNotEmpty(thisStandWork.getSingleProductId())) {
queryProductId = thisStandWork.getSingleProductId(); queryProductId = thisStandWork.getSingleProductId();
} }
// 查询到对应的图纸信息
List<TAppImage> imageList = appImageService.list(new LambdaQueryWrapper<TAppImage>()
.eq(TAppImage::getProductId, queryProductId)
.eq(TAppImage::getBoxNo, thisStandWork.getBoxNo()));
if (imageList != null && !imageList.isEmpty()) {
boxSummary.setImageId(imageList.getFirst().getImageId());
}
if (productType == 1) { if (productType == 1) {
// 非服务件---查询非服务件清单 // 非服务件---查询非服务件清单
List<TAppProduct> productList = appProductService.list(new LambdaQueryWrapper<TAppProduct>() List<TAppProduct> productList = appProductService.list(new LambdaQueryWrapper<TAppProduct>()
@ -783,6 +790,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
} }
// 查询图纸 // 查询图纸
List<TAppImage> imageList = appImageService.list(new LambdaQueryWrapper<TAppImage>() List<TAppImage> imageList = appImageService.list(new LambdaQueryWrapper<TAppImage>()
.eq(StringUtils.isNotEmpty(imageQuery.getImageId()), TAppImage::getImageId, imageQuery.getImageId())
.eq(StringUtils.isNotEmpty(imageQuery.getProductId()), TAppImage::getProductId, imageQuery.getProductId()) .eq(StringUtils.isNotEmpty(imageQuery.getProductId()), TAppImage::getProductId, imageQuery.getProductId())
.eq(StringUtils.isNotEmpty(imageQuery.getBoxNo()), TAppImage::getBoxNo, imageQuery.getBoxNo()) .eq(StringUtils.isNotEmpty(imageQuery.getBoxNo()), TAppImage::getBoxNo, imageQuery.getBoxNo())
.eq(imageQuery.getImageType() != null, TAppImage::getImageType, imageQuery.getImageType())); .eq(imageQuery.getImageType() != null, TAppImage::getImageType, imageQuery.getImageType()));
@ -980,6 +988,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
/** /**
* 更新工作信息---实现 * 更新工作信息---实现
*
* @param updateWorkRequest 更新请求 * @param updateWorkRequest 更新请求
* @return 处理结果 * @return 处理结果
*/ */
@ -1022,6 +1031,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
/** /**
* 关闭当前工作 * 关闭当前工作
*
* @param closeWorkRequest 关闭请求 * @param closeWorkRequest 关闭请求
* @return 处理结果 * @return 处理结果
*/ */