diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java new file mode 100644 index 00000000..772262ef --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java @@ -0,0 +1,114 @@ +package org.springblade.desk.produce.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 移交记录 实体类 + * @author BladeX + */ +@Data +@TableName("MES_HANDOVER_RECORD") +@Schema(description = "HandoverRecord对象") +@EqualsAndHashCode(callSuper = true) +public class HandoverRecord extends BaseEntity { + + /** + * 入库单 + */ + public static Short HR_TYPE_IN_WAREHOUSE = 0; + /** + * 转工单 + */ + public static Short HR_TYPE_TRANSFER = 1; + /** + * 待移交 + */ + public static Integer RUN_STATUS_WAIT = 1; + /** + * 完成 + */ + public static Integer RUN_STATUS_COMPLETE = 2; + public static Map hrTypeMap = new HashMap(2); + public static Map runStatusMap = new HashMap(2); + + static { + hrTypeMap.put(HR_TYPE_IN_WAREHOUSE, "入库单"); + hrTypeMap.put(HR_TYPE_TRANSFER, "转工单"); + } + + static { + runStatusMap.put(RUN_STATUS_WAIT, "待移交"); + runStatusMap.put(RUN_STATUS_COMPLETE, "完成"); + } + + @Schema(description = "单号") + private String hrCode; + + @Schema(description = "移交类型") + private Short hrType; + + @Schema(description = "车间Id") + private Long woId; + + @Schema(description = "车间订单号") + private String woCode; + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "路线卡号") + private String cardNo; + + @Schema(description = "生产标识") + private String prodIdent; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "移交部门") + private String handoverUnit; + + @Schema(description = "移交数量") + private Double handoverQty; + + @Schema(description = "一级工序(B号)") + private String roamNo; + + @Schema(description = "接收部门") + private String recDept; + + @Schema(description = "备注") + private String memo; + + @Schema(description = "打印时间") + private Date printTime; + + @Schema(description = "打印标记") + private Integer printFlag; + + @Schema(description = "外协交件单号") + private String deliverKey; + + @TableField(exist = false) + @Schema(description = "移交类型") + private String hrTypeName; + + @TableField(exist = false) + @Schema(description = "状态") + private String statusName; + + @TableField(exist = false) + @Schema(description = "移交人员") + private String createName; + + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWarehousingVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWarehousingVO.java new file mode 100644 index 00000000..1bcd1654 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWarehousingVO.java @@ -0,0 +1,152 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 入库单打印模型 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class PrintWarehousingVO { + + /** + * 入库单号 + */ + @Schema(description = "入库单号") + private String hrCode; + /** + * 工作单号 生产订单计划单号 + */ + @Schema(description = "工作单号 生产订单计划单号") + private String poCode; + /** + * 车间单号 + */ + @Schema(description = "车间单号") + private String woCode; + /** + * 计划部门 生产订单使用部门 + */ + @Schema(description = "计划部门 生产订单使用部门") + private String useDept; + /** + * 镀钟 生产订单 + */ + @Schema(description = "镀钟 生产订单") + private String plate; + /** + * 生产标识 生产订单 + */ + @Schema(description = "生产标识") + private String prodIdent; + /** + * 型别 生产订单产品型号 + */ + @Schema(description = "产品型号") + private String productTypePart; + /** + * 零件号 生产订单 + */ + @Schema(description = "零件号") + private String partCode; + /** + * 名称 生产订单 + */ + @Schema(description = "名称") + private String partName; + /** + * 产品系列 pj_bom + */ + @Schema(description = "产品系列") + private String productType; + /** + * 原编码 pj_bom + */ + @Schema(description = "原编码") + private String oldCode; + /** + * 计划数量 生产订单加工数量 + */ + @Schema(description = "计划数量") + private String makeQty; + /** + * 重量 镀前镀后 + */ + @Schema(description = "重量") + private Double weight; + /** + * 批次号 车间订单 + */ + @Schema(description = "批次号") + private String batchNo; + /** + * 提交数量 移交记录移交数量 + */ + @Schema(description = "提交数量") + private String handoverQty; + /** + * 车间提交人 移交记录移交人 + */ + @Schema(description = "车间提交人") + private String createMan; + /** + * 计划员 生产订单 + */ + @Schema(description = "计划员") + private String planUser; + /** + * 使用部门 + */ + @Schema(description = "使用部门") + private String recDept; + /** + * 制表日期 + */ + @Schema(description = "制表日期") + private String tableDate; + /** + * 备注 + */ + @Schema(description = "备注") + private String memo; + /** + * 保管员 + */ + @Schema(description = "保管员") + private String custodian; + /** + * 委托车间 + */ + @Schema(description = "委托车间") + private String entrustDept; + /** + * 废品数 + */ + @Schema(description = "废品数") + private String scrapQty = "0"; + /** + * 试验数 + */ + @Schema(description = "试验数") + private String testQty = "0"; + /** + * 消耗数 + */ + @Schema(description = "消耗数") + private String useQty = "0"; + /** + * 类型 + */ + @Schema(description = "类型") + private Short hrType; + /** + * 工艺路线 + */ + @Schema(description = "工艺路线") + private String primaryCraft; +} diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java index a9f6865d..43c3b31c 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java @@ -9,6 +9,7 @@ import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; import java.util.Map; @@ -28,6 +29,7 @@ public interface IErpDataProduceClient { String REWORK_ORDER = API_PREFIX + "/loadReworkOrder"; String PRODUCT_APP_AREA = API_PREFIX + "/productAppArea"; String VERSION = API_PREFIX + "/version"; + String CUSTODIAN = API_PREFIX + "/getCustodian"; /** * 缺件申报-通过零件号获取批次号 @@ -52,4 +54,10 @@ public interface IErpDataProduceClient { */ @GetMapping(VERSION) R getVersionByPartCode(String partCode); + + /** + * 获取保管员 + */ + @GetMapping(CUSTODIAN) + R getCustodianByRecDept(@RequestParam("partCode") String partCode, @RequestParam("recDept") String recDept); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java index 6256a549..fb472640 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java @@ -37,4 +37,9 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient { public R getVersionByPartCode(String partCode) { return R.fail("获取数据失败"); } + + @Override + public R getCustodianByRecDept(String partCode, String recDept) { + return R.fail("获取数据失败"); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index a990f6aa..032c8e41 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -36,6 +36,7 @@ import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrderCraft; import org.springblade.desk.order.pojo.entity.YieldPlan; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; +import org.springblade.desk.order.pojo.enums.YieldPlanEnum; import org.springblade.desk.order.service.IYieldOrderCraftService; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.WorkOrderMapper; @@ -676,16 +677,31 @@ public class YieldOrderServiceImpl extends BaseServiceImpl listWo = workOrderMapper.listByYoId(yo.getId()); + boolean completed = listWo.stream().map(wo -> wo.getRunStatus() >= WorkOrder.RUN_STATUS_COMPLETED).findAny().isPresent(); + if (completed) { + yo.setStatus(curStatus); + } + } else if (YieldOrder.CUR_STATUS_VOIDED.equals(curStatus)) { //整单报废 List listWo = workOrderMapper.selectList(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getYoId, yo.getId())); boolean completed = listWo.stream().map(wo -> WorkOrder.RUN_STATUS_VOIDED.equals(wo.getRunStatus())).findAny().isPresent(); if (completed) { yo.setStatus(curStatus); } - // 生产计划状态变为已完工时,推送至新mes,更新订单状态 -// httpRequestService.pushYieldOrderStatusToNewMes(yo.getCardNo(), curStatus); } + this.updateById(yo); } @Override diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java index a553e092..9d7b66d8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java @@ -118,7 +118,7 @@ public class PdaSaveController { return R.data(pdaSaveService.getUnbindByCard(cardNo)); } - @Operation(summary = "烧结设备解绑解绑") + @Operation(summary = "烧结设备解绑") @PostMapping("/sjDeviceUnBind") public R sjDeviceUnBind(@RequestBody UnBingDeviceVo unBingDeviceVo) { pdaSaveService.sjDeviceUnBind(unBingDeviceVo); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java index 87ca852f..a809b841 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java @@ -1,22 +1,32 @@ package org.springblade.desk.produce.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.springblade.common.utils.CommonUtil; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.log.exception.ServiceException; 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.core.tool.utils.Func; import org.springblade.desk.produce.pojo.dto.PlateAroundDto; import org.springblade.desk.produce.pojo.dto.SavePlateAroundDto; +import org.springblade.desk.produce.pojo.entity.HandoverRecord; import org.springblade.desk.produce.pojo.entity.PlateAround; import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.vo.AfterPlateInVO; import org.springblade.desk.produce.pojo.vo.PlateAroundVO; +import org.springblade.desk.produce.pojo.vo.PrintWarehousingVO; +import org.springblade.desk.produce.service.IHandoverRecordService; import org.springblade.desk.produce.service.IPlateAroundService; +import org.springblade.desk.produce.wrapper.HandoverRecordWrapper; +import org.springblade.job.pojo.entity.JobInfo; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -35,6 +45,8 @@ public class PlateAroundController extends BladeController { private final IPlateAroundService plateAroundService; + private final IHandoverRecordService handoverRecordService; + @GetMapping("/queryPlateAround") @ApiOperationSupport(order = 1) @Operation(summary = "镀前镀后列表(通用)", description = "传入PlateAroundDto") @@ -106,17 +118,40 @@ public class PlateAroundController extends BladeController { public R queryDelLogRecord(PlateAroundDto plateAroundDto, Query query) { return R.data(plateAroundService.queryDelLogRecord(Condition.getPage(query), plateAroundDto)); } + @PostMapping(value = "/savePlateFrontEnter") - @ApiOperationSupport(order = 7) + @ApiOperationSupport(order = 8) @Operation(summary = "保存镀前入库", description = "") public R savePlateFrontEnter(@RequestBody List plateArounds) { - plateAroundService.savePlateFrontEnter(plateArounds); + plateAroundService.savePlateFrontEnter(plateArounds, PlateAround.BEFORE_PLAT_IN); return R.success(); } + @PostMapping(value = "/getByPartCode") - @ApiOperationSupport(order = 8) + @ApiOperationSupport(order = 9) @Operation(summary = "获取零件信息", description = "") public R getByPartCode(@RequestParam String partCode) { return R.data(plateAroundService.getByPartCode(partCode)); } + + @GetMapping("/queryNewRecord") + @ApiOperationSupport(order = 10) + @Operation(summary = "入库单列表", description = "") + public R> queryNewRecord(HandoverRecord handoverRecord, Query query) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(handoverRecord); + if (CommonUtil.isAllFieldsEmpty(handoverRecord)) { + wrapper.isNull(HandoverRecord::getPrintTime); + } + wrapper.eq(HandoverRecord::getCreateUser, AuthUtil.getUserId()).orderByDesc(HandoverRecord::getHrCode); + IPage pages = handoverRecordService.page(Condition.getPage(query), wrapper); + return R.data(HandoverRecordWrapper.build().listHandoverRecordVO(pages)); + } + + @PostMapping(value = "/handoverRecordPrint") + @ApiOperationSupport(order = 11) + @Operation(summary = "入库单打印", description = "") + public R> handoverRecordPrint(@RequestParam String hrIds) { + return R.data(handoverRecordService.handoverRecordPrint(Func.toLongList(hrIds))); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java new file mode 100644 index 00000000..2e95d572 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java @@ -0,0 +1,15 @@ +package org.springblade.desk.produce.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.desk.produce.pojo.entity.HandoverRecord; + +/** + * 移交记录 Mapper 接口 + * + * @author BladeX + */ +public interface HandoverRecordMapper extends BaseMapper { + + Double getPaSumWeight(Long id); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml new file mode 100644 index 00000000..3a6e4ecb --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java new file mode 100644 index 00000000..e83d6404 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java @@ -0,0 +1,17 @@ +package org.springblade.desk.produce.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.produce.pojo.entity.HandoverRecord; +import org.springblade.desk.produce.pojo.vo.PrintWarehousingVO; + +import java.util.List; + +/** + * 移交记录 服务类 + * + * @author BladeX + */ +public interface IHandoverRecordService extends BaseService { + + List handoverRecordPrint(List longList); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java index b67bbd16..fb56fe1d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java @@ -35,7 +35,7 @@ public interface IPlateAroundService extends BaseService { IPage queryDelLogRecord(IPage page, PlateAroundDto plateAroundDto); - void savePlateFrontEnter(List plateArounds); + void savePlateFrontEnter(List plateArounds, Short paType); DsPartEntity getByPartCode(String partCode); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java index b322c44f..6f7b4522 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java @@ -8,6 +8,7 @@ import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO; import org.springblade.scheduling.pojo.entity.WorkPlanEntity; import org.springblade.desk.produce.pojo.vo.WorkPlanVO; +import java.util.Date; import java.util.List; /** @@ -43,4 +44,9 @@ public interface IWorkPlanService extends BaseService { WorkPlan findMaxHostWorkUnitByWoId(Long id, int i); void verifyMakeUnit(WorkPlan prWorkPlan); + + /** + * 工序完成 + */ + void workPlanEnd(Long wpId, Date putStoreTime, Double makeQty); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java new file mode 100644 index 00000000..d4038646 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java @@ -0,0 +1,134 @@ +package org.springblade.desk.produce.service.impl; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.StringUtil; +import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.service.IYieldOrderService; +import org.springblade.desk.produce.mapper.HandoverRecordMapper; +import org.springblade.desk.produce.pojo.entity.HandoverRecord; +import org.springblade.desk.produce.pojo.entity.WorkOrder; +import org.springblade.desk.produce.pojo.vo.PrintWarehousingVO; +import org.springblade.desk.produce.service.IHandoverRecordService; +import org.springblade.desk.produce.service.IWorkOrderService; +import org.springblade.desk.produce.service.IWorkPlanService; +import org.springblade.erpdata.feign.IErpDataProduceClient; +import org.springblade.system.cache.UserCache; +import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.User; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +/** + * 移交记录 服务实现类 + * + * @author BladeX + * @since 2025-11-28 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class HandoverRecordServiceImpl extends BaseServiceImpl implements IHandoverRecordService { + + private final IWorkOrderService prWorkOrderService; + + private final IYieldOrderService yieldOrderService; + + private final IWorkPlanService workPlanService; + + private final IErpDataProduceClient erpDataProduceClient; + + @Override + @Transactional(rollbackFor = Exception.class) + public List handoverRecordPrint(List longList) { + if (CollectionUtils.isEmpty(longList)) { + return null; + } + List list = new ArrayList<>(); + HandoverRecord hr; + PrintWarehousingVO printWarehousing; + YieldOrder yo; + Double totalWeight; + Date date = new Date(); + for (Long i : longList) { + hr = this.getById(i); + // 保存打印时间、更新打印标记 + hr.setPrintTime(date); + hr.setPrintFlag(1); + + printWarehousing = new PrintWarehousingVO(); + printWarehousing.setHrCode(hr.getHrCode()); + printWarehousing.setHrType(hr.getHrType()); + printWarehousing.setWoCode(hr.getWoCode()); + printWarehousing.setUseDept(hr.getRecDept()); + printWarehousing.setProdIdent(hr.getProdIdent()); + printWarehousing.setPartCode(hr.getPartCode()); + printWarehousing.setBatchNo(hr.getBatchNo()); + printWarehousing.setHandoverQty(String.valueOf(hr.getHandoverQty())); + printWarehousing.setRecDept(hr.getRecDept()); + User user = UserCache.getUser(hr.getCreateUser()); + printWarehousing.setCreateMan(user != null ? user.getRealName() : ""); + printWarehousing.setTableDate(DateFormatUtils.format(hr.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + printWarehousing.setMemo(hr.getMemo()); + + // 打印结束最后一道工序 + WorkOrder wo = prWorkOrderService.getById(hr.getWoId()); + printWarehousing.setScrapQty(wo.getScrapQty().toString()); + printWarehousing.setTestQty(wo.getTestQty().toString()); + //手动创建的在打票时改为已交接 + yo = yieldOrderService.getById(wo.getYoId()); + prWorkOrderService.updateStatus(Collections.singletonList(wo.getId()), WorkOrder.RUN_STATUS_COMPLETED, AuthUtil.getUserId(), ""); + // 如果不是第一次打印,保存第一次打印时间 + if (wo.getPutStoreTime() != null) { + workPlanService.workPlanEnd(wo.getWpId(), wo.getPutStoreTime(), wo.getMakeQty()); + } else { + workPlanService.workPlanEnd(wo.getWpId(), new Date(), wo.getMakeQty()); + } + + printWarehousing.setPoCode(yo.getYpCode()); + printWarehousing.setMakeQty(String.valueOf(yo.getYpQty())); + printWarehousing.setPlate(yo.getPlate()); + printWarehousing.setPartName(yo.getPartName()); + printWarehousing.setPlanUser(yo.getPlanUser()); + printWarehousing.setProductTypePart(yo.getProductType()); + printWarehousing.setPrimaryCraft(yo.getPrimaryCraft()); + //zxh 20241212 保管员取值根据是否更改接受部门增加分支 + if (hr.getRecDept().matches("[0-9]+")) { + // 2025-07-23 线上迁移 + log.info("getCustodianByRecDept开始时间{}", System.currentTimeMillis()); +// String custodianByRecDept = this.getCustodianByRecDept(yo.getPartCode(), hr.getRecDept()); + // 2025-07-23 线上迁移 + log.info("getCustodianByRecDept结束时间{}", System.currentTimeMillis()); +// printWarehousing.setCustodian(custodianByRecDept); + } else { + printWarehousing.setCustodian(yo.getCustodian()); + } + + // 委托车间 + printWarehousing.setEntrustDept(yo.getEntrustDept()); + //zxh 20241212 更改入库单中产品系列取值 + printWarehousing.setProductType(yo.getProductType()); + // 重量合计 + totalWeight = baseMapper.getPaSumWeight(yo.getId()); + printWarehousing.setWeight(totalWeight != 0 ? totalWeight : null); + + list.add(printWarehousing); + } + return list; + } + + private String getCustodianByRecDept(String partCode, String recDept) { + R byPartCode = erpDataProduceClient.getCustodianByRecDept(partCode, recDept); + return byPartCode.getData(); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index 48c4657c..0c94f12c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -410,7 +410,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl mtuList = macToolUseService.listByParams(bsRackSet.getId(), bsFeiBaSet != null ? bsFeiBaSet.getId() : null, equipmentCard != null ? equipmentCard.getId() : null, null); + List mtuList = macToolUseService.listByParams(bsRackSet != null ? bsRackSet.getId() : null, bsFeiBaSet != null ? bsFeiBaSet.getId() : null, equipmentCard != null ? equipmentCard.getId() : null, null); macToolUseService.unMacToolUseBind(mtuList); this.unBindDetail(mtuList); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java index d5d1a2a5..3c0d02bd 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java @@ -12,6 +12,10 @@ import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.desk.basic.pojo.entity.Oem; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.service.IOemService; +import org.springblade.desk.basic.service.ITeamSetService; import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.service.IDsPartService; @@ -59,6 +63,10 @@ public class PlateAroundServiceImpl extends BaseServiceImpl queryByReadStatus(IPage page, PlateAroundDto plateAroundDto) { return page.setRecords(baseMapper.queryByReadStatus(page, plateAroundDto)); @@ -176,28 +184,27 @@ public class PlateAroundServiceImpl extends BaseServiceImpl list) { - if (list == null || list.size() == 0) { + public void savePlateFrontEnter(List list, Short paType) { + if (CollectionUtils.isEmpty(list)) { return; } int next = 0; List woList = new ArrayList<>(list.size()); WorkOrder wo; Date date = new Date(); - Short paType = PlateAround.CUR_STATUS_NEW; for (PlateAround plateAround : list) { this.savePlateAround(AuthUtil.getUser(), plateAround, paType, next, Boolean.FALSE); if (paType.equals(PlateAround.AFTER_PLAN_IN)) { WorkPlan prWorkPlan = workPlanMapper.selectById(plateAround.getWpId()); wo = workOrderService.getById(prWorkPlan.getWoId()); - wo.setHandoverTime( date); + wo.setHandoverTime(date); woList.add(wo); // 计算主工序对应的金额 //bsTeamWagesLevelService.countTeamSalary(wo.getWoId()); } - if (paType.equals(PlateAround.AFTER_PLAN_IN)) { - // prHandoverRecordService.saveHandoverRecord(woList, AuthUtil.getUser()); - } + } + if (paType.equals(PlateAround.AFTER_PLAN_IN)) { + // prHandoverRecordService.saveHandoverRecord(woList, AuthUtil.getUser()); } } @@ -231,7 +238,7 @@ public class PlateAroundServiceImpl extends BaseServiceImpl plateAroundList= baseMapper.selectList(Wrappers.lambdaQuery(). + List plateAroundList = baseMapper.selectList(Wrappers.lambdaQuery(). likeLeft(PlateAround::getPaCode, codePattern).orderByAsc(PlateAround::getPaCode)); String maxCode = plateAroundList.size() > 0 ? plateAroundList.get(0).getPaCode() : null; if (maxCode != null) { @@ -408,10 +415,11 @@ public class PlateAroundServiceImpl extends BaseServiceImpl { + + public static HandoverRecordWrapper build() { + return new HandoverRecordWrapper(); + } + + @Override + public HandoverRecord entityVO(HandoverRecord handoverRecord) { + HandoverRecord handoverRecordVO = Objects.requireNonNull(BeanUtil.copyProperties(handoverRecord, HandoverRecord.class)); +// User createUser = UserCache.getUser(workOrderVO.getCreateUser()); +// User updateUser = UserCache.getUser(workOrderVO.getUpdateUser()); +// workOrderVO.setCreateUserName(createUser.getName()); +// workOrderVO.setUpdateUserName(updateUser.getName()); + return handoverRecordVO; + } + + public IPage listHandoverRecordVO(IPage pages) { + List handoverRecords = pages.getRecords(); + for (HandoverRecord handoverRecord : handoverRecords) { + handoverRecord.setHrTypeName(HandoverRecord.hrTypeMap.get(handoverRecord.getHrType())); + handoverRecord.setStatusName(HandoverRecord.runStatusMap.get(handoverRecord.getStatus())); + User user = UserCache.getUser(handoverRecord.getCreateUser()); + handoverRecord.setCreateName(user != null ? user.getRealName() : ""); + } + pages.setRecords(handoverRecords); + return pages; + } + + +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java index 072dfed7..0d084e8c 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java @@ -50,4 +50,10 @@ public class ErpDataProduceClient implements IErpDataProduceClient { public R getVersionByPartCode(String partCode) { return R.data(erpDataProduceService.getVersionByPartCode(partCode)); } + + @Override + public R getCustodianByRecDept(String partCode, String recDept) { + return R.data(erpDataProduceService.getCustodianByRecDept(partCode, recDept)); + } + } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java index e6f27808..f9783317 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java @@ -23,4 +23,6 @@ public interface ErpDataProduceMapper extends Mapper { Map getProductAppareaByPartCode(String partCode); String getVersionByPartCode(String partCode); + + String getCustodianByRecDept(String partCode, String recDept); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml index 17d7b3d3..0ec275d2 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml @@ -70,4 +70,12 @@ select b.version from (select version from dba_mgr.drwversion@erp_mes_link a where a.drwpartno in ( select drwpartno from dba_mgr.t_prtbasdef@erp_mes_link where prtno = #{partCode})) b where rownum=1 + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java index a1f5f332..24d7c8f6 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java @@ -22,4 +22,6 @@ public interface IErpDataProduceService { Map getProductAppareaByPartCode(String partCode); String getVersionByPartCode(String partCode); + + String getCustodianByRecDept(String partCode, String recDept); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java index 08370dc0..c7b28bbc 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java @@ -41,4 +41,9 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { public String getVersionByPartCode(String partCode) { return erpDataProduceMapper.getVersionByPartCode(partCode); } + + @Override + public String getCustodianByRecDept(String partCode, String recDept) { + return erpDataProduceMapper.getCustodianByRecDept(partCode, recDept); + } }