From e1a9fba2ca279da4ed0712ec11122c367b345216 Mon Sep 17 00:00:00 2001 From: zc Date: Thu, 16 Apr 2026 13:45:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B7=A5=E5=8D=95=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weighManage/mapper/WorkOrderMapper.java | 7 ++ .../model/resp/WorkOrderExportResp.java | 70 +++++++++++++++++++ .../model/resp/WorkOrderInfoResp.java | 36 ++++++---- .../weighManage/model/resp/WorkOrderResp.java | 18 +++++ .../service/impl/WorkOrderServiceImpl.java | 61 ++++++++++++++-- .../main/resources/mapper/WorkOrderMapper.xml | 15 ++++ .../weighManage/ah/AHDZCConnect.java | 4 +- 7 files changed, 192 insertions(+), 19 deletions(-) create mode 100644 wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderExportResp.java diff --git a/wms-module-system/src/main/java/top/wms/admin/weighManage/mapper/WorkOrderMapper.java b/wms-module-system/src/main/java/top/wms/admin/weighManage/mapper/WorkOrderMapper.java index a343752..1d6b5b8 100644 --- a/wms-module-system/src/main/java/top/wms/admin/weighManage/mapper/WorkOrderMapper.java +++ b/wms-module-system/src/main/java/top/wms/admin/weighManage/mapper/WorkOrderMapper.java @@ -40,4 +40,11 @@ public interface WorkOrderMapper extends BaseMapper { */ List getDetail(Long id); + /** + * 导出任务工单列表 + * + * @param queryWrapper 查询参数 + * @return 任务工单列表 + */ + List selectExport(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); } \ No newline at end of file diff --git a/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderExportResp.java b/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderExportResp.java new file mode 100644 index 0000000..edbbe92 --- /dev/null +++ b/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderExportResp.java @@ -0,0 +1,70 @@ +package top.wms.admin.weighManage.model.resp; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 任务工单导出信息(扁平化,包含主表和子表字段) + * + * @author zc + * @since 2026/04/16 + */ +@Data +public class WorkOrderExportResp { + + @ExcelProperty(value = "人员卡号", order = 1) + private String cardNo; + + @ExcelProperty(value = "工单编号", order = 2) + private String orderNo; + + @ExcelProperty(value = "标题", order = 3) + private String title; + + @ExcelProperty(value = "物料名称", order = 4) + private String materialName; + + @ExcelProperty(value = "物料编码", order = 5) + private String encoding; + + @ExcelProperty(value = "单位重量", order = 6) + private BigDecimal unitWeight; + + @ExcelProperty(value = "物料直径", order = 7) + private Double materialSpec; + + @ExcelProperty(value = "图片地址", order = 8) + private String photoUrl; + + @ExcelProperty(value = "标准总重量(g)", order = 11) + private BigDecimal totalCalculatedWeight; + + @ExcelProperty(value = "实际总重量(g)", order = 12) + private BigDecimal totalWeight; + + @ExcelProperty(value = "总数量", order = 13) + private Integer totalCount; + + @ExcelProperty(value = "输入数量", order = 14) + private Integer quantity; + + @ExcelProperty(value = "标准重量(g)", order = 15) + private BigDecimal calculatedWeight; + + @ExcelProperty(value = "称重数量", order = 16) + private Integer weightQuantity; + + @ExcelProperty(value = "称重重量(g)", order = 17) + private BigDecimal weight; + + @ExcelProperty(value = "图片地址", order = 18) + private String imgUrl; + + @ExcelProperty(value = "批次", order = 9) + private String infoBatch; + + @ExcelProperty(value = "标记号", order = 10) + private String infoMark; +} \ No newline at end of file diff --git a/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderInfoResp.java b/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderInfoResp.java index cfde16a..f8ee209 100644 --- a/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderInfoResp.java +++ b/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderInfoResp.java @@ -1,5 +1,6 @@ package top.wms.admin.weighManage.model.resp; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -34,9 +35,10 @@ public class WorkOrderInfoResp { private Long materialId; /** - * 物料主键id + * 物料名称 */ - @Schema(description = "物料主键id") + @Schema(description = "物料名称") + @ExcelProperty(value = "物料名称", order = 1) private String materialName; /** @@ -49,40 +51,48 @@ public class WorkOrderInfoResp { * 物料数量 */ @Schema(description = "物料数量") + @ExcelProperty(value = "输入数量", order = 2) private Integer quantity; + /** + * 计算重量 + */ + @Schema(description = "计算重量") + @ExcelProperty(value = "标准重量(g)", order = 3) + private BigDecimal calculatedWeight; + + /** + * 称重数量 + */ + @Schema(description = "称重数量") + @ExcelProperty(value = "称重数量", order = 4) + private Integer weightQuantity; /** * 称重重量 */ @Schema(description = "称重重量") + @ExcelProperty(value = "称重重量(g)", order = 5) private BigDecimal weight; - /** - * 计算重量 - */ - @Schema(description = "计算重量") - private BigDecimal calculatedWeight; - /** * 抓拍的图片 */ @Schema(description = "抓拍的图片") + @ExcelProperty(value = "图片地址", order = 6) private String imgUrl; /** * 批次 */ @Schema(description = "批次") + @ExcelProperty(value = "批次", order = 7) private String batch; /** * 标记号 */ + @Schema(description = "标记号") + @ExcelProperty(value = "标记号", order = 8) private String mark; - /** - * 称重数量 - */ - private Integer weightQuantity; - } diff --git a/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderResp.java b/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderResp.java index c6375f0..1b5e2d1 100644 --- a/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderResp.java +++ b/wms-module-system/src/main/java/top/wms/admin/weighManage/model/resp/WorkOrderResp.java @@ -1,5 +1,7 @@ package top.wms.admin.weighManage.model.resp; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import io.swagger.v3.oas.annotations.media.Schema; @@ -28,88 +30,104 @@ public class WorkOrderResp extends BaseDetailResp { * 卡号 */ @Schema(description = "卡号") + @ExcelProperty(value = "人员卡号", order = 1) private String cardNo; /** * 工单编号 */ @Schema(description = "工单编号") + @ExcelProperty(value = "工单编号", order = 2) private String orderNo; /** * 标题 */ @Schema(description = "标题") + @ExcelProperty(value = "标题", order = 3) private String title; /** * 物料主键id */ @Schema(description = "物料主键id") + @ExcelIgnore private Long materialId; /** * 物料名称 */ @Schema(description = "物料名称") + @ExcelProperty(value = "物料名称", order = 4) private String materialName; /** * 物料编码 */ @Schema(description = "物料编码") + @ExcelProperty(value = "物料编码", order = 5) private String encoding; /** * 物料单位重量 */ @Schema(description = "物料单位重量") + @ExcelProperty(value = "单位重量", order = 6) private BigDecimal unitWeight; /** * 物料直径 */ @Schema(description = "物料直径") + @ExcelProperty(value = "物料直径", order = 7) private Double materialSpec; /** * 物料图片 */ @Schema(description = "物料图片") + @ExcelProperty(value = "图片地址", order = 8) private String photoUrl; /** * 计算总重量(标重) */ @Schema(description = "计算总重量(标重)") + @ExcelProperty(value = "标准总重量(g)", order = 9) private BigDecimal totalCalculatedWeight; /** * 实际总重量 */ @Schema(description = "实际总重量") + @ExcelProperty(value = "实际总重量(g)", order = 10) private BigDecimal totalWeight; /** * 总数量 */ @Schema(description = "总数量") + @ExcelProperty(value = "总数量", order = 11) private int totalCount; /** * 任务工单详情信息列表 */ @Schema(description = "任务工单详情信息列表") + @ExcelProperty(value = "任务工单详情信息列表", order = 12) private List workOrderInfos; /** * 批次 */ @Schema(description = "批次") + @ExcelProperty(value = "批次", order = 12) private String batch; /** * 标记号 */ + @Schema(description = "标记号") + @ExcelProperty(value = "标记号", order = 13) private String mark; } \ No newline at end of file diff --git a/wms-module-system/src/main/java/top/wms/admin/weighManage/service/impl/WorkOrderServiceImpl.java b/wms-module-system/src/main/java/top/wms/admin/weighManage/service/impl/WorkOrderServiceImpl.java index 06107a0..71d7432 100644 --- a/wms-module-system/src/main/java/top/wms/admin/weighManage/service/impl/WorkOrderServiceImpl.java +++ b/wms-module-system/src/main/java/top/wms/admin/weighManage/service/impl/WorkOrderServiceImpl.java @@ -8,13 +8,16 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import top.continew.starter.core.validation.CheckUtils; import top.continew.starter.extension.crud.model.query.PageQuery; +import top.continew.starter.extension.crud.model.query.SortQuery; import top.continew.starter.extension.crud.model.resp.PageResp; import top.continew.starter.extension.crud.service.BaseServiceImpl; +import top.continew.starter.file.excel.util.ExcelUtils; import top.wms.admin.common.context.UserContextHolder; import top.wms.admin.material.mapper.MaterialInfoMapper; import top.wms.admin.material.model.entity.MaterialInfoDO; @@ -25,6 +28,9 @@ import top.wms.admin.weighManage.mapper.WorkOrderMapper; import top.wms.admin.weighManage.model.entity.WorkOrderDO; import top.wms.admin.weighManage.model.entity.WorkOrderInfoDO; import top.wms.admin.weighManage.model.query.WorkOrderQuery; +import top.wms.admin.weighManage.model.resp.WorkOrderExportResp; +import top.wms.admin.weighManage.model.resp.WorkOrderInfoResp; +import top.wms.admin.weighManage.model.resp.WorkOrderResp; import top.wms.admin.weighManage.model.req.WorkOrderInfoReq; import top.wms.admin.weighManage.model.req.WorkOrderReq; import top.wms.admin.weighManage.model.resp.WorkOrderInfoResp; @@ -32,10 +38,8 @@ import top.wms.admin.weighManage.model.resp.WorkOrderResp; import top.wms.admin.weighManage.service.WorkOrderService; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 任务工单信息业务实现 @@ -73,6 +77,55 @@ public class WorkOrderServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.like(StrUtil.isNotBlank(query.getMaterialName()), "m.material_name", query.getMaterialName()); + queryWrapper.eq(null != query.getOrderNo(), "w.order_no", query.getOrderNo()); + queryWrapper.eq(StrUtil.isNotBlank(query.getBatch()), "w.batch", query.getBatch()); + queryWrapper.eq(StrUtil.isNotBlank(query.getUserName()), "u.username", query.getUserName()); + queryWrapper.eq(StrUtil.isNotBlank(query.getCarNo()), "u.card_no", query.getCarNo()); + queryWrapper.eq(StrUtil.isNotBlank(query.getEncoding()), "m.encoding", query.getEncoding()); + queryWrapper.ge(null != query.getStartDate(), "w.create_time", query.getStartDate()); + queryWrapper.le(null != query.getEndDate(), "w.create_time", query.getEndDate()); + queryWrapper.orderByDesc("w.id"); + List workOrders = baseMapper.selectExport(queryWrapper); + Map> collect = new HashMap<>(); + if (CollUtil.isNotEmpty(workOrders)) { + List ids = workOrders.stream().map(WorkOrderResp::getId).collect(Collectors.toList()); + List workOrderInfos = workOrderInfoMapper.selectList(new QueryWrapper() + .in("work_order_id", ids)); + List workOrderInfoResps = BeanUtil.copyToList(workOrderInfos, WorkOrderInfoResp.class); + collect = workOrderInfoResps.stream().collect(Collectors.groupingBy(WorkOrderInfoResp::getWorkOrderId)); + } + List exportList = new ArrayList<>(); + for (WorkOrderResp workOrder : workOrders) { + List infos = collect.get(workOrder.getId()); + + WorkOrderExportResp mainExport = new WorkOrderExportResp(); + BeanUtil.copyProperties(workOrder, mainExport); + mainExport.setInfoBatch(workOrder.getBatch()); + mainExport.setInfoMark(workOrder.getMark()); + exportList.add(mainExport); + + if (CollUtil.isNotEmpty(infos)) { + for (WorkOrderInfoResp info : infos) { + WorkOrderExportResp infoExport = new WorkOrderExportResp(); + infoExport.setOrderNo(workOrder.getOrderNo()); + infoExport.setQuantity(info.getQuantity()); + infoExport.setCalculatedWeight(info.getCalculatedWeight()); + infoExport.setWeightQuantity(info.getWeightQuantity()); + infoExport.setWeight(info.getWeight()); + infoExport.setImgUrl(info.getImgUrl()); + infoExport.setInfoBatch(info.getBatch()); + infoExport.setInfoMark(info.getMark()); + exportList.add(infoExport); + } + } + } + ExcelUtils.export(exportList, "任务工单导出", WorkOrderExportResp.class, response); + } + @Override public WorkOrderResp getDetail(Long id) { WorkOrderDO workOrderDO = baseMapper.selectById(id); diff --git a/wms-module-system/src/main/resources/mapper/WorkOrderMapper.xml b/wms-module-system/src/main/resources/mapper/WorkOrderMapper.xml index 9dd1ab0..eca2c7a 100644 --- a/wms-module-system/src/main/resources/mapper/WorkOrderMapper.xml +++ b/wms-module-system/src/main/resources/mapper/WorkOrderMapper.xml @@ -26,4 +26,19 @@ where wi.work_order_id = #{id} + + \ No newline at end of file diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/weighManage/ah/AHDZCConnect.java b/wms-webapi/src/main/java/top/wms/admin/controller/weighManage/ah/AHDZCConnect.java index 090c8f7..8f4e034 100644 --- a/wms-webapi/src/main/java/top/wms/admin/controller/weighManage/ah/AHDZCConnect.java +++ b/wms-webapi/src/main/java/top/wms/admin/controller/weighManage/ah/AHDZCConnect.java @@ -28,9 +28,9 @@ import java.util.regex.Pattern; public class AHDZCConnect { //老设备(只能跑jar包的) - private static final String PORT_NAME = "COM12"; + // private static final String PORT_NAME = "COM12"; //新设备(环境齐全的) - // private static final String PORT_NAME = "COM13"; + private static final String PORT_NAME = "COM13"; private static final int BAUD_RATE = 9600; private static final int DATA_BITS = 8; private static final int STOP_BITS = 1;