From b19099a4178d7c872a1b30e3bc12b694304e5837 Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Thu, 25 Dec 2025 18:00:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9B=B8=E5=85=B3-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduling/pojo/enums/WorkOrderEnum.java | 62 +++ .../OutsourceProcessController.java | 161 ++++++++ .../scheduling/dto/WorkOrderDto.java | 2 + .../entity/OutsourceProcessEntity.java | 74 ++++ .../entity/YieldOrderCraftEntity.java | 6 + .../excel/OutsourceProcessExcel.java | 93 +++++ .../mapper/OutsourceProcessMapper.java | 64 +++ .../mapper/OutsourceProcessMapper.xml | 37 ++ .../scheduling/mapper/WorkOrderMapper.xml | 35 +- .../service/IOutsourceProcessService.java | 62 +++ .../impl/EquipResourceServiceImpl.java | 24 +- .../impl/OutsourceProcessServiceImpl.java | 63 +++ .../service/impl/WorkOrderServiceImpl.java | 381 ++++++++++-------- .../scheduling/vo/OutsourceProcessVO.java | 46 +++ .../wrapper/OutsourceProcessWrapper.java | 60 +++ 15 files changed, 988 insertions(+), 182 deletions(-) create mode 100644 blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/OutsourceProcessEntity.java create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/excel/OutsourceProcessExcel.java create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/OutsourceProcessMapper.java create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/OutsourceProcessMapper.xml create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IOutsourceProcessService.java create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/OutsourceProcessServiceImpl.java create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/OutsourceProcessVO.java create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/wrapper/OutsourceProcessWrapper.java diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java new file mode 100644 index 0000000..c8e7438 --- /dev/null +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java @@ -0,0 +1,62 @@ +package org.springblade.scheduling.pojo.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.core.tool.utils.StringPool; + +import java.util.Arrays; + +/** + * 车间订单枚举 + * + * @author lqk + * @date 2025-12-19 9:25 + */ +@Getter +@AllArgsConstructor +public enum WorkOrderEnum { + EMPTY(StringPool.EMPTY, -1), + + /** + * 状态枚举 + */ + STATUS_PRODUCT_WAITING("待生产", 1), + STATUS_PRODUCTING("生产中", 2), + STATUS_INSPECTIONING("检验中", 3), + STATUS_COMPLETED("已完工", 4), + STATUS_ADJUDICATING("审理中", 5), + STATUS_SCRAP("已报废", 6), + STATUS_REWORK("已返工", 7) + ; + final String name; + final int category; + + /** + * 匹配枚举值 + * + * @param name 名称 + * @return BladeUserEnum + */ + public static WorkOrderEnum of(String name) { + return Arrays.stream(WorkOrderEnum.values()) + .filter(userEnum -> userEnum.getName().equalsIgnoreCase(name != null ? name : "web")) + .findFirst() + // 在没有找到匹配项时返回默认值 + .orElse(WorkOrderEnum.EMPTY); + } + + /** + * 根据值获取名称 + * + * @param category + * @return + */ + public static String getName(int category) { + WorkOrderEnum item = Arrays.stream(WorkOrderEnum.values()) + .filter(enumItem -> enumItem.getCategory() == category) + .findFirst() + .orElse(null); + return ObjectUtil.isEmpty(item) ? StringPool.EMPTY : item.getName(); + } +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java new file mode 100644 index 0000000..3b2f91d --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java @@ -0,0 +1,161 @@ +/** + * 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.scheduling.scheduling.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import lombok.AllArgsConstructor; +import jakarta.validation.Valid; + +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.scheduling.scheduling.entity.OutsourceProcessEntity; +import org.springblade.scheduling.scheduling.excel.OutsourceProcessExcel; +import org.springblade.scheduling.scheduling.service.IOutsourceProcessService; +import org.springblade.scheduling.scheduling.vo.OutsourceProcessVO; +import org.springblade.scheduling.scheduling.wrapper.OutsourceProcessWrapper; +import org.springframework.web.bind.annotation.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.tool.constant.BladeConstant; +import java.util.Map; +import java.util.List; +import jakarta.servlet.http.HttpServletResponse; + +/** + * 外协工序表 控制器 + * + * @author BladeX + * @since 2025-12-24 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/outsourceProcess") +@Tag(name = "外协工序表", description = "外协工序表接口") +public class OutsourceProcessController extends BladeController { + + private final IOutsourceProcessService outsourceProcessService; + + /** + * 外协工序表 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @Operation(summary = "详情", description = "传入OutsourceProcess") + public R detail(OutsourceProcessEntity OutsourceProcess) { + OutsourceProcessEntity detail = outsourceProcessService.getOne(Condition.getQueryWrapper(OutsourceProcess)); + return R.data(OutsourceProcessWrapper.build().entityVO(detail)); + } + /** + * 外协工序表 分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @Operation(summary = "分页", description = "传入OutsourceProcess") + public R> list(@Parameter(hidden = true) @RequestParam Map OutsourceProcess, Query query) { + IPage pages = outsourceProcessService.page(Condition.getPage(query), Condition.getQueryWrapper(OutsourceProcess, OutsourceProcessEntity.class)); + return R.data(OutsourceProcessWrapper.build().pageVO(pages)); + } + + /** + * 外协工序表 自定义分页 + */ + @GetMapping("/page") + @ApiOperationSupport(order = 3) + @Operation(summary = "分页", description = "传入OutsourceProcess") + public R> page(OutsourceProcessVO OutsourceProcess, Query query) { + IPage pages = outsourceProcessService.selectOutsourceProcessPage(Condition.getPage(query), OutsourceProcess); + return R.data(pages); + } + + /** + * 外协工序表 新增 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 4) + @Operation(summary = "新增", description = "传入OutsourceProcess") + public R save(@Valid @RequestBody OutsourceProcessEntity OutsourceProcess) { + return R.status(outsourceProcessService.save(OutsourceProcess)); + } + + /** + * 外协工序表 修改 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 5) + @Operation(summary = "修改", description = "传入OutsourceProcess") + public R update(@Valid @RequestBody OutsourceProcessEntity OutsourceProcess) { + return R.status(outsourceProcessService.updateById(OutsourceProcess)); + } + + /** + * 外协工序表 新增或修改 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @Operation(summary = "新增或修改", description = "传入OutsourceProcess") + public R submit(@Valid @RequestBody OutsourceProcessEntity OutsourceProcess) { + return R.status(outsourceProcessService.saveOrUpdate(OutsourceProcess)); + } + + /** + * 外协工序表 删除 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(outsourceProcessService.deleteLogic(Func.toLongList(ids))); + } + + + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export") + @ApiOperationSupport(order = 9) + @Operation(summary = "导出数据", description = "传入OutsourceProcess") + public void export(@Parameter(hidden = true) @RequestParam Map OutsourceProcess, BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(OutsourceProcess, OutsourceProcessEntity.class); + //if (!AuthUtil.isAdministrator()) { + // queryWrapper.lambda().eq(OutsourceProcess::getTenantId, bladeUser.getTenantId()); + //} + //queryWrapper.lambda().eq(OutsourceProcessEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); + List list = outsourceProcessService.export(queryWrapper); + ExcelUtil.export(response, "外协工序表数据" + DateUtil.time(), "外协工序表数据表", list, OutsourceProcessExcel.class); + } + +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/dto/WorkOrderDto.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/dto/WorkOrderDto.java index f2b2978..5700602 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/dto/WorkOrderDto.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/dto/WorkOrderDto.java @@ -40,5 +40,7 @@ public class WorkOrderDto { private Integer schedulingCount; private String schedulingRate; private String productIdent; + private String receiveTime; + private String priorityAps; } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/OutsourceProcessEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/OutsourceProcessEntity.java new file mode 100644 index 0000000..85c062a --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/OutsourceProcessEntity.java @@ -0,0 +1,74 @@ +/** + * 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.scheduling.scheduling.entity; + +import lombok.Data; +import io.swagger.v3.oas.annotations.media.Schema; +import com.baomidou.mybatisplus.annotation.TableName; +import java.math.BigDecimal; +import java.util.Date; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.tenant.mp.TenantEntity; +import java.io.Serial; + +/** + * 外协工序表 实体类 + * + * @author BladeX + * @since 2025-12-24 + */ +@Data +@TableName("MES_OUTSOURCE_PROCESS") +@Schema(description = "MesOutsourceProcess对象") +@EqualsAndHashCode(callSuper = true) +public class OutsourceProcessEntity extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工序id + */ + @Schema(description = "工序id") + private String processId; + /** + * 工序名称 + */ + @Schema(description = "工序名称") + private String processName; + /** + * 时间 + */ + @Schema(description = "时间") + private Integer days; + /** + * 备注 + */ + @Schema(description = "备注") + private String remarks; + +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/YieldOrderCraftEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/YieldOrderCraftEntity.java index c2c1a75..5704257 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/YieldOrderCraftEntity.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/YieldOrderCraftEntity.java @@ -122,4 +122,10 @@ public class YieldOrderCraftEntity extends TenantEntity { @Schema(description = "作业中心") private Long workCenterId; + /** + * 是否外协 + */ + @Schema(description = "是否外协") + private Boolean isOutsource; + } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/excel/OutsourceProcessExcel.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/excel/OutsourceProcessExcel.java new file mode 100644 index 0000000..7c30de5 --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/excel/OutsourceProcessExcel.java @@ -0,0 +1,93 @@ +/** + * 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.scheduling.scheduling.excel; + + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import java.io.Serializable; +import java.io.Serial; + + +/** + * 外协工序表 Excel实体类 + * + * @author BladeX + * @since 2025-12-24 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class OutsourceProcessExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @ColumnWidth(20) + @ExcelProperty("ID") + private BigDecimal id; + /** + * 工序id + */ + @ColumnWidth(20) + @ExcelProperty("工序id") + private BigDecimal processId; + /** + * 工序名称 + */ + @ColumnWidth(20) + @ExcelProperty("工序名称") + private String processName; + /** + * 时间 + */ + @ColumnWidth(20) + @ExcelProperty("时间") + private Long days; + /** + * 备注 + */ + @ColumnWidth(20) + @ExcelProperty("备注") + private String remarks; + /** + * 是否已删除 + */ + @ColumnWidth(20) + @ExcelProperty("是否已删除") + private Long isDeleted; + +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/OutsourceProcessMapper.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/OutsourceProcessMapper.java new file mode 100644 index 0000000..acc6407 --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/OutsourceProcessMapper.java @@ -0,0 +1,64 @@ +/** + * 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.scheduling.scheduling.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.springblade.scheduling.scheduling.entity.OutsourceProcessEntity; +import org.springblade.scheduling.scheduling.excel.OutsourceProcessExcel; +import org.springblade.scheduling.scheduling.vo.OutsourceProcessVO; + +import java.util.List; + +/** + * 外协工序表 Mapper 接口 + * + * @author BladeX + * @since 2025-12-24 + */ +public interface OutsourceProcessMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param OutsourceProcess 查询参数 + * @return List + */ + List selectOutsourceProcessPage(IPage page, OutsourceProcessVO outsourceProcess); + + + /** + * 获取导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List export(@Param("ew") Wrapper queryWrapper); + +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/OutsourceProcessMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/OutsourceProcessMapper.xml new file mode 100644 index 0000000..0f95250 --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/OutsourceProcessMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml index 1b3c0a4..00e2930 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml @@ -92,6 +92,7 @@ a.batch_no AS "batchNo", a.make_qty AS "makeQty", a.card_no AS "cardNO", + g.priority_aps AS "priorityAps", g.product_ident AS "productIdent", f.name AS "currentProcessName", d.name AS "processName", @@ -115,9 +116,9 @@ LEFT JOIN BS_PROCESS_SET f on e.pps_id = f.id LEFT JOIN MES_YIELD_ORDER g on g.id = a.yo_id - a.is_deleted = 0 and b.is_deleted = 0 + a.is_deleted = 0 and b.is_deleted = 0 and a.status in (1,2,3,5) - and (to_char(b.start_time,'YYYY-MM-DD') = #{startTime} or (b.start_time to_date(CONCAT(#{startTime},' 00:00:00'),'YYYY-MM-DD HH24:MI:SS') and b.end_time ]]> to_date(CONCAT(#{startTime},' 23:59:59'),'YYYY-MM-DD HH24:MI:SS'))) + and (to_char(b.start_time,'YYYY-MM-DD') = #{startTime} or to_char(b.end_time,'YYYY-MM-DD') = #{startTime} or (b.start_time to_date(CONCAT(#{startTime},' 00:00:00'),'YYYY-MM-DD HH24:MI:SS') and b.end_time ]]> to_date(CONCAT(#{startTime},' 23:59:59'),'YYYY-MM-DD HH24:MI:SS'))) and a.wo_code = #{woCode} @@ -131,8 +132,20 @@ and d.name = #{processName} + + and a.part_code = #{partCode} + + + and a.batch_no = #{batchNo} + + + and g.receive_time = #{receiveTime} + + + and b.status = #{planStatus} + - order by a.WO_CODE,b.start_time + order by b.start_time,a.WO_CODE