From b885de0d053b3914ec171bc4cb0af5e28cf6b43f Mon Sep 17 00:00:00 2001
From: sunjianxi <839419401@qq.com>
Date: Wed, 10 Dec 2025 16:59:54 +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/SchedulingApplication.java | 2 +
.../controller/EquipResourceController.java | 5 +
.../controller/PersonResourceController.java | 161 +++++++++++++++++
.../controller/YieldOrderController.java | 163 ++++++++++++++++++
.../scheduling/dto/WorkOrderDto.java | 4 +
.../scheduling/entity/EquipAbilityEntity.java | 2 +-
.../entity/EquipResourceEntity.java | 4 +-
.../entity/PersonResourceEntity.java | 6 +
.../scheduling/entity/YieldOrderEntity.java | 18 +-
.../mapper/EquipResourceMapper.java | 2 +-
.../scheduling/mapper/EquipResourceMapper.xml | 6 +-
.../mapper/PersonResourceMapper.java | 2 +
.../mapper/PersonResourceMapper.xml | 14 ++
.../scheduling/mapper/WorkOrderMapper.xml | 4 +
.../scheduling/mapper/YieldOrderMapper.xml | 27 ++-
.../service/IEquipResourceService.java | 2 +
.../service/IPersonResourceService.java | 2 +
.../impl/EquipResourceServiceImpl.java | 146 ++++++++++++----
.../impl/PersonResourceServiceImpl.java | 88 +++++++++-
.../service/impl/WorkOrderServiceImpl.java | 70 +++++++-
.../scheduling/task/EquipResourceJob.java | 15 --
.../scheduling/task/InitResourceJob.java | 30 ++++
.../scheduling/task/SchedulingJob.java | 28 +++
23 files changed, 721 insertions(+), 80 deletions(-)
create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonResourceController.java
create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/YieldOrderController.java
delete mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/task/EquipResourceJob.java
create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/task/InitResourceJob.java
create mode 100644 blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/task/SchedulingJob.java
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/SchedulingApplication.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/SchedulingApplication.java
index e87928d1..78d87633 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/SchedulingApplication.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/SchedulingApplication.java
@@ -29,6 +29,7 @@ import org.springblade.common.constant.LauncherConstant;
import org.springblade.core.cloud.client.BladeCloudApplication;
import org.springblade.core.launch.BladeApplication;
import org.springblade.core.launch.constant.AppConstant;
+import org.springframework.scheduling.annotation.EnableScheduling;
/**
* Desk启动器
@@ -36,6 +37,7 @@ import org.springblade.core.launch.constant.AppConstant;
* @author Chill
*/
@BladeCloudApplication
+@EnableScheduling
public class SchedulingApplication {
public static void main(String[] args) {
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipResourceController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipResourceController.java
index f6c6767a..62308f2d 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipResourceController.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipResourceController.java
@@ -153,4 +153,9 @@ public class EquipResourceController extends BladeController {
ExcelUtil.export(response, "设备资源表数据" + DateUtil.time(), "设备资源表数据表", list, EquipResourceExcel.class);
}
+ @GetMapping("/initEquipResource")
+ @ApiOperationSupport(order = 9)
+ public void initEquipResource(){
+ equipResourceService.initEquipResource();
+ }
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonResourceController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonResourceController.java
new file mode 100644
index 00000000..a04e2f37
--- /dev/null
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonResourceController.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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.annotation.IsAdmin;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.scheduling.scheduling.entity.PersonResourceEntity;
+import org.springblade.scheduling.scheduling.excel.PersonResourceExcel;
+import org.springblade.scheduling.scheduling.service.IPersonResourceService;
+import org.springblade.scheduling.scheduling.vo.PersonResourceVO;
+import org.springblade.scheduling.scheduling.wrapper.PersonResourceWrapper;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 设备资源表 控制器
+ *
+ * @author BladeX
+ * @since 2025-11-12
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/personResource")
+@Tag(name = "人员资源表", description = "人员资源表接口")
+public class PersonResourceController extends BladeController {
+
+ private final IPersonResourceService personResourceService;
+
+ /**
+ * 设备资源表 详情
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @Operation(summary = "详情", description = "传入mesPersonResource")
+ public R detail(PersonResourceEntity entity) {
+ PersonResourceEntity detail = personResourceService.getOne(Condition.getQueryWrapper(entity));
+ return R.data(PersonResourceWrapper.build().entityVO(detail));
+ }
+ /**
+ * 设备资源表 分页
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @Operation(summary = "分页", description = "传入mesPersonResource")
+ public R> list(@Parameter(hidden = true) @RequestParam Map entity, Query query) {
+ IPage pages = personResourceService.page(Condition.getPage(query), Condition.getQueryWrapper(entity, PersonResourceEntity.class));
+ return R.data(PersonResourceWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 设备资源表 自定义分页
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 3)
+ @Operation(summary = "分页", description = "传入mesPersonResource")
+ public R> page(PersonResourceVO entity, Query query) {
+ IPage pages = personResourceService.selectPersonResourcePage(Condition.getPage(query), entity);
+ return R.data(pages);
+ }
+
+ /**
+ * 设备资源表 新增
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @Operation(summary = "新增", description = "传入mesPersonResource")
+ public R save(@Valid @RequestBody PersonResourceEntity entity) {
+ return R.status(personResourceService.save(entity));
+ }
+
+ /**
+ * 设备资源表 修改
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @Operation(summary = "修改", description = "传入mesPersonResource")
+ public R update(@Valid @RequestBody PersonResourceEntity entity) {
+ return R.status(personResourceService.updateById(entity));
+ }
+
+ /**
+ * 设备资源表 新增或修改
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @Operation(summary = "新增或修改", description = "传入mesPersonResource")
+ public R submit(@Valid @RequestBody PersonResourceEntity entity) {
+ return R.status(personResourceService.saveOrUpdate(entity));
+ }
+
+ /**
+ * 设备资源表 删除
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @Operation(summary = "逻辑删除", description = "传入ids")
+ public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+ return R.status(personResourceService.deleteLogic(Func.toLongList(ids)));
+ }
+
+
+ /**
+ * 导出数据
+ */
+ @IsAdmin
+ @GetMapping("/export")
+ @ApiOperationSupport(order = 9)
+ @Operation(summary = "导出数据", description = "传入mesPersonResource")
+ public void export(@Parameter(hidden = true) @RequestParam Map entity, BladeUser bladeUser, HttpServletResponse response) {
+ QueryWrapper queryWrapper = Condition.getQueryWrapper(entity, PersonResourceEntity.class);
+ List list = personResourceService.export(queryWrapper);
+ ExcelUtil.export(response, "设备资源表数据" + DateUtil.time(), "设备资源表数据表", list, PersonResourceExcel.class);
+ }
+
+ @GetMapping("/initPersonResource")
+ @ApiOperationSupport(order = 9)
+ public void initPersonResource(){
+ personResourceService.initPersonResource();
+ }
+}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/YieldOrderController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/YieldOrderController.java
new file mode 100644
index 00000000..8316d227
--- /dev/null
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/YieldOrderController.java
@@ -0,0 +1,163 @@
+/**
+ * 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.annotation.IsAdmin;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.scheduling.scheduling.entity.YieldOrderEntity;
+import org.springblade.scheduling.scheduling.excel.YieldOrderExcel;
+import org.springblade.scheduling.scheduling.service.IYieldOrderService;
+import org.springblade.scheduling.scheduling.vo.YieldOrderVO;
+import org.springblade.scheduling.scheduling.wrapper.YieldOrderWrapper;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 车间订单表 控制器
+ *
+ * @author BladeX
+ * @since 2025-11-28
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/yieldOrder")
+@Tag(name = "车间订单表", description = "车间订单表接口")
+public class YieldOrderController extends BladeController {
+
+ private final IYieldOrderService YieldOrderService;
+
+
+ /**
+ * 车间订单表 详情
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @Operation(summary = "详情", description = "传入YieldOrder")
+ public R detail(YieldOrderEntity YieldOrder) {
+ YieldOrderEntity detail = YieldOrderService.getOne(Condition.getQueryWrapper(YieldOrder));
+ return R.data(YieldOrderWrapper.build().entityVO(detail));
+ }
+ /**
+ * 车间订单表 分页
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @Operation(summary = "分页", description = "传入YieldOrder")
+ public R> list(@Parameter(hidden = true) @RequestParam Map YieldOrder, Query query) {
+ IPage pages = YieldOrderService.page(Condition.getPage(query), Condition.getQueryWrapper(YieldOrder, YieldOrderEntity.class));
+ return R.data(YieldOrderWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 车间订单表 自定义分页
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 3)
+ @Operation(summary = "分页", description = "传入YieldOrder")
+ public R> page(YieldOrderVO YieldOrder, Query query) {
+ IPage pages = YieldOrderService.selectYieldOrderPage(Condition.getPage(query), YieldOrder);
+ return R.data(pages);
+ }
+
+ /**
+ * 车间订单表 新增
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @Operation(summary = "新增", description = "传入YieldOrder")
+ public R save(@Valid @RequestBody YieldOrderEntity YieldOrder) {
+ return R.status(YieldOrderService.save(YieldOrder));
+ }
+
+ /**
+ * 车间订单表 修改
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @Operation(summary = "修改", description = "传入YieldOrder")
+ public R update(@Valid @RequestBody YieldOrderEntity YieldOrder) {
+ return R.status(YieldOrderService.updateById(YieldOrder));
+ }
+
+ /**
+ * 车间订单表 新增或修改
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @Operation(summary = "新增或修改", description = "传入YieldOrder")
+ public R submit(@Valid @RequestBody YieldOrderEntity YieldOrder) {
+ return R.status(YieldOrderService.saveOrUpdate(YieldOrder));
+ }
+
+ /**
+ * 车间订单表 删除
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @Operation(summary = "逻辑删除", description = "传入ids")
+ public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+ return R.status(YieldOrderService.deleteLogic(Func.toLongList(ids)));
+ }
+
+
+ /**
+ * 导出数据
+ */
+ @IsAdmin
+ @GetMapping("/export")
+ @ApiOperationSupport(order = 9)
+ @Operation(summary = "导出数据", description = "传入YieldOrder")
+ public void exportYieldOrder(@Parameter(hidden = true) @RequestParam Map YieldOrder, BladeUser bladeUser, HttpServletResponse response) {
+ QueryWrapper queryWrapper = Condition.getQueryWrapper(YieldOrder, YieldOrderEntity.class);
+ //if (!AuthUtil.isAdministrator()) {
+ // queryWrapper.lambda().eq(YieldOrder::getTenantId, bladeUser.getTenantId());
+ //}
+ //queryWrapper.lambda().eq(YieldOrderEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
+ List list = YieldOrderService.export(queryWrapper);
+ ExcelUtil.export(response, "车间订单表数据" + DateUtil.time(), "车间订单表数据表", list, YieldOrderExcel.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 1a91332b..60cd56c5 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
@@ -17,6 +17,10 @@ public class WorkOrderDto {
private String processName;
private String startTime;
private String endTime;
+ private String planStartTime;
+ private String planEndTime;
+ private String factStartTime;
+ private String factEndTime;
private String teamName;
private String equipName;
private String equipCode;
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipAbilityEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipAbilityEntity.java
index 64bbfa01..36e21fe5 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipAbilityEntity.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipAbilityEntity.java
@@ -53,7 +53,7 @@ public class EquipAbilityEntity extends BaseEntity {
* 作业中心编码
*/
@Schema(description = "作业中心编码")
- private BigDecimal workCenterId;
+ private Long workCenterId;
/**
* 作业中心
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipResourceEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipResourceEntity.java
index 7db903fa..c0479f13 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipResourceEntity.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipResourceEntity.java
@@ -131,13 +131,13 @@ public class EquipResourceEntity extends BaseEntity {
* 设备类型 0-产线设备 1-普通设备
*/
@Schema(description = "设备类型 0-产线设备 1-普通设备")
- private Integer equipType;
+ private String equipType;
/**
* 额定工时
*/
@Schema(description = "额定工时")
- private Integer standardTime;
+ private BigDecimal standardTime;
/**
* 设备顺序
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/PersonResourceEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/PersonResourceEntity.java
index ac94223b..e92c019f 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/PersonResourceEntity.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/PersonResourceEntity.java
@@ -97,6 +97,12 @@ public class PersonResourceEntity extends BaseEntity {
@Schema(description = "是否可用")
private volatile String isUsed;
+ /**
+ * 日期
+ */
+ @Schema(description = "日期")
+ private String dateTime;
+
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/YieldOrderEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/YieldOrderEntity.java
index 1e683ae1..61dec2fc 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/YieldOrderEntity.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/YieldOrderEntity.java
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
+import org.springblade.core.tenant.mp.TenantEntity;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.format.annotation.DateTimeFormat;
@@ -20,7 +21,7 @@ import java.util.Date;
*/
@TableName(value = "MES_YIELD_ORDER")
@Data
-public class YieldOrderEntity extends BaseEntity {
+public class YieldOrderEntity extends TenantEntity {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
@@ -28,7 +29,7 @@ public class YieldOrderEntity extends BaseEntity {
* 作业中心
*/
@Schema(description = "作业中心")
- private String workCenterId;
+ private Long workCenterId;
/**
* 生产单号
@@ -208,19 +209,6 @@ public class YieldOrderEntity extends BaseEntity {
@TableField(value = "BUSINESS_TYPE")
private Long businessType;
- /**
- * 分派人员
- */
- @TableField(value = "ASSIGN_MAN")
- private Long assignMan;
-
- /**
- * 分派时间
- */
- @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
- @JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
- @TableField(value = "ASSIGN_TIME")
- private Date assignTime;
/**
* 协作工序号
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.java
index a004ced3..c4e1171b 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.java
@@ -61,7 +61,7 @@ public interface EquipResourceMapper extends BaseMapper {
*/
List export(@Param("ew") Wrapper queryWrapper);
- Map selectTeamByWorkCenter(Long workCenterId);
+ List> selectTeamByWorkCenter(@Param("workCenterId") Long workCenterId);
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.xml
index ecf970df..d397e3fe 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.xml
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.xml
@@ -33,9 +33,9 @@
SELECT DISTINCT
- c.ts_id,
- c.start_time,
- c.end_time
+ c.ts_id as "teamId",
+ c.start_time as "startTime",
+ c.end_time as "endTime"
FROM
"MES_EQUIP_ABILITY" a
LEFT JOIN BS_CENTER_TEAM b ON a.WORK_CENTER_ID = b.WC_ID
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PersonResourceMapper.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PersonResourceMapper.java
index 3b348cbc..e73ca6fa 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PersonResourceMapper.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PersonResourceMapper.java
@@ -34,6 +34,7 @@ import org.springblade.scheduling.scheduling.excel.PersonResourceExcel;
import org.springblade.scheduling.scheduling.vo.PersonResourceVO;
import java.util.List;
+import java.util.Map;
/**
* Mapper 接口
@@ -60,5 +61,6 @@ public interface PersonResourceMapper extends BaseMapper {
*/
List export(@Param("ew") Wrapper queryWrapper);
+ List> selectTeamByWorkCenter(@Param("workCenterId") Long workCenterId);
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PersonResourceMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PersonResourceMapper.xml
index 41f89acd..b059aa64 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PersonResourceMapper.xml
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PersonResourceMapper.xml
@@ -26,4 +26,18 @@
SELECT * FROM MES_PERSON_RESOURCE ${ew.customSqlSegment}
+
+
+ SELECT DISTINCT
+ c.ts_id as "teamId",
+ c.start_time as "startTime",
+ c.end_time as "endTime"
+ FROM
+ MES_PERSON_ABILITY a
+ LEFT JOIN BS_CENTER_TEAM b ON a.WORK_CENTER_ID = b.WC_ID
+ LEFT JOIN BS_TEAM_TIME c ON b.TS_ID = c.ts_id
+ WHERE
+ c.special = 0
+ and a.work_center_id = #{workCenterId}
+
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 45135ef0..135208c7 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
@@ -91,6 +91,10 @@
d.name AS "processName",
to_char(b.start_time,'HH24:MI') AS "startTime",
to_char(b.end_time,'HH24:MI') AS "endTime",
+ to_char(b.start_time,'YYYY-MM-DD HH24:MI:SS') AS "planStartTime",
+ to_char(b.end_time,'YYYY-MM-DD HH24:MI:SS') AS "planEndTime",
+ to_char(b.fact_start_time,'YYYY-MM-DD HH24:MI:SS') AS "factStartTime",
+ to_char(b.fact_end_time,'YYYY-MM-DD HH24:MI:SS') AS "factEndTime",
c.ts_name AS "teamName",
b.equip_name AS "equipName",
b.equip_code AS "equipCode"
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/YieldOrderMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/YieldOrderMapper.xml
index 009a169f..74d354b1 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/YieldOrderMapper.xml
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/YieldOrderMapper.xml
@@ -30,11 +30,8 @@
-
-
-
@@ -42,12 +39,8 @@
-
-
-
-
@@ -66,7 +59,25 @@
- select * from MES_YIELD_ORDER where is_deleted = 0
+ select * from MES_YIELD_ORDER
+
+ is_deleted = 0
+
+ and status = #{yieldOrder.status}
+
+
+ and batch_no = #{yieldOrder.batchNo}
+
+
+ and yo_code = #{yieldOrder.yoCode}
+
+
+ and part_code = #{yieldOrder.partCode}
+
+
+ and roam_no = #{yieldOrder.roamNo}
+
+
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IEquipResourceService.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IEquipResourceService.java
index c3f65ff4..db9dcdea 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IEquipResourceService.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IEquipResourceService.java
@@ -58,4 +58,6 @@ public interface IEquipResourceService extends BaseService
*/
List export(Wrapper queryWrapper);
+ public void initEquipResource();
+
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPersonResourceService.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPersonResourceService.java
index 1ff3b1e9..3a05d2dc 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPersonResourceService.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPersonResourceService.java
@@ -58,4 +58,6 @@ public interface IPersonResourceService extends BaseService export(Wrapper queryWrapper);
+ void initPersonResource();
+
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
index edc0ba28..d7cefdeb 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
@@ -43,11 +43,14 @@ import org.springblade.scheduling.scheduling.vo.EquipResourceVO;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -81,43 +84,122 @@ public class EquipResourceServiceImpl extends BaseServiceImpl list1 = this.list(Wrappers.lambdaQuery().eq(EquipResourceEntity::getDateTime,today));
+ List list2 = this.list(Wrappers.lambdaQuery().eq(EquipResourceEntity::getDateTime,tomorrow));
+ List list3 = this.list(Wrappers.lambdaQuery().eq(EquipResourceEntity::getDateTime,dayAfterTomorrow));
if(CollectionUtils.isEmpty(list1)){
- //获取设备能力列表
- List equipAbilityList = equipAbilityService.list();
- if(CollectionUtils.isNotEmpty(equipAbilityList)){
- DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm");
- LocalDateTime startOfDay = LocalDateTime.parse(today,DEFAULT_FORMATTER); // 当天0:00
- for(EquipAbilityEntity equipAbility : equipAbilityList){
- //0-产线设备 1-普通设备
- if("0".equals(equipAbility.getEquipType())){
- //产线设备根据轮询间隔生成数据,根据轮询间隔判断一天要分成多少段
- int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟
- int totalMinutes = 24 * 60; // 一天总分钟数
- int totalCount = totalMinutes / interval; // 生成条数
- for (int i = 0; i < totalCount; i++) {
- LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
- LocalDateTime endTime = startTime.plusMinutes(interval).plusMinutes(equipAbility.getStandardTime().longValue());
- EquipResourceEntity equipResource = new EquipResourceEntity();
- equipResource.setDateTime(today);
- equipResource.setEquipCode(equipAbility.getEquipCode());
- equipResource.setEquipName(equipAbility.getEquipName());
- equipResource.setCraftId(equipAbility.getCraftId());
- equipResource.setCraftName(equipAbility.getCraftName());
- equipResource.setPeriod(startTime.format(TIME_FORMATTER) + "-" + endTime.format(TIME_FORMATTER));
- equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility());
- equipResource.setRestCapacity(equipAbility.getStandardProcessAbility());
- equipResource.setStartTime(startTime);
- equipResource.setEndTime(endTime);
- equipResource.setEquipOrder(equipAbility.getEquipOrder());
- //获取
-// equipResource.setTeamId();
-// resourceList.add(resource);
+ generateData(today);
+ }
+ if(CollectionUtils.isEmpty(list2)){
+ generateData(tomorrow);
+ }
+ if(CollectionUtils.isEmpty(list3)){
+ generateData(dayAfterTomorrow);
+ }
+ }
+
+ public void generateData(String day){
+
+ //获取设备能力列表
+ List equipAbilityList = equipAbilityService.list();
+ if(CollectionUtils.isNotEmpty(equipAbilityList)){
+ DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+ LocalDate targetDate = LocalDate.parse(day, dateFormatter);
+ LocalDateTime startOfDay = LocalDateTime.of(targetDate, LocalTime.MIDNIGHT);
+ for(EquipAbilityEntity equipAbility : equipAbilityList){
+ //获取
+ List> teamIdList = baseMapper.selectTeamByWorkCenter(equipAbility.getWorkCenterId());
+ //0-产线设备 1-普通设备
+ if("0".equals(equipAbility.getEquipType())){
+ //产线设备根据轮询间隔生成数据,根据轮询间隔判断一天要分成多少段
+ int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟
+ int totalMinutes = 24 * 60; // 一天总分钟数
+ int totalCount = totalMinutes / interval; // 生成条数
+ List resourceList = new ArrayList<>();
+ for (int i = 0; i < totalCount; i++) {
+ LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
+ LocalDateTime endTime = startTime.plusMinutes(interval);
+ EquipResourceEntity equipResource = new EquipResourceEntity();
+ equipResource.setDateTime(day);
+ equipResource.setEquipCode(equipAbility.getEquipCode());
+ equipResource.setEquipName(equipAbility.getEquipName());
+ equipResource.setCraftId(equipAbility.getCraftId());
+ equipResource.setCraftName(equipAbility.getCraftName());
+ equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
+ equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility());
+ equipResource.setRestCapacity(equipAbility.getStandardProcessAbility());
+ equipResource.setStartTime(startTime);
+ equipResource.setEndTime(endTime);
+ equipResource.setEquipOrder(equipAbility.getEquipOrder());
+ equipResource.setStandardTime(equipAbility.getStandardTime());
+ equipResource.setIsUsed("0");
+ equipResource.setEquipType(equipAbility.getEquipType());
+
+ Long teamId = null;
+ for(Map map : teamIdList){
+
+
+ LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter);
+ LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter);
+
+ if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){
+ teamId = Long.parseLong(map.get("teamId").toString());
+ }
+
}
+ equipResource.setTeamId(teamId);
+ resourceList.add(equipResource);
+
+ }
+ if(CollectionUtils.isNotEmpty(resourceList)){
+ this.saveBatch(resourceList);
+ }
+ }else{
+ //普通设备每30分钟间隔生成数据
+ int interval = 30;
+ int totalMinutes = 24 * 60; // 一天总分钟数
+ int totalCount = totalMinutes / interval; // 生成条数
+ List resourceList = new ArrayList<>();
+ for (int i = 0; i < totalCount; i++) {
+ LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
+ LocalDateTime endTime = startTime.plusMinutes(equipAbility.getStandardTime().longValue());
+ EquipResourceEntity equipResource = new EquipResourceEntity();
+ equipResource.setDateTime(day);
+ equipResource.setEquipCode(equipAbility.getEquipCode());
+ equipResource.setEquipName(equipAbility.getEquipName());
+ equipResource.setCraftId(equipAbility.getCraftId());
+ equipResource.setCraftName(equipAbility.getCraftName());
+ equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
+ equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility());
+ equipResource.setRestCapacity(equipAbility.getStandardProcessAbility());
+ equipResource.setStartTime(startTime);
+ equipResource.setEndTime(endTime);
+ equipResource.setEquipOrder(equipAbility.getEquipOrder());
+ equipResource.setStandardTime(equipAbility.getStandardTime());
+ equipResource.setIsUsed("0");
+ equipResource.setEquipType(equipAbility.getEquipType());
+
+ Long teamId = null;
+ for(Map map : teamIdList){
+
+
+ LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter);
+ LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter);
+
+ if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){
+ teamId = Long.parseLong(map.get("teamId").toString());
+ }
+ }
+ equipResource.setTeamId(teamId);
+ resourceList.add(equipResource);
+
+ }
+ if(CollectionUtils.isNotEmpty(resourceList)){
+ this.saveBatch(resourceList);
}
}
}
}
}
-
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java
index c703c96f..1b22a53d 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java
@@ -27,15 +27,26 @@ package org.springblade.scheduling.scheduling.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.commons.lang3.time.DateUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.scheduling.scheduling.entity.PersonAbilityEntity;
import org.springblade.scheduling.scheduling.entity.PersonResourceEntity;
import org.springblade.scheduling.scheduling.excel.PersonResourceExcel;
import org.springblade.scheduling.scheduling.mapper.PersonResourceMapper;
+import org.springblade.scheduling.scheduling.service.IPersonAbilityService;
import org.springblade.scheduling.scheduling.service.IPersonResourceService;
import org.springblade.scheduling.scheduling.vo.PersonResourceVO;
import org.springframework.stereotype.Service;
-import java.util.List;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
/**
* 工艺能力表 服务实现类
@@ -44,8 +55,10 @@ import java.util.List;
* @since 2025-11-12
*/
@Service
+@AllArgsConstructor
public class PersonResourceServiceImpl extends BaseServiceImpl implements IPersonResourceService {
+ private final IPersonAbilityService personAbilityService;
@Override
public IPage selectPersonResourcePage(IPage page, PersonResourceVO entity) {
return page.setRecords(baseMapper.selectPersonResourcePage(page, entity));
@@ -58,4 +71,77 @@ public class PersonResourceServiceImpl extends BaseServiceImpl list1 = this.list(Wrappers.lambdaQuery().eq(PersonResourceEntity::getDateTime,today));
+ List list2 = this.list(Wrappers.lambdaQuery().eq(PersonResourceEntity::getDateTime,tomorrow));
+ List list3 = this.list(Wrappers.lambdaQuery().eq(PersonResourceEntity::getDateTime,dayAfterTomorrow));
+ if(CollectionUtils.isEmpty(list1)){
+ generateData(today);
+ }
+ if(CollectionUtils.isEmpty(list2)){
+ generateData(tomorrow);
+ }
+ if(CollectionUtils.isEmpty(list3)){
+ generateData(dayAfterTomorrow);
+ }
+ }
+
+ public void generateData(String day){
+
+ //获取设备能力列表
+ List workCenterList = Arrays.asList("86","85");
+ List personAbilityList = personAbilityService.list(Wrappers.lambdaQuery().in(PersonAbilityEntity::getWorkCenterId,workCenterList));
+ if(CollectionUtils.isNotEmpty(personAbilityList)){
+ DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+ LocalDate targetDate = LocalDate.parse(day, dateFormatter);
+ LocalDateTime startOfDay = LocalDateTime.of(targetDate, LocalTime.MIDNIGHT);
+ for(PersonAbilityEntity personAbility : personAbilityList){
+ //获取
+ List> teamIdList = baseMapper.selectTeamByWorkCenter(personAbility.getWorkCenterId());
+ //普通设备每30分钟间隔生成数据
+ int interval = 30;
+ int totalMinutes = 24 * 60; // 一天总分钟数
+ int totalCount = totalMinutes / interval; // 生成条数
+ List resourceList = new ArrayList<>();
+ for (int i = 0; i < totalCount; i++) {
+ LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
+ LocalDateTime endTime = startTime.plusMinutes(30);
+ PersonResourceEntity personResource = new PersonResourceEntity();
+ personResource.setDateTime(day);
+ personResource.setCraftId(personAbility.getCraftId());
+ personResource.setCraftName(personAbility.getCraftName());
+ personResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
+ personResource.setStartTime(startTime);
+ personResource.setEndTime(endTime);
+ personResource.setIsUsed("0");
+
+ Long teamId = null;
+ for(Map map : teamIdList){
+
+
+ LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter);
+ LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter);
+
+ if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){
+ teamId = Long.parseLong(map.get("teamId").toString());
+ }
+ }
+ personResource.setTeamId(teamId);
+ resourceList.add(personResource);
+
+ }
+ if(CollectionUtils.isNotEmpty(resourceList)){
+ this.saveBatch(resourceList);
+ }
+ }
+ }
+ }
+
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
index fa069910..df0fa1fa 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
@@ -117,7 +117,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl> map =
+ Map> map =
list.stream()
.collect(Collectors.groupingBy(
YieldOrderEntity::getWorkCenterId,
@@ -181,9 +181,42 @@ public class WorkOrderServiceImpl extends BaseServiceImpl