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