From 4b3805d3686d58e3b71f8c1338841e48339e0dd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Tue, 27 Jan 2026 19:18:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E9=97=B4=E8=AE=A2=E5=8D=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=BC=80=E5=8F=91=EF=BC=9A=E5=90=88=E6=89=B9=E3=80=81?= =?UTF-8?q?=E5=89=8D=E5=B7=A5=E8=A3=85=E5=87=86=E5=A4=87=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E5=87=86=E5=A4=87=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/common/utils/CommonUtil.java | 98 ++++++++++++++----- .../desk/order/pojo/entity/YieldOrder.java | 2 +- .../desk/order/pojo/vo/YieldOrderVo.java | 5 + .../desk/produce/pojo/dto/InBatchesDTO.java | 5 +- .../pojo/dto/QueryByReadStatusDTO.java | 59 +++++++++++ .../YieldOrderDTO.java} | 7 +- .../desk/produce/pojo/entity/WorkOrder.java | 2 +- .../produce/pojo/entity/WorkOrderRun.java | 4 + .../desk/produce/pojo/entity/WorkPlan.java | 4 +- .../produce/pojo/vo/QueryByReadStatusVO.java | 74 ++++++++++++++ .../quality/pojo/entity/InspectionTask.java | 4 +- .../service/impl/YieldOrderServiceImpl.java | 4 +- .../desk/order/wrapper/YieldOrderWrapper.java | 11 +++ .../controller/RbProduceManageController.java | 5 +- .../controller/SjProduceManageController.java | 61 ++++++++---- .../desk/produce/mapper/WorkOrderMapper.java | 4 + .../desk/produce/mapper/WorkOrderMapper.xml | 59 +++++++++++ .../produce/service/IWorkOrderService.java | 8 ++ .../service/impl/WorkOrderServiceImpl.java | 72 ++++++++++++-- 19 files changed, 424 insertions(+), 64 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/QueryByReadStatusDTO.java rename blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/{vo/YieldOrderVO.java => dto/YieldOrderDTO.java} (83%) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/QueryByReadStatusVO.java diff --git a/blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java b/blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java index 28a8202e..46152552 100644 --- a/blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java +++ b/blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java @@ -1,30 +1,8 @@ -/** - * BladeX Commercial License Agreement - * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. - *

- * Use of this software is governed by the Commercial License Agreement - * obtained after purchasing a license from BladeX. - *

- * 1. This software is for development use only under a valid license - * from BladeX. - *

- * 2. Redistribution of this software's source code to any third party - * without a commercial license is strictly prohibited. - *

- * 3. Licensees may copyright their own code but cannot use segments - * from this software for such purposes. Copyright of this software - * remains with BladeX. - *

- * Using this software signifies agreement to this License, and the software - * must not be used for illegal purposes. - *

- * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is - * not liable for any claims arising from secondary or illegal development. - *

- * Author: Chill Zhuang (bladejava@qq.com) - */ package org.springblade.common.utils; +import java.lang.reflect.Field; +import java.util.*; + /** * 通用工具类 * @@ -32,4 +10,74 @@ package org.springblade.common.utils; */ public class CommonUtil { + /** + * 判断对象所有字段值是否都为空 + * @param obj 待检查的实体类对象 + * @return true=所有字段为空,false=至少一个字段非空 + */ + public static boolean isAllFieldsEmpty(Object obj) { + // 1. 先判断对象本身是否为null + if (obj == null) { + return true; + } + + // 2. 获取对象的所有声明字段(包括private字段,不包含父类字段) + Class clazz = obj.getClass(); + Field[] fields = clazz.getDeclaredFields(); + + // 3. 无字段则视为空对象 + if (fields == null || fields.length == 0) { + return true; + } + + try { + // 4. 遍历所有字段,检查值是否为空 + for (Field field : fields) { + field.setAccessible(true); // 突破private访问限制 + Object fieldValue = field.get(obj); + + // 只要有一个字段非空,立即返回false + if (isFieldValueNotEmpty(fieldValue)) { + return false; + } + } + } catch (IllegalAccessException e) { + throw new RuntimeException("检查对象字段空值时发生异常", e); + } + + // 5. 所有字段都为空 + return true; + } + + /** + * 辅助方法:判断单个字段值是否非空 + */ + private static boolean isFieldValueNotEmpty(Object value) { + if (value == null) { + return false; + } + + // 字符串:trim后空串视为空 + if (value instanceof String) { + return !((String) value).trim().isEmpty(); + } + + // 集合:空集合视为空 + if (value instanceof Collection) { + return !((Collection) value).isEmpty(); + } + + // Map:空Map视为空 + if (value instanceof Map) { + return !((Map) value).isEmpty(); + } + + // 数组:长度为0视为空 + if (value.getClass().isArray()) { + return ((Object[]) value).length > 0; + } + + // 其他类型(如Integer/Long等包装类):非null即视为非空 + return true; + } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java index 8051fbe3..13e080cc 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java @@ -117,7 +117,7 @@ public class YieldOrder extends BaseEntity { * 生产数量 */ @TableField(value = "YP_QTY") - private Long ypQty; + private Double ypQty; /** * 产品系列(mesYieldPlan.PRODUCT_Line) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/YieldOrderVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/YieldOrderVo.java index b78acb55..b2db5aab 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/YieldOrderVo.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/YieldOrderVo.java @@ -2,6 +2,7 @@ package org.springblade.desk.order.pojo.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springblade.desk.order.pojo.entity.YieldOrder; @@ -41,4 +42,8 @@ public class YieldOrderVo extends YieldOrder { * 订单类型名称 */ String yieldTypeName; + + @Schema(description = "状态值") + private String statusTitle; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/InBatchesDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/InBatchesDTO.java index 5b0801ec..b154537d 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/InBatchesDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/InBatchesDTO.java @@ -14,7 +14,7 @@ public class InBatchesDTO { private Long id; @Schema(description = "加工数量") - private Long makeQty; + private Double makeQty; @Schema(description = "批次") private String batchNo; @@ -28,5 +28,8 @@ public class InBatchesDTO { @Schema(description = "备注") private String memo; + @Schema(description = "分批原因") + private String batchReason; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/QueryByReadStatusDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/QueryByReadStatusDTO.java new file mode 100644 index 00000000..29840784 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/QueryByReadStatusDTO.java @@ -0,0 +1,59 @@ +package org.springblade.desk.produce.pojo.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 前工装准备列表 数据传输对象实体类 + * + * @author litao + */ +@Data +public class QueryByReadStatusDTO { + + @Schema(description = "车间订单号") + private String woCode; + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "产品名称") + private String partName; + + @Schema(description = "流程卡号") + private String cardNo; + + @Schema(description = "镀种信息") + private String plate; + + @Schema(description = "生产标识") + private String productIdent; + + @Schema(description = "订单优先级") + private Integer priority; + + @Schema(description = "需求交期-开始") + private Date demandDateStart; + + @Schema(description = "需求交期-结束") + private Date demandDateEnd; + + @Schema(description = "计划下达时间-开始") + private Date releaseDateStart; + + @Schema(description = "计划下达时间-结束") + private Date releaseDateEnd; + + @Schema(description = "准备状态") + private Integer readStatus; + + @Schema(description = "是否默认") + private Integer isDefault; + + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/YieldOrderVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/YieldOrderDTO.java similarity index 83% rename from blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/YieldOrderVO.java rename to blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/YieldOrderDTO.java index cb6b7748..98997227 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/YieldOrderVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/YieldOrderDTO.java @@ -1,18 +1,17 @@ -package org.springblade.desk.produce.pojo.vo; +package org.springblade.desk.produce.pojo.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springblade.desk.order.pojo.entity.YieldOrder; import java.util.Date; /** - * 烧结配套齐套流转 视图实体类 + * 烧结配套齐套流转 数据传输对象实体类 * * @author litao */ @Data -public class YieldOrderVO { +public class YieldOrderDTO { @Schema(description = "moldFlag") private Integer moldFlag; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrder.java index a7f6c78a..2151746f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrder.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrder.java @@ -285,7 +285,7 @@ public class WorkOrder extends BaseEntity { * 加工数量 */ @Schema(description = "加工数量") - private Long makeQty; + private Double makeQty; /** * 计划完工日期 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java index 7313fb92..4a27dd54 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java @@ -165,4 +165,8 @@ public class WorkOrderRun extends BaseEntity { @Schema(description = "审批时间") private Date approvalTime; + @Schema(description = "分批原因") + private String batchReason; + + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java index e6ea8421..f6b63c8f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java @@ -119,7 +119,7 @@ public class WorkPlan extends BaseEntity { * 合格数量 */ @Schema(description = "合格数量") - private Long qualifiedQty; + private Double qualifiedQty; /** * 报废数量 */ @@ -149,7 +149,7 @@ public class WorkPlan extends BaseEntity { * */ @Schema(description = "") - private Long workQty; + private Double workQty; /** * */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/QueryByReadStatusVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/QueryByReadStatusVO.java new file mode 100644 index 00000000..beb6e5bc --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/QueryByReadStatusVO.java @@ -0,0 +1,74 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springblade.desk.order.pojo.entity.YieldOrder; + +import java.util.Date; + +/** + * 分批准备数据 视图实体类 + * + * @author litao + */ +@Data +public class QueryByReadStatusVO { + + @Schema(description = "车间订单id") + private Long woId; + + @Schema(description = "准备状态") + private String readStatus; + + @Schema(description = "生产计划号") + private String ypCode; + + @Schema(description = "生产订单号") + private String yoCode; + + @Schema(description = "车间订单号") + private String woCode; + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "零件名称") + private String partName; + + @Schema(description = "流程卡号") + private String cardNo; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "镀种信息") + private String plate; + + @Schema(description = "生产数量") + private Double makeQty; + + @Schema(description = "面积(d㎡)") + private Double poArea; + + @Schema(description = "计划下达时间") + private Date releaseDate; + + @Schema(description = "需求交期") + private Date demandDate; + + @Schema(description = "石墨模具号") + private String moCode; + + @Schema(description = "库位号") + private String moLocal; + + @Schema(description = "压饼模具号") + private String ybCode; + + @Schema(description = "库位号") + private String ybLocal; + + @Schema(description = "备注") + private String memo; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java index 9505fba6..bd754e0a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java @@ -271,7 +271,7 @@ public class InspectionTask extends BaseEntity { * 检验数量 */ @Schema(description = "检验数量") - private Long checkQty; + private Double checkQty; /** * 消耗数量 */ @@ -281,7 +281,7 @@ public class InspectionTask extends BaseEntity { * 合格数量 */ @Schema(description = "合格数量") - private Long qualifiedQty; + private Double qualifiedQty; /** * 报废数量 */ 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 f323fef5..ef0060ed 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 @@ -447,7 +447,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl listWorkOrderVO(IPage pages) { + List records = this.listVO(pages.getRecords()); + records.forEach(r -> r.setStatusName(YieldOrderEnum.getName(r.getStatus()))); + IPage pageVo = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal()); + pageVo.setRecords(records); + return pageVo; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java index 8795830c..85895337 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java @@ -14,10 +14,13 @@ import org.springblade.desk.produce.pojo.dto.*; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.vo.BatchPrepareVO; import org.springblade.desk.produce.pojo.vo.WorkOrderVO; +import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.wrapper.WorkOrderWrapper; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 热表生产管理 * @author litao @@ -72,7 +75,7 @@ public class RbProduceManageController extends BladeController { @PostMapping(value = "/listProProcess") @ApiOperationSupport(order = 6) @Operation(summary = "获取转外协所需数据", description = "传入produceManageDTO") - public R listProProcess(@RequestBody ListProProcessDTO listProProcessDTO) { + public R> listProProcess(@RequestBody ListProProcessDTO listProProcessDTO) { return R.data(workOrderService.listProProcess(listProProcessDTO)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/SjProduceManageController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/SjProduceManageController.java index 5bc60195..41780dc2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/SjProduceManageController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/SjProduceManageController.java @@ -1,28 +1,27 @@ package org.springblade.desk.produce.controller; import com.alibaba.nacos.common.utils.StringUtils; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.pojo.vo.YieldOrderVo; import org.springblade.desk.order.service.IYieldOrderService; -import org.springblade.desk.produce.pojo.dto.InBatchesDTO; -import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; -import org.springblade.desk.produce.pojo.vo.WorkOrderVO; -import org.springblade.desk.produce.pojo.vo.YieldOrderVO; -import org.springblade.desk.produce.wrapper.WorkOrderWrapper; +import org.springblade.desk.order.wrapper.YieldOrderWrapper; +import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO; +import org.springblade.desk.produce.pojo.dto.YieldOrderDTO; +import org.springblade.desk.produce.pojo.vo.QueryByReadStatusVO; +import org.springblade.desk.produce.service.IWorkOrderService; import org.springframework.web.bind.annotation.*; /** @@ -38,25 +37,25 @@ public class SjProduceManageController extends BladeController { private final IYieldOrderService yieldOrderService; + private final IWorkOrderService workOrderService; + @GetMapping("/page") @ApiOperationSupport(order = 1) @Operation(summary = "烧结配套齐套流转列表", description = "传入WorkOrderVO") - public R> page(YieldOrderVO yieldOrder, Query query) { + public R> page(YieldOrderDTO yieldOrder, Query query) { Integer moldFlag = yieldOrder.getMoldFlag(); Integer kitFlag = yieldOrder.getKitFlag(); if (moldFlag == null || kitFlag == null) { throw new ServiceException("缺少必要参数:moldFlag、kitFlag"); } LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(YieldOrder::getStatus, YieldOrder.CUR_STATUS_NORMAL); - queryWrapper.and(wrapper -> wrapper.eq(YieldOrder::getYieldType, YieldOrder.YIELD_TYPE_2).or().like(YieldOrder::getMemo, "铆卡钉")); + queryWrapper.eq(YieldOrder::getStatus, 10000); + queryWrapper.and(wrapper -> wrapper.eq(YieldOrder::getYieldType, 12002).or().like(YieldOrder::getMemo, "铆卡钉")); if (moldFlag == 0) { queryWrapper.and(wrapper -> wrapper.isNull(YieldOrder::getSjMoldPreparation).or().ne(YieldOrder::getSjMoldPreparation, YieldOrder.SJ_MOLD_PREPARATION_2)); - } - if (moldFlag == 1 && kitFlag == 0) { + } else if (moldFlag == 1 && kitFlag == 0) { queryWrapper.and(wrapper -> wrapper.isNull(YieldOrder::getSjKitPreparation).ne(YieldOrder::getSjKitPreparation, YieldOrder.SJ_KIT_PREPARATION_2)); - } - if (moldFlag == 1 && kitFlag == 1) { + } else if (moldFlag == 1 && kitFlag == 1) { queryWrapper.eq(YieldOrder::getSjKitPreparation, YieldOrder.SJ_KIT_PREPARATION_2); } queryWrapper.like(StringUtils.isNotBlank(yieldOrder.getYpCode()), YieldOrder::getYpCode, yieldOrder.getYpCode()); @@ -66,20 +65,46 @@ public class SjProduceManageController extends BladeController { queryWrapper.between(yieldOrder.getDemandDateStart() != null && yieldOrder.getDemandDateEnd() != null, YieldOrder::getDemandDate, yieldOrder.getDemandDateStart(), yieldOrder.getDemandDateEnd()); queryWrapper.between(yieldOrder.getReleaseDateStart() != null && yieldOrder.getReleaseDateEnd() != null, YieldOrder::getReleaseDate, yieldOrder.getReleaseDateStart(), yieldOrder.getReleaseDateEnd()); IPage page = yieldOrderService.page(Condition.getPage(query), queryWrapper); - return R.data(page); + return R.data(YieldOrderWrapper.build().listWorkOrderVO(page)); } @PostMapping(value = "/moldComplete") @ApiOperationSupport(order = 2) - @Operation(summary = "模具准备完成", description = "yoId") + @Operation(summary = "模具准备完成", description = "yoId") public R moldComplete(@RequestParam Long yoId) { return R.data(yieldOrderService.moldComplete(yoId)); } @PostMapping(value = "/sendKit") @ApiOperationSupport(order = 3) - @Operation(summary = "烧结齐套发送", description = "yoId") + @Operation(summary = "烧结齐套发送", description = "yoId") public R sendKit(@RequestParam Long yoId) { return R.data(yieldOrderService.sendKit(yoId)); } + + @PostMapping(value = "/interlocking") + @ApiOperationSupport(order = 4) + @Operation(summary = "合批", description = "woIds") + public R interlocking(@RequestParam String woIds) { + return R.data(workOrderService.interlocking(woIds)); + } + + @GetMapping("/queryByReadStatus") + @ApiOperationSupport(order = 5) + @Operation(summary = "前工装准备列表", description = "传入QueryByReadStatusDTO") + public R> queryByReadStatus(QueryByReadStatusDTO queryByReadStatusDTO, Query query) { + // 判断queryByReadStatusDTO对象里面的所有字段值都为空 + if (CommonUtil.isAllFieldsEmpty(queryByReadStatusDTO)) { + queryByReadStatusDTO.setIsDefault(1); + } + IPage pages = workOrderService.queryByReadStatusPage(Condition.getPage(query), queryByReadStatusDTO); + return R.data(pages); + } + + @PostMapping(value = "/setReadStatus") + @ApiOperationSupport(order = 6) + @Operation(summary = "准备提交", description = "woIds") + public R setReadStatus(@RequestParam String woIds) { + return R.data(workOrderService.setReadStatus(woIds)); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java index b625dac2..c7ab493f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java @@ -2,8 +2,10 @@ 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.dto.QueryByReadStatusDTO; import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; import org.springblade.desk.produce.pojo.entity.WorkOrder; +import org.springblade.desk.produce.pojo.vo.QueryByReadStatusVO; import org.springblade.desk.produce.pojo.vo.WorkOrderVO; import java.util.List; @@ -36,4 +38,6 @@ public interface WorkOrderMapper extends BaseMapper { WorkOrder getMaxByMesCardNo(String codePattern); String getMaxCardNo(); + + List queryByReadStatusPage(IPage page, QueryByReadStatusDTO query); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml index 43122d7c..1a866a27 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml @@ -124,5 +124,64 @@ WHERE ROWNUM = 1 + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index cedefa27..f27a6098 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.produce.pojo.dto.InBatchesDTO; import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; +import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO; import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; import org.springblade.desk.produce.pojo.entity.WorkPlanRun; import org.springblade.desk.produce.pojo.vo.BatchPrepareVO; +import org.springblade.desk.produce.pojo.vo.QueryByReadStatusVO; import org.springblade.desk.produce.pojo.vo.WorkOrderVO; import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO; @@ -45,4 +47,10 @@ public interface IWorkOrderService extends BaseService { *

方法描述: 转单加载组装数据

*/ List listProProcess(ListProProcessDTO listProProcessDTO); + + boolean interlocking(String woIds); + + IPage queryByReadStatusPage(IPage page, QueryByReadStatusDTO queryByReadStatusDTO); + + boolean setReadStatus(String woIds); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index ba491d59..a488c39b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; 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.service.IProcessAbilityService; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.service.IBsProcessSetService; @@ -18,12 +19,10 @@ import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.WorkOrderMapper; import org.springblade.desk.produce.pojo.dto.InBatchesDTO; import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; +import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO; import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; import org.springblade.desk.produce.pojo.entity.*; -import org.springblade.desk.produce.pojo.vo.BatchPrepareVO; -import org.springblade.desk.produce.pojo.vo.WorkOrderVO; -import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO; -import org.springblade.desk.produce.pojo.vo.WorkPlanVO; +import org.springblade.desk.produce.pojo.vo.*; import org.springblade.desk.produce.service.*; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.entity.PlanTest; @@ -141,10 +140,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl woIdList = Arrays.stream(woIds.split(",")).map(Long::parseLong).toList(); + if (woIdList.size() <= 1) { + return false; + } + double quantity = 0d; + WorkOrder firstWorkOrder = null; + WorkOrder workOrder; + for (Long woId : woIdList) { + workOrder = this.getById(woId); + + if (workOrder != null) { + WorkPlan workPlan = workPlanService.getById(workOrder.getWpId()); + if (workPlan != null && workPlan.getNextWpId() != null) { + throw new ServiceException("不是最后一道工序,不允许合批!"); + } + // 合批之后总数量 + quantity = quantity + workOrder.getMakeQty(); + if (firstWorkOrder == null) { + firstWorkOrder = workOrder; + } else { + YieldOrder yieldOrder = yieldOrderService.getById(workOrder.getYoId()); + YieldOrder firstYieldOrder = yieldOrderService.getById(firstWorkOrder.getYoId()); + // 验证其他订单与第一个订单必须是同一生产订单下的车间订单才能合并 + if (!firstYieldOrder.getYoCode().equals(yieldOrder.getYoCode())) { + throw new ServiceException("生产订单号不一致不能合批!"); + } + workOrder.setRunStatus(WorkOrder.RUN_STATUS_VOIDED); + workOrder.setMakeQty(0d); + workOrder.setCloseMan(userId); + workOrder.setCloseTime(new Date()); + this.updateById(workOrder); + } + } + } + firstWorkOrder.setMakeQty(quantity); + return this.updateById(firstWorkOrder); + } + + @Override + public IPage queryByReadStatusPage(IPage page, QueryByReadStatusDTO queryByReadStatusDTO) { + return page.setRecords(baseMapper.queryByReadStatusPage(page, queryByReadStatusDTO)); + } + + @Override + public boolean setReadStatus(String woIds) { + List woIdList = Arrays.stream(woIds.split(",")).map(Long::parseLong).toList(); + if (CollectionUtils.isEmpty(woIdList)) { + return false; + } + List orders = this.list(Wrappers.lambdaQuery(WorkOrder.class).in(WorkOrder::getId, woIdList)); + orders.forEach(workOrder -> workOrder.setReadStatus(1)); + return this.updateBatchById(orders); + } + private boolean checkWp(WorkPlan wp, Integer runType) { //不分派工序不能操作 BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId());