From bdbf88042eaac0e0f87310e7202871bc398d6af3 Mon Sep 17 00:00:00 2001
From: sugy <455459989@qq.com>
Date: Wed, 4 Feb 2026 19:26:11 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86-=E5=B7=A5?=
=?UTF-8?q?=E5=BA=8F=E6=8A=A5=E5=B7=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../impl/ModelPrototypeServiceImpl.java | 1 +
.../desk/produce/pojo/dto/MakeRecDTO.java | 25 ++
.../desk/produce/pojo/dto/MesMakeRecDTO.java | 21 ++
.../desk/produce/pojo/dto/WorkPlanDto.java | 165 ++++++++++
.../desk/produce/pojo/vo/MesMakeRecVO.java | 21 ++
.../produce/pojo/vo/PdaProRelevantVO.java | 71 +++++
.../desk/produce/pojo/vo/WorkPlanLoadVO.java | 17 ++
.../produce/controller/PdaLoadController.java | 6 +
.../controller/PrMakeRecController.java | 64 ++++
.../desk/produce/mapper/MakeRecMapper.java | 5 +
.../desk/produce/mapper/MakeRecMapper.xml | 38 +++
.../desk/produce/service/IMakeRecService.java | 17 ++
.../desk/produce/service/IPdaLoadService.java | 3 +
.../service/impl/MakeRecServiceImpl.java | 281 +++++++++++++++++-
.../service/impl/PdaLoadServiceImpl.java | 28 +-
15 files changed, 758 insertions(+), 5 deletions(-)
create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MakeRecDTO.java
create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesMakeRecDTO.java
create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkPlanDto.java
create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java
create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PdaProRelevantVO.java
create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanLoadVO.java
create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java
create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml
diff --git a/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java b/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java
index 5f5cac18..de909256 100644
--- a/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java
+++ b/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java
@@ -103,6 +103,7 @@ public class ModelPrototypeServiceImpl extends BaseServiceImplDescription: 车间接收传送数据
+ *
+ * @author lyj
+ * @date 2022-11-01 10:16
+ */
+@Builder
+@Data
+public class WorkPlanDto implements Serializable {
+
+ /**
+ * 下级B号
+ */
+ private String nextRoam;
+ /**
+ * 生产单号
+ */
+ private String yoCode;
+ /**
+ * 计划单号
+ */
+ private String poCode;
+ /**
+ * 零件号
+ */
+ private String partCode;
+ /**
+ * 产品型号
+ */
+ private String productType;
+ /**
+ * 名称
+ */
+ private String partName;
+ /**
+ * 镀种
+ */
+ private String plate;
+ /**
+ * 生产标识
+ */
+ private String prodIdent;
+ /**
+ * 使用部门
+ */
+ private String useDept;
+ /**
+ * 面积(㎡)
+ */
+ private Double poArea;
+ /**
+ * 需求交期
+ */
+ private Date demandDate;
+ /**
+ * 计划员
+ */
+ private String planUser;
+ /**
+ * 计划下达时间
+ */
+ private Date releaseDate;
+ /**
+ * 一级工艺线路
+ */
+ private String primaryCraft;
+
+ /**
+ * 路线卡号
+ */
+ private String cardNo;
+ /**
+ * 批次号
+ */
+ private String batchNo;
+ /**
+ * 订单编号
+ */
+ private String woCode;
+ /**
+ * 加工数量
+ */
+ private Double makeQty;
+ /**
+ * 未报工数量
+ */
+ private Double notWorkQty;
+ /**
+ * 已报工数量
+ */
+ private Double workQty;
+ /**
+ * 报废
+ */
+ private Double scrapQty;
+ /**
+ * 计划完工日期
+ */
+ private Date planEndDate;
+ /**
+ * 已入库数量
+ */
+ private Double inventoryQty;
+ /**
+ * 已入库数量
+ */
+ private Double notInQty;
+ /**
+ * 运行状态
+ */
+ public String runStatusTitle;
+ /**
+ * 工序状态
+ */
+ public Short status;
+ /**
+ * 优先级
+ */
+ public String priorityTitle;
+ /**
+ * 领料状态
+ */
+ public String pickingStatusTitle;
+ /**
+ * 是否绑定挂次号
+ */
+ public Boolean isBinging;
+
+ /**
+ * 当前工序
+ */
+ public Long currentWpId;
+ public Long wpId;
+ public String currentWpTitle;
+ public String currentMakeTeam;
+
+ /**
+ * 上序
+ */
+ public String frontWpTitle;
+ public String frontMakeTeam;
+ /**
+ * 下序
+ */
+ public String nextWpTitle;
+ public String nextMakeTeam;
+
+ private YieldOrder yieldOrder;
+
+ private WorkOrder workOrder;
+
+ private WorkPlan workPlan;
+
+}
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java
new file mode 100644
index 00000000..a8b87639
--- /dev/null
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java
@@ -0,0 +1,21 @@
+package org.springblade.desk.produce.pojo.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.desk.produce.pojo.entity.MakeRec;
+
+import java.io.Serial;
+
+/**
+ * 加工记录 视图实体类
+ *
+ * @author BladeX
+ * @since 2026-02-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MesMakeRecVO extends MakeRec {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PdaProRelevantVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PdaProRelevantVO.java
new file mode 100644
index 00000000..b922d815
--- /dev/null
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PdaProRelevantVO.java
@@ -0,0 +1,71 @@
+package org.springblade.desk.produce.pojo.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @ClassName PdaProRelevant
+ * @Description: 加载车间订单工序接受、检验数据模型
+ * @Author qjh
+ * @Date 2022-10-28 17:42
+ * @Version 1.0
+ * 注意:本内容仅限于内部传阅,禁止外泄及用于其他的商业目的
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class PdaProRelevantVO {
+ /**
+ * 路线卡号
+ */
+ private String cardNo;
+ /**
+ * 订单编号
+ */
+ private String woCode;
+ /**
+ * 批次号
+ */
+ private String batchNo;
+ /**
+ * 零件号
+ */
+ private String partCode;
+ /**
+ * 零件名称
+ */
+ private String partName;
+ /**
+ * 上序号
+ */
+ private String frontOrders;
+ /**
+ * 上序名称
+ */
+ private String frontPpsName;
+ /**
+ * 工序id
+ */
+ private Long wpId;
+ /**
+ * 工序号
+ */
+ private String orders;
+ /**
+ * 工序名称
+ */
+ private String ppsName;
+ /**
+ * 班组
+ */
+ private String makeTeam;
+ /**
+ * 加工数量
+ */
+ private Double makeQty;
+
+
+}
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanLoadVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanLoadVO.java
new file mode 100644
index 00000000..057024ed
--- /dev/null
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanLoadVO.java
@@ -0,0 +1,17 @@
+package org.springblade.desk.produce.pojo.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.desk.produce.pojo.entity.WorkPlan;
+
+/**
+ * 分批准备数据 视图实体类
+ *
+ * @author litao
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class WorkPlanLoadVO extends WorkPlan {
+
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java
index af14d352..9f73691a 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java
@@ -60,5 +60,11 @@ public class PdaLoadController {
public R loadSubOrder(@PathVariable String cardNo) {
return R.data(pdaLoadService.loadSubOrder(cardNo));
}
+ @GetMapping(value = "/loadProTest/{cardNo}")
+ @ApiOperationSupport(order = 6)
+ @Operation(summary = "加载当前工序检验数据", description = "传入cardNo")
+ public R loadProTest(@PathVariable String cardNo) {
+ return R.data(pdaLoadService.loadProTestWorkPlan(cardNo));
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java
new file mode 100644
index 00000000..c5e25c2a
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java
@@ -0,0 +1,64 @@
+package org.springblade.desk.produce.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.desk.produce.pojo.dto.MakeRecDTO;
+import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
+import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo;
+import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
+import org.springblade.desk.produce.service.IMakeRecService;
+import org.springblade.desk.produce.service.IWorkPlanService;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 加工记录 控制器
+ *
+ * @author BladeX
+ * @since 2025-11-28
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/prMakeRec")
+@Tag(name = "加工记录", description = "接口")
+public class PrMakeRecController extends BladeController {
+
+ private final IMakeRecService makeRecService;
+
+ @GetMapping(value = "/loadCurrentWp/{cardNo}")
+ @ApiOperationSupport(order = 1)
+ @Operation(summary = "加载当前工序", description = "传入cardNo")
+ public R loadSubOrder(@PathVariable String cardNo) {
+ return R.data(makeRecService.loadCurrentWp(cardNo));
+ }
+ @Operation(summary = "增加加工记录")
+ @PostMapping("/saveMakeRec")
+ public R saveMakeRec(@RequestBody MakeRecDTO makeRecDTO) {
+ makeRecService.saveMakeRec(makeRecDTO);
+ return R.success() ;
+ }
+
+ /**
+ * 加工记录
+ */
+ @GetMapping("/queryMakeRec")
+ @ApiOperationSupport(order = 3)
+ @Operation(summary = "加工记录", description = "传入mesMakeRec")
+ public R> page(MesMakeRecVO mesMakeRec, Query query) {
+ IPage pages = makeRecService.selectMesMakeRecPage(Condition.getPage(query), mesMakeRec);
+ return R.data(pages);
+ }
+ @GetMapping(value = "/loadNotReceived/{cardNo}")
+ @Operation(summary = "任务接收查询", description = "传入cardNo")
+ public R loadNotReceived(@PathVariable String cardNo) {
+ return R.data(makeRecService.loadNotReceived(cardNo));
+ }
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.java
index c07a039f..ae91ddbd 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.java
@@ -1,7 +1,11 @@
package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.entity.MakeRec;
+import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
+
+import java.util.List;
/**
* 加工记录 Mapper 接口
@@ -10,4 +14,5 @@ import org.springblade.desk.produce.pojo.entity.MakeRec;
*/
public interface MakeRecMapper extends BaseMapper {
+ List selectMesMakeRecPage(IPage page, MesMakeRecVO mesMakeRec);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml
new file mode 100644
index 00000000..91aca3f8
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java
index efea9bd8..ed1539bc 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java
@@ -1,7 +1,14 @@
package org.springblade.desk.produce.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.produce.pojo.dto.MakeRecDTO;
+import org.springblade.desk.produce.pojo.dto.WorkPlanDto;
import org.springblade.desk.produce.pojo.entity.MakeRec;
+import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
+import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
+
+import java.util.List;
/**
* 加工记录 服务类
@@ -12,4 +19,14 @@ import org.springblade.desk.produce.pojo.entity.MakeRec;
public interface IMakeRecService extends BaseService {
+ WorkPlanDto loadCurrentWp(String cardNo);
+ /**
+ * 增加工序记录
+ * @param makeRecDTO
+ */
+ void saveMakeRec(MakeRecDTO makeRecDTO);
+
+ IPage selectMesMakeRecPage(IPage page, MesMakeRecVO mesMakeRec);
+
+ List loadNotReceived(String cardNo);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
index 41e8edda..612eff44 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
@@ -7,6 +7,7 @@ import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.LoadSubOrderVO;
+import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO;
import java.util.List;
@@ -52,4 +53,6 @@ public interface IPdaLoadService extends BaseService {
Object getEcByCode(String deviceCode);
LoadSubOrderVO loadSubOrder(String cardNo);
+
+ PdaProRelevantVO loadProTestWorkPlan(String cardNo);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
index 1aa0342a..c07ec3cb 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
@@ -1,13 +1,45 @@
package org.springblade.desk.produce.service.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jodd.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
+import org.springblade.desk.basic.pojo.entity.TeamSet;
+import org.springblade.desk.basic.service.IRelTeamSetUserService;
+import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
+import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
+import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
+import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
+import org.springblade.desk.dashboard.service.IBsProcessSetService;
+import org.springblade.desk.dashboard.service.IBsTeamSetService;
+import org.springblade.desk.dashboard.service.IDsPartService;
+import org.springblade.desk.dashboard.service.IDsProcessService;
+import org.springblade.desk.order.pojo.entity.YieldOrder;
+import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.MakeRecMapper;
+import org.springblade.desk.produce.mapper.WorkOrderMapper;
+import org.springblade.desk.produce.mapper.WorkPlanMapper;
+import org.springblade.desk.produce.pojo.dto.MakeRecDTO;
+import org.springblade.desk.produce.pojo.dto.WorkPlanDto;
import org.springblade.desk.produce.pojo.entity.*;
-import org.springblade.desk.produce.service.IMakeRecService;
+import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
+import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
+import org.springblade.desk.produce.service.*;
+import org.springblade.desk.quality.pojo.entity.AuditFile;
+import org.springblade.desk.quality.service.IAuditFileService;
+import org.springblade.system.pojo.entity.DataScope;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
/**
* 加工记录 服务实现类
*
@@ -18,4 +50,251 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public class MakeRecServiceImpl extends BaseServiceImpl implements IMakeRecService {
+ private final WorkOrderMapper workOrderMapper;
+
+ private final WorkPlanMapper workPlanMapper;
+
+ private final IMacToolUseService macToolUseService;
+
+ private final IYieldOrderService yieldOrderService;
+
+ private final IDsProcessService dsProcessService;
+
+ private final IMesQcProduceRunService mesQcProduceRunService;
+
+ private final IBsProcessSetService bsProcessSetService;
+
+ private final IAuditFileService auditFileService;
+
+ private final IBsTeamSetService teamSetService;
+
+ private final IDsPartService partService;
+
+ private final IRelTeamSetUserService relTeamSetUserService;
+ @Override
+ public WorkPlanDto loadCurrentWp(String cardNo) {
+ WorkOrder wo= workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
+ if (wo == null) {
+ throw new ServiceException("pda.prWorkOrder.absent");
+ }
+ if (!WorkOrder.RUN_STATUS_RECEIVE.equals(wo.getRunStatus())) {
+ throw new ServiceException("pda.prWorkOrder.runStatus"+wo.getRunStatus());
+ }
+ //验证当前当前登陆人是否可以填写加工记录
+ WorkPlan wp =workPlanMapper.selectById(wo.getWpId());
+
+ if (!WorkPlan.STATUS_START.equals(wp.getStatus())) {
+ throw new ServiceException("product.prWorkPlan.workOk");
+ }
+ //this.checkTeamWorkPlan(wp, prWorkPlanService.getTeamId(userInfo.getUserId()));
+ Boolean isBinging = false;
+ // 查询当前工序是否绑定了挂次号
+ MacToolUse prMacToolUse = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()));
+ if (prMacToolUse != null && prMacToolUse.getMtnCode() != null) {
+ isBinging = true;
+ }
+ YieldOrder yieldOrder = yieldOrderService.getById(wo.getYoId());
+ return WorkPlanDto.builder().workPlan(wp).workOrder( wo).yieldOrder(yieldOrder).isBinging(isBinging).build();
+ }
+
+ @Override
+ public void saveMakeRec(MakeRecDTO makeRecDTO) {
+ WorkPlan wp= workPlanMapper.selectById(makeRecDTO.getWpId());
+ if (!WorkPlan.STATUS_START.equals(wp.getStatus())) {
+ throw new ServiceException("product.prWorkPlan.workOk");
+ }
+ MacToolUse mtu = null;
+ DsProcessEntity dsProcess = dsProcessService.getById(wp.getPpsId());
+ //如果是上挂工序,需判定是否绑定挂具
+ if (dsProcess.getProcessName().equals("上挂")) {
+ mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
+ .isNotNull(MacToolUse::getBsRackSet));
+ if (mtu == null) {
+ throw new ServiceException("product.prWorkPlan.not.bing.bsRackSet");
+ }
+ // 如果上序是上挂工序、并且本序是主工序,则代表本序是 需要绑定飞靶及设备的工序 或者手动维护生产追溯信息
+ }else if(wp.getFrontWpId()!=null&&dsProcess.getProcessName().equals("上挂")&&wp.getCruxProcess().equals("是")){
+ mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
+ .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
+ if (mtu == null) {
+ // 验证是否维护了生产追溯信息
+ List mtnCodeList=macToolUseService.listObjs(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode));
+ List qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery()
+ .in(MesQcProduceRunEntity::getMtnCode,mtnCodeList));
+ if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) {
+ throw new ServiceException("product.prWorkPlan.not.bing");
+ }
+ }
+ }else if (dsProcess.getProcessName().contains("镀金")) {
+ mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
+ .isNotNull(MacToolUse::getBsFeiBaSet));
+ if (mtu == null) {
+ throw new ServiceException("此工序未绑定飞跋,请绑定飞跋!!!");
+ }
+ //验证是否绑定设备
+ mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
+ .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
+ if (mtu == null) {
+ List produceRunList = null;
+ List mtnCodeList=macToolUseService.listObjs(Wrappers.lambdaQuery()
+ .eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex,1).select(MacToolUse::getMtnCode));
+ produceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery()
+ .in(MesQcProduceRunEntity::getMtnCode,mtnCodeList).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱"));
+ if (produceRunList == null || produceRunList.size() == 0) {
+ List mtnCodeList2=macToolUseService.listObjs(Wrappers.lambdaQuery()
+ .eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex,2).select(MacToolUse::getMtnCode));
+ produceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery()
+ .in(MesQcProduceRunEntity::getMtnCode,mtnCodeList2).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱"));
+ }
+ if (!(produceRunList != null && produceRunList.size() > 0)) {
+ throw new ServiceException("未绑定飞跋和设备或未维护生产追溯信息!!!");
+ }
+ }
+ }else if (dsProcess.getProcessName().equals("玻璃封接清洗") || dsProcess.getProcessName().equals("玻璃封接退火") ||
+ dsProcess.getProcessName().equals("玻璃封接预氧化(箱式炉)") || dsProcess.getProcessName().equals("玻璃封接预氧化(链式炉)") ||
+ dsProcess.getProcessName().equals("玻璃封接(链式炉)") || dsProcess.getProcessName().equals("玻璃封接(真空炉)") ||
+ dsProcess.getProcessName().equals("玻璃封接灌胶") || dsProcess.getProcessName().equals("玻璃饼压制") ||
+ dsProcess.getProcessName().equals("玻璃饼排蜡玻化") || dsProcess.getProcessName().equals("玻璃饼振光") ||
+ dsProcess.getProcessName().equals("石墨模烘干") || dsProcess.getProcessName().equals("石墨模焙烧") ||
+ dsProcess.getProcessName().equals("真空炉灌胶") || dsProcess.getProcessName().equals("玻璃封接电镀去氧化皮") ||
+ dsProcess.getProcessName().equals("玻璃封接电化学抛光") || dsProcess.getProcessName().equals("玻璃封接湿喷砂") ||
+ dsProcess.getProcessName().equals("玻璃封接电镀") || dsProcess.getProcessName().equals("玻璃封接插针电镀") ||
+ dsProcess.getProcessName().equals("玻璃封接壳体电镀") || dsProcess.getProcessName().equals("玻璃封接电镀下挂") ||
+ dsProcess.getProcessName().equals("烧结浸保护剂")) {
+ mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
+ .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
+ if (mtu == null) {
+ // 验证是否维护了生产追溯信息
+ List qcProduceRunList = null;
+ List mtnCodeList=macToolUseService.listObjs(Wrappers.lambdaQuery()
+ .eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode));
+ qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery()
+ .in(MesQcProduceRunEntity::getMtnCode,mtnCodeList));
+ if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) {
+ throw new ServiceException("product.prWorkPlan.not.bing");
+ }
+ }
+ }
+ //周新昊 20241114 验证手动维护设备使用记录的工序电子档案数据是否维护完备
+ Boolean aBoolean = true; //this.chkRfpDetail(wp);
+ if (!aBoolean) {
+ throw new ServiceException("生产记录未填写完整,不允许报工!!!!");
+ }
+ MakeRec mr= new MakeRec();
+ BeanUtils.copyProperties(makeRecDTO,MakeRec.class);
+ mr.setWpId(wp.getId());
+ mr.setWorker(makeRecDTO.getWorker());
+ mr.setMakeTime(new Date());
+ baseMapper.insertOrUpdate( mr);
+ if (mr.getScrapQty() > 0) {
+ wp.setScrapQty(wp.getScrapQty() + mr.getScrapQty());
+ WorkOrder wo= null;//workOrderService.getById(wp.getWoId());
+ wo.setMakeQty(wo.getMakeQty() - mr.getScrapQty());
+ }
+ wp.setWorkQty(wp.getWorkQty() + mr.getWorkQty());
+ if (wp.getQualifiedQty().equals(wp.getScrapQty() + wp.getWorkQty())) {
+ wp.setStatus(WorkPlan.STATUS_WORK_OK);
+ }
+ if ("热处理".equals(dsProcess.getProcessName())) {
+ wp.setPrintType((short) 1);
+ //workPlanService.saveOrUpdate(wp);
+ String code = macToolUseService.nextCode(2);
+ MacToolUse prMacToolUse = new MacToolUse();
+ prMacToolUse.setWpId(wp.getId());
+ prMacToolUse.setFinished(1);
+ prMacToolUse.setCreateTime(new Date());
+ prMacToolUse.setCreateMan(makeRecDTO.getWorker());
+ prMacToolUse.setMtnCode(code);
+ prMacToolUse.setMtuIndex(String.valueOf(0));
+ macToolUseService.save(prMacToolUse);
+ String deviceCode = prMacToolUse.getEquipmentCard() != null ? prMacToolUse.getMtnCode() : "";
+ log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, prMacToolUse.getHangNum(), prMacToolUse.getMtnCode(), prMacToolUse.getFinished());
+
+ MesQcProduceRunEntity qcProduceRun = new MesQcProduceRunEntity();
+ qcProduceRun.setMtnCode(code);
+ qcProduceRun.setWorkSlot("热处理自检");
+
+ qcProduceRun.setInDate(new Date());
+ qcProduceRun.setDataOne(makeRecDTO.getResource());
+ qcProduceRun.setDataTwo(makeRecDTO.getNum());
+ qcProduceRun.setDataThree(makeRecDTO.getThickness());
+ qcProduceRun.setDataFour(makeRecDTO.getCode());
+ qcProduceRun.setDataFive(makeRecDTO.getInspectCode());
+ qcProduceRun.setDataSix(String.valueOf(makeRecDTO.getStatus()));
+ qcProduceRun.setDataSeven(makeRecDTO.getShape());
+ mesQcProduceRunService.save(qcProduceRun);
+ }
+ // 保存引用文件或版本号
+ WorkOrder prWorkOrder =null; //workOrderService.getById(wp.getWoId());
+ if (prWorkOrder != null && prWorkOrder.getId() != null) {
+ YieldOrder pjYieldOrder = yieldOrderService.getById(prWorkOrder.getYoId());
+ if (pjYieldOrder != null && pjYieldOrder.getId() != null) {
+ BsProcessSetEntity procedureSet = bsProcessSetService.getById(wp.getPpsId());
+ AuditFile dsAuditFile = null;
+ // 如果本序是涂色标或喷砂,直接查维护的数据
+ if ("涂色标".equals(procedureSet.getName()) || "喷砂".equals(procedureSet.getName())) {
+ dsAuditFile = auditFileService.getOne(Wrappers.lambdaQuery()
+ .eq(AuditFile::getPpsId, procedureSet.getId()));
+ } else {
+ // 如果不是优先判断是否有生产标识
+ String prodIdent = pjYieldOrder.getProductIdent() ;
+ BsTeamSetEntity bsTeamSet = teamSetService.getOne(Wrappers.lambdaQuery()
+ .eq(BsTeamSetEntity::getId, wp.getMakeTeam()));
+ if (!"AH".equals(prodIdent)) {
+ prodIdent = null;
+ }
+ if (bsTeamSet != null && bsTeamSet.getId() != null) {
+ // BsCenterTeamEntity bsCenterTeam = bsCenterTeamService.getByTsId(bsTeamSet.getTsId());
+ DsPartEntity dsPart = partService.getOne(Wrappers.lambdaQuery().eq(DsPartEntity::getPartCode, pjYieldOrder.getPartCode()));
+ String productApparea = null;
+ if (dsPart!=null && dsPart.getId()!=null){
+ productApparea = dsPart.getProductSeries() ;
+ }
+// if (productApparea!=null){
+// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndApparea(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(),productApparea);
+// }
+// if (bsCenterTeam != null && bsCenterTeam.getCtId() != null && dsAuditFile == null) {
+// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndPqName(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(), prodIdent);
+// }
+ }
+ }
+ if (dsAuditFile != null && dsAuditFile.getId() != null) {
+ wp.setPapers(dsAuditFile.getPapers());
+ wp.setReferenceFile(dsAuditFile.getReferenceFile());
+ //workPlanService.updateById(wp);
+ }
+ // 2025-07-23 线上迁移修改
+ MacToolUse macToolUse = macToolUseService.getOne(Wrappers.lambdaQuery()
+ .eq(MacToolUse::getWpId, wp.getId()));
+ if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished()!=1) {
+ macToolUse.setFinished(1);
+ String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : "";
+ log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished());
+ macToolUseService.updateById(macToolUse);
+ }
+ }
+ }
+ }
+
+ @Override
+ public IPage selectMesMakeRecPage(IPage page, MesMakeRecVO mesMakeRec) {
+ return page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec));
+ }
+
+ @Override
+ public List loadNotReceived(String cardNo) {
+ List tsIds = relTeamSetUserService.
+ list(Wrappers.lambdaQuery(RelTeamSetUser.class)
+ .eq(RelTeamSetUser::getUserId, AuthUtil.getUserId()))
+ .stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList());
+ WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
+ List wpList= workPlanMapper.selectList(Wrappers.lambdaQuery()
+ .eq(WorkPlan::getWoId, wo.getId()).in(WorkPlan::getMakeTeam, tsIds));
+ List wpLoadList = wpList.stream().map(wp -> {
+ WorkPlanLoadVO wpLoad = new WorkPlanLoadVO();
+ BeanUtils.copyProperties(wp, wpLoad);
+ return wpLoad;
+ }).collect(Collectors.toList());
+ return wpLoadList;
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
index 2e55d3cb..7cadc814 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
@@ -12,10 +12,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
-import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
-import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
-import org.springblade.desk.dashboard.pojo.entity.DsProcessMeasuringToolEntity;
-import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity;
+import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
@@ -26,6 +23,7 @@ import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.LoadSubOrderVO;
+import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO;
import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
@@ -89,6 +87,8 @@ public class PdaLoadServiceImpl extends BaseServiceImpl