From 9daa0151d9d5bea3c7429ba714959c963cfc3b86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Tue, 3 Mar 2026 19:22:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=9B=91=E6=8E=A7=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=BC=80=E5=8F=91=EF=BC=9A=E6=89=93=E5=8D=B0=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E3=80=81=E8=BD=A6=E9=97=B4=E8=AE=A2=E5=8D=95=E7=94=9F?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../produce/pojo/vo/PrintParentWoLabelVO.java | 30 ++++++++ .../desk/produce/pojo/vo/PrintWoLabelVO.java | 24 +++++++ .../pojo/vo/ProduceMonitorFileSlotVO.java | 24 +++++++ .../pojo/vo/ProduceMonitorMakeRecVO.java | 32 +++++++++ .../pojo/vo/ProduceMonitorMtuListVO.java | 29 ++++++++ .../pojo/vo/ProduceMonitorPlanDataVO.java | 51 ++++++++++++++ .../pojo/vo/ProduceMonitorPlanItemVO.java | 47 +++++++++++++ .../pojo/vo/ProduceMonitorSlotListVO.java | 48 +++++++++++++ .../pojo/vo/ProduceMonitorWorkCheckVO.java | 38 ++++++++++ .../controller/ProduceMonitorController.java | 23 ++++++- .../produce/service/IWorkOrderService.java | 28 +++++++- .../service/impl/WorkOrderServiceImpl.java | 69 +++++++++++++++++++ 12 files changed, 438 insertions(+), 5 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintParentWoLabelVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWoLabelVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorMakeRecVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorMtuListVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorWorkCheckVO.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintParentWoLabelVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintParentWoLabelVO.java new file mode 100644 index 00000000..06612e37 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintParentWoLabelVO.java @@ -0,0 +1,30 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springblade.desk.quality.pojo.entity.PlanTest; + +import java.util.List; + +/** + * 标签打印 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class PrintParentWoLabelVO { + + @Schema(description = "第一列") + private PrintWoLabelVO plOne; + + @Schema(description = "第二列") + private PrintWoLabelVO plTwo; + + @Schema(description = "第三列") + private PrintWoLabelVO plThree; + + @Schema(description = "第四列") + private PrintWoLabelVO plFour; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWoLabelVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWoLabelVO.java new file mode 100644 index 00000000..6ba93ce2 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWoLabelVO.java @@ -0,0 +1,24 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 标签打印详情 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class PrintWoLabelVO { + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "数量") + private String makeQty; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java new file mode 100644 index 00000000..78a718e1 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java @@ -0,0 +1,24 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity; + +import java.util.List; + +/** + * 设备使用详情 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class ProduceMonitorFileSlotVO { + + @Schema(description = "槽位/工步") + private String slotName; + + @Schema(description = "明细") + private List childrenList; + +} \ No newline at end of file diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorMakeRecVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorMakeRecVO.java new file mode 100644 index 00000000..e751c4bf --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorMakeRecVO.java @@ -0,0 +1,32 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 加工记录 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class ProduceMonitorMakeRecVO { + + @Schema(description = "操作工") + private String worker; + + @Schema(description = "加工时间") + private Date makeTime; + + @Schema(description = "合格数量") + private Double workQty; + + @Schema(description = "报废数量") + private Double scrapQty; + + @Schema(description = "备注") + private String memo; + +} \ No newline at end of file diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorMtuListVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorMtuListVO.java new file mode 100644 index 00000000..878a151d --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorMtuListVO.java @@ -0,0 +1,29 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 设备使用详情 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class ProduceMonitorMtuListVO { + + @Schema(description = "挂具编号") + private String rsCode; + + @Schema(description = "飞靶编号") + private String fsCode; + + @Schema(description = "设备编号") + private String deviceCode; + + @Schema(description = "挂次号") + private String hangNum; + +} \ No newline at end of file diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java new file mode 100644 index 00000000..e4177faa --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java @@ -0,0 +1,51 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springblade.desk.quality.pojo.entity.PlanTest; + +import java.util.List; + +/** + * 生产监控工序相关信息 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class ProduceMonitorPlanDataVO { + + @Schema(description = "接收数量") + private Double qualifiedQty; + + @Schema(description = "试验数量") + private Double testQty; + + @Schema(description = "消耗数量") + private Double lossQty; + + @Schema(description = "报废数量") + private Double scrapQty; + + @Schema(description = "加工记录") + private List mrList; + + @Schema(description = "同槽信息") + private List slotList; + + @Schema(description = "设备使用详情") + private List mtuList; + + @Schema(description = "过程质量记录") + private List dsRbFilePreserveSlotList; + + @Schema(description = "检验记录") + private List prWorkCheck; + + @Schema(description = "转试记录") + private List trialItemList; + + @Schema(description = "检验项目") + private List itemList; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java new file mode 100644 index 00000000..1c352860 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java @@ -0,0 +1,47 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 检验项目 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class ProduceMonitorPlanItemVO { + + @Schema(description = "项目编号") + private String trialNo; + + @Schema(description = "项目名称") + private String trialItem; + + @Schema(description = "标准") + private String trialStandard; + + @Schema(description = "测试值") + private String scrapQty; + + @Schema(description = "试验数量") + private Double testQty = 0d; + + @Schema(description = "消耗数量") + private Double lossQty = 0d; + + @Schema(description = "检验数量") + private Double checkQty = 0d; + + @Schema(description = "检验结果") + private String checkValue; + + @Schema(description = "检验人") + private String checkMan; + + @Schema(description = "检验时间") + private Date checkDate; + +} \ No newline at end of file diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java new file mode 100644 index 00000000..439ca070 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java @@ -0,0 +1,48 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 同槽信息 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class ProduceMonitorSlotListVO { + + @Schema(description = "同槽编号") + private String mtuCode; + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "数量") + private String qua; + + @Schema(description = "生产标识") + private String prodIdent; + + @Schema(description = "面积") + private String area; + + @Schema(description = "总面积") + private String totalArea; + +// @Schema(description = "订单编号") +// private String woCode; +// +// @Schema(description = "材料") +// private String material; +// +// @Schema(description = "订单类型") +// private String yieldType;; + + +} \ No newline at end of file diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorWorkCheckVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorWorkCheckVO.java new file mode 100644 index 00000000..dddeb4bb --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorWorkCheckVO.java @@ -0,0 +1,38 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 检验记录 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class ProduceMonitorWorkCheckVO { + + @Schema(description = "检验数量") + private Double checkQty = 0d; + + @Schema(description = "消耗数量") + private Double lossQty = 0d; + + @Schema(description = "合格数量") + private Double qualifiedQty = 0d; + + @Schema(description = "报废数量") + private Double scrapQty = 0d; + + @Schema(description = "不合格数量") + private Double unqualifiedQty = 0d; + + @Schema(description = "返工数量") + private Double reworkQty = 0d; + + @Schema(description = "检验备注") + private String checkMemo; + +} \ No newline at end of file diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ProduceMonitorController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ProduceMonitorController.java index 0922552e..d0866a1c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ProduceMonitorController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ProduceMonitorController.java @@ -6,10 +6,15 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.desk.produce.pojo.vo.PrintParentWoLabelVO; import org.springblade.desk.produce.pojo.vo.ProduceMonitorOrderDataVO; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorPlanDataVO; import org.springblade.desk.produce.service.IWorkOrderService; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 生产监控 * @author litao @@ -32,8 +37,22 @@ public class ProduceMonitorController extends BladeController { @GetMapping("/getPlanDetail") @ApiOperationSupport(order = 2) @Operation(summary = "获取工序详情", description = "") - public R getPlanDetail(@RequestParam Long wpId) { - return R.data(null); + public R getPlanDetail(@RequestParam Long wpId) { + return R.data(workOrderService.getPlanDetail(wpId)); + } + + @PostMapping("/printWoLabel") + @ApiOperationSupport(order = 3) + @Operation(summary = "打印标签") + public R> printWoLabel(@RequestParam String woIds, @RequestParam Short quantity) { + return R.data(workOrderService.printWoLabel(Func.toLongList(woIds), quantity)); + } + + @PostMapping("/generateWorkOrder") + @ApiOperationSupport(order = 4) + @Operation(summary = "车间订单生成") + public R generateWorkOrder(@RequestParam Long id) { + return R.data(workOrderService.generateWorkOrder(id)); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index 1935873f..fcc6d61b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -138,9 +138,31 @@ public interface IWorkOrderService extends BaseService { * * @param woId 订单id * @param partCode 零件号 - * @return org.springblade.desk.produce.pojo.vo.ProduceMonitorOrderDataVO - * @author lyj - * @date 2022-10-29 15:13 */ ProduceMonitorOrderDataVO getOrderDetail(Long woId, String partCode); + + /** + *

方法名: printWoLabel

+ *

方法描述: 打印标签

+ * + * @param woIds 订单id + * @param quantity 数量 + */ + List printWoLabel(List woIds, Short quantity); + + /** + *

方法名: generateWorkOrder

+ *

方法描述: 车间订单生成

+ * + * @param id 工单id + */ + boolean generateWorkOrder(Long id); + + /** + *

方法名: getPlanDetail

+ *

方法描述: 获取工序详情

+ * + * @param wpId 工单id + */ + ProduceMonitorPlanDataVO getPlanDetail(Long wpId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index d4793aba..5dc09f47 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -61,6 +61,7 @@ import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; import java.util.*; +import java.util.stream.Collectors; import static com.alibaba.fastjson2.util.DateUtils.DEFAULT_ZONE_ID; @@ -1116,6 +1117,74 @@ public class WorkOrderServiceImpl extends BaseServiceImpl printWoLabel(List woIds, Short quantity) { + if (CollectionUtils.isEmpty(woIds)) { + return null; + } + List woIdListAll = new ArrayList<>(); + for (int i = 0; i < quantity; i++) { + woIdListAll.addAll(woIds); + } + Map> map = new HashMap<>(1); + List list = null; + Integer num = 0; + int i = 1; + PrintWoLabelVO printWoLabel; + PrintParentWoLabelVO printParentWoLabel = null; + WorkOrder workOrder; + List plList = new ArrayList<>(); + // 批量查询车间订单 + List woList = this.listByIds(woIdListAll); + // 根据id转换为map,一个id对应一个对象 + Map idMap = woList.stream().collect(Collectors.toMap(WorkOrder::getId, wo -> wo)); + List yieldOrders = yieldOrderService.listByIds(woList.stream().map(WorkOrder::getYoId).toList()); + Map yieldOrderMap = yieldOrders.stream().collect(Collectors.toMap(YieldOrder::getId, wo -> wo)); + for (Long woId : woIdListAll) { + if (!map.containsKey(num)) { + list = new ArrayList<>(); + map.put(num, list); + printParentWoLabel = new PrintParentWoLabelVO(); + } + list.add(woId); + printWoLabel = new PrintWoLabelVO(); + workOrder = idMap.get(woId); + printWoLabel.setPartCode(yieldOrderMap.get(workOrder.getYoId()).getPartCode()); + printWoLabel.setBatchNo(workOrder.getBatchNo()); + printWoLabel.setMakeQty(workOrder.getMakeQty().toString()); + if (list.size() == 1) { + printParentWoLabel.setPlOne(printWoLabel); + } + if (list.size() == 2) { + printParentWoLabel.setPlTwo(printWoLabel); + } + if (list.size() == 3) { + printParentWoLabel.setPlThree(printWoLabel); + } + if (list.size() == 4) { + printParentWoLabel.setPlFour(printWoLabel); + plList.add(printParentWoLabel); + num++; + } else if (i == woIdListAll.size()) { + plList.add(printParentWoLabel); + } + i++; + } + return plList; + } + + @Override + public boolean generateWorkOrder(Long id) { + YieldOrder yieldOrder = yieldOrderService.getById(id); + yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode()); + return yieldOrderService.updateById(yieldOrder); + } + + @Override + public ProduceMonitorPlanDataVO getPlanDetail(Long wpId) { + return null; + } + public String prefix(String stringToFix, String fixChar, int targetLen) { int len = stringToFix.length(); for(int i = 0; i < targetLen - len; i += fixChar.length()) {