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 * FROM MES_PERSON_RESOURCE ${ew.customSqlSegment} + + 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 @@ 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