排产开发-sjx

liweidong
sunjianxi 4 weeks ago
parent 0c099b8776
commit 20bcb3cf9f
  1. 0
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/BatchConstant.java
  2. 0
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/DsCraftConstant.java
  3. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/DsPartConstant.java
  4. 0
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/TaskingConstant.java
  5. 1
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java
  6. 22
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipAbilityEntity.java
  7. 23
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipResourceEntity.java
  8. 20
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartEntity.java
  9. 12
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java
  10. 5
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PersonAbilityEntity.java
  11. 3
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java
  12. 7
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java
  13. 13
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java
  14. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsBatchPreserveTaskServiceImpl.java
  15. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  16. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java
  17. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CertificateTypeController.java
  18. 36
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CraftAbilityController.java
  19. 54
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipAbilityController.java
  20. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipmentController.java
  21. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/MainProducerController.java
  22. 29
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java
  23. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonAbilityController.java
  24. 29
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SameTroughController.java
  25. 29
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SintTempCurveController.java
  26. 3
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.java
  27. 8
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.xml
  28. 41
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.java
  29. 24
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.xml
  30. 3
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartService.java
  31. 42
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartVersionService.java
  32. 129
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
  33. 12
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartServiceImpl.java
  34. 47
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartsVersionServiceImpl.java
  35. 39
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java
  36. 832
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
  37. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/EquipAbilityVO.java
  38. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/PersonAbilityVO.java

@ -4,7 +4,7 @@ package org.springblade.desk.dashboard.constant;
* @author lqk
* @date 2025-12-05 16:51
*/
public interface DsPartConst {
public interface DsPartConstant {
//region 烧结子件种类
/**
* 插针

@ -29,6 +29,7 @@ public enum YieldOrderEnum {
STATUS_PROCESSING("加工中", 10005),
STATUS_PROCESS_ERROR("排产异常", 10006),
STATUS_RECOVER("数据恢复", 10007),
STATUS_OUTSOURCING_WAITING("外协后待排产", 10008),
STATUS_COMPLETED("已完工", 10015),
STATUS_CLOSED("已关闭", 10021),

@ -28,7 +28,6 @@ package org.springblade.scheduling.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -99,8 +98,7 @@ public class EquipAbilityEntity extends BaseEntity {
* 额定加工能力
*/
@Schema(description = "额定加工能力")
@JsonSerialize(nullsUsing = NullSerializer.class)
private BigDecimal standardProcessAbility;
private String standardProcessAbility;
/**
* 额定工时分钟
@ -141,4 +139,22 @@ public class EquipAbilityEntity extends BaseEntity {
@Schema(description = "备注")
private String remarks;
/**
* 工序编码
*/
@Schema(description = "工序编码")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long processId;
/**
* 工序名称
*/
@Schema(description = "工序名称")
private String processName;
/**
* 零件类型
*/
private Integer partType;
}

@ -27,6 +27,8 @@ package org.springblade.scheduling.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -159,7 +161,28 @@ public class EquipResourceEntity extends BaseEntity {
private Integer isDeleted;
/**
* 工序编码
*/
@Schema(description = "工序编码")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long processId;
/**
* 工序名称
*/
@Schema(description = "工序名称")
private String processName;
/**
* 开始值
*/
private Integer startNum;
/**
* 结束值
*/
private Integer endNum;
}

@ -25,15 +25,15 @@
*/
package org.springblade.scheduling.pojo.entity;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.math.BigDecimal;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;
/**
* 零件信息表 实体类
@ -291,4 +291,14 @@ public class PartEntity extends BaseEntity {
@Schema(description = "审核人")
private String reviewUser;
@Schema(name = "玻璃饼直径")
private Double blbDiameter;
@Schema(name = "壳体最大外径")
private Double externalDiameter;
@Schema(name = "定额")
private Double quota;
}

@ -25,14 +25,12 @@
*/
package org.springblade.scheduling.pojo.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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
/**
@ -54,7 +52,7 @@ public class PartRelationEntity extends BaseEntity {
* 部件ID
*/
@Schema(description = "部件ID")
private BigDecimal partId;
private Long partId;
/**
* 部件号
*/
@ -64,7 +62,7 @@ public class PartRelationEntity extends BaseEntity {
* 子件ID
*/
@Schema(description = "子件ID")
private BigDecimal childPartId;
private Long childPartId;
/**
* 子件号
*/

@ -94,7 +94,7 @@ public class PersonAbilityEntity extends BaseEntity {
* 额定工时分钟/每人每个
*/
@Schema(description = "额定工时(分钟/每人每个)")
private BigDecimal standardTime;
private String standardTime;
/**
* 准备工时分钟
@ -123,4 +123,7 @@ public class PersonAbilityEntity extends BaseEntity {
*/
private String productIdent;
private Integer partType;
}

@ -34,7 +34,6 @@ import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 车间作业计划 实体类
@ -97,7 +96,7 @@ public class WorkPlanEntity extends BaseEntity {
* 工时定额
*/
@Schema(description = "工时定额")
private BigDecimal hourQuota;
private Double hourQuota;
/**
* 计划开始
*/

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
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;
@ -61,6 +60,12 @@ public class YieldOrderEntity extends TenantEntity {
@TableField(value = "PART_NAME")
private String partName;
/**
* 零件号版本号
*/
@TableField(value = "PART_VERSION")
private String partVersion;
/**
* 镀种
*/

@ -27,10 +27,17 @@ public enum WorkOrderEnum {
STATUS_COMPLETED("已完工", 4),
STATUS_ADJUDICATING("审理中", 5),
STATUS_SCRAP("已报废", 6),
STATUS_REWORK("已返工", 7)
STATUS_REWORK("已返工", 7),
/**
* 烧结订单人工工时统计类型
*/
STATUS_PART_TYPE_1("壳体最大外径", 1),
STATUS_PART_TYPE_2("玻璃饼直径", 2),
STATUS_PART_TYPE_3("芯数", 3),
;
final String name;
final int category;
final int code;
/**
* 匹配枚举值
@ -54,7 +61,7 @@ public enum WorkOrderEnum {
*/
public static String getName(int category) {
WorkOrderEnum item = Arrays.stream(WorkOrderEnum.values())
.filter(enumItem -> enumItem.getCategory() == category)
.filter(enumItem -> enumItem.getCode() == category)
.findFirst()
.orElse(null);
return ObjectUtil.isEmpty(item) ? StringPool.EMPTY : item.getName();

@ -28,18 +28,15 @@ package org.springblade.desk.dashboard.service.impl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.constant.BatchConstant;
import org.springblade.desk.dashboard.constant.TaskingConstant;
import org.springblade.desk.dashboard.pojo.entity.BsWorkCenterEntity;
import org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity;
import org.springblade.desk.dashboard.pojo.entity.DsBatchPreserveTaskEntity;
import org.springblade.desk.dashboard.pojo.entity.DsBatchWorkCenterSetEntity;
import org.springblade.desk.dashboard.pojo.vo.DsBatchPreserveTaskVO;
import org.springblade.desk.dashboard.excel.DsBatchPreserveTaskExcel;
import org.springblade.desk.dashboard.mapper.DsBatchPreserveTaskMapper;
import org.springblade.desk.dashboard.service.IBsWorkCenterService;
import org.springblade.desk.dashboard.service.IDsBatchPreservePlanService;
import org.springblade.desk.dashboard.service.IDsBatchPreserveTaskService;
import org.springblade.desk.dashboard.service.IDsBatchWorkCenterSetService;
import org.springblade.system.feign.IUserClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@ -49,7 +46,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;

@ -22,7 +22,7 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.desk.dashboard.constant.DsCraftConstant;
import org.springblade.desk.dashboard.constant.DsPartConst;
import org.springblade.desk.dashboard.constant.DsPartConstant;
import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
@ -406,13 +406,13 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
@Override
public void saveSubYieldOrder(YieldOrder yieldOrder, Boolean isManual, Long receiveUser) throws BusinessException {
// 验证是否存在玻璃饼子件信息
this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_BLB, "玻璃饼");
this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_BLB, "玻璃饼");
//查询所有的烧结子件清单
List<DsPartEntity> subList = new ArrayList<>();
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_SMM, "石墨模"));
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_KT, "壳体"));
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_CZ, "插针"));
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_SMM, "石墨模"));
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_KT, "壳体"));
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_CZ, "插针"));
if (subList.size() == 0) {
throw new BusinessException("未找到烧结前处理子件信息,请联系工艺编制!");
}
@ -806,9 +806,9 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
throw new BusinessException(errMsg);
}
Integer yieldType = YieldOrderEnum.YIELD_TYPE_6.getCode();
if (DsPartConst.SIN_TER_TYPE_KT.equals(dsPartSub.getSinTerType())) {
if (DsPartConstant.SIN_TER_TYPE_KT.equals(dsPartSub.getSinTerType())) {
yieldType = YieldOrderEnum.YIELD_TYPE_4.getCode();
} else if (DsPartConst.SIN_TER_TYPE_CZ.equals(dsPartSub.getSinTerType())) {
} else if (DsPartConstant.SIN_TER_TYPE_CZ.equals(dsPartSub.getSinTerType())) {
yieldType = YieldOrderEnum.YIELD_TYPE_5.getCode();
}
//非石墨模子件,面积不允许为空
@ -825,7 +825,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
//获取金属件子件B号,如果未获取到,提示异常
String roamNo = null;
if (DsPartConst.SIN_TER_TYPE_KT.equals(dsPartSub.getSinTerType()) || DsPartConst.SIN_TER_TYPE_CZ.equals(dsPartSub.getSinTerType())) {
if (DsPartConstant.SIN_TER_TYPE_KT.equals(dsPartSub.getSinTerType()) || DsPartConstant.SIN_TER_TYPE_CZ.equals(dsPartSub.getSinTerType())) {
roamNo = dsPartService.findRoamNoByPartCode(dsPartSub.getPartCode());
if (StringUtils.isBlank(roamNo)) {
String errMsg = MessageFormat.format("子件{}未找到对应B号,请在ERP核查子件一级路线!", dsPartSub.getPartCode());

@ -13,7 +13,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.api.ResultCode;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.desk.dashboard.constant.DsPartConst;
import org.springblade.desk.dashboard.constant.DsPartConstant;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.mapper.YieldPlanMapper;
@ -117,7 +117,7 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
@Override
public Boolean saveGlassCake(YieldPlan yieldPlan) {
// 调用生产订单服务类中方法,生成玻璃饼订单并保存
List<DsPartEntity> glassCakePartList = dsPartService.selectDsPartByPatCode(yieldPlan.getPartCode(), DsPartConst.SIN_TER_TYPE_BLB);
List<DsPartEntity> glassCakePartList = dsPartService.selectDsPartByPatCode(yieldPlan.getPartCode(), DsPartConstant.SIN_TER_TYPE_BLB);
if (glassCakePartList != null && glassCakePartList.size() > 0) {
for (DsPartEntity dsPart : glassCakePartList) {
//不包含玻璃字样的代表维护错误,跳过

@ -11,6 +11,7 @@ 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.log.annotation.ApiLog;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
@ -69,6 +70,7 @@ public class CertificateTypeController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入certificateType")
@ApiLog
public R save(@Valid @RequestBody CertificateTypeEntity certificateType) {
return R.status(certificateTypeService.save(certificateType));
}
@ -79,6 +81,7 @@ public class CertificateTypeController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入certificateType")
@ApiLog
public R update(@Valid @RequestBody CertificateTypeEntity certificateType) {
return R.status(certificateTypeService.updateById(certificateType));
}
@ -99,6 +102,7 @@ public class CertificateTypeController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(certificateTypeService.deleteLogic(Func.toLongList(ids)));
}

@ -25,25 +25,27 @@
*/
package org.springblade.scheduling.scheduling.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
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 com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.annotation.ApiLog;
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.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.pojo.entity.CoatingThickness;
import org.springblade.desk.basic.pojo.entity.PlatingSmall;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.vo.PlatingSmallVO;
import org.springblade.desk.basic.pojo.vo.WorkCenterVO;
import org.springblade.desk.feign.INoticeClient;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
@ -53,20 +55,13 @@ import org.springblade.scheduling.scheduling.vo.CraftAbilityVO;
import org.springblade.scheduling.scheduling.wrapper.CraftAbilityWrapper;
import org.springframework.util.CollectionUtils;
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.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.Map;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
/**
* 工艺能力 控制器
*
@ -158,6 +153,7 @@ public class CraftAbilityController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入CraftAbility")
@ApiLog
public R save(@Valid @RequestBody CraftAbilityEntity craftAbility) {
return R.status(craftAbilityService.save(craftAbility));
}
@ -168,6 +164,7 @@ public class CraftAbilityController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入CraftAbility")
@ApiLog
public R update(@Valid @RequestBody CraftAbilityEntity craftAbility) {
return R.status(craftAbilityService.updateById(craftAbility));
}
@ -188,6 +185,7 @@ public class CraftAbilityController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(craftAbilityService.deleteLogic(Func.toLongList(ids)));
}

@ -25,10 +25,10 @@
*/
package org.springblade.scheduling.scheduling.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -38,7 +38,7 @@ 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.base.BaseEntity;
import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
@ -56,6 +56,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
/**
* 设备能力表 控制器
@ -110,14 +111,35 @@ public class EquipAbilityController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入mesEquipAbility")
public R save(@Valid @RequestBody EquipAbilityEntity entity) {
List<EquipAbilityEntity> list = equipAbilityService.list(Wrappers.<EquipAbilityEntity>lambdaQuery().eq(EquipAbilityEntity::getWorkCenterId,entity.getWorkCenterId()).eq(EquipAbilityEntity::getEquipCode,entity.getEquipCode()).eq(EquipAbilityEntity::getEquipType,entity.getEquipType()).eq(EquipAbilityEntity::getCraftId,entity.getCraftId()).eq(BaseEntity::getIsDeleted,0));
if(CollectionUtils.isNotEmpty(list)){
return R.status(false,"该设备能力已存在!");
public R save(@Valid @RequestBody List<EquipAbilityEntity> list) {
//校验唯一性
for(EquipAbilityEntity entity : list){
LambdaQueryWrapper<EquipAbilityEntity> wrapper = new LambdaQueryWrapper();
wrapper.eq(EquipAbilityEntity::getWorkCenterId,entity.getWorkCenterId())
.eq(EquipAbilityEntity::getEquipCode,entity.getEquipCode())
.eq(EquipAbilityEntity::getEquipType,entity.getEquipType())
.eq(EquipAbilityEntity::getCraftId,entity.getCraftId());
if(entity.getProcessId() != null){
wrapper.eq(EquipAbilityEntity::getProcessId,entity.getProcessId());
}
List<EquipAbilityEntity> oldList = equipAbilityService.list(wrapper);
if(CollectionUtils.isNotEmpty(oldList)){
return R.status(false,"设备能力["+entity.getWorkCenterName()+"-"+entity.getCraftName()+"-"+entity.getProcessName()+"]已存在!");
}
}
//保存
for(EquipAbilityEntity entity : list){
boolean flag = equipAbilityService.save(entity);
if(flag){
//异步执行
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
//初始化设备资源
equipResourceService.initSingleEquipResource(entity);
});
}
}
equipAbilityService.save(entity);
//初始化设备资源
equipResourceService.initSingleEquipResource(entity);
return R.status(true);
}
@ -127,10 +149,13 @@ public class EquipAbilityController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入mesEquipAbility")
public R update(@Valid @RequestBody EquipAbilityEntity entity) {
equipAbilityService.updateById(entity);
//初始化设备资源
equipResourceService.initSingleEquipResource(entity);
@ApiLog
public R update(@Valid @RequestBody List<EquipAbilityEntity> list) {
for(EquipAbilityEntity entity : list){
equipAbilityService.updateById(entity);
//初始化设备资源
equipResourceService.initSingleEquipResource(entity);
}
return R.status(true);
}
@ -150,6 +175,7 @@ public class EquipAbilityController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(equipAbilityService.deleteLogic(Func.toLongList(ids)));
}
@ -168,4 +194,6 @@ public class EquipAbilityController extends BladeController {
ExcelUtil.export(response, "设备能力表数据" + DateUtil.time(), "设备能力表数据表", list, EquipAbilityExcel.class);
}
}

@ -36,6 +36,7 @@ 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.log.annotation.ApiLog;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
@ -105,6 +106,7 @@ public class EquipmentController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入Equipment")
@ApiLog
public R save(@Valid @RequestBody EquipmentEntity equipment) {
return R.status(equipmentService.save(equipment));
}
@ -115,6 +117,7 @@ public class EquipmentController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入Equipment")
@ApiLog
public R update(@Valid @RequestBody EquipmentEntity equipment) {
return R.status(equipmentService.updateById(equipment));
}
@ -135,6 +138,7 @@ public class EquipmentController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(equipmentService.deleteLogic(Func.toLongList(ids)));
}

@ -38,6 +38,7 @@ 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.log.annotation.ApiLog;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
@ -108,6 +109,7 @@ public class MainProducerController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入mainProducer")
@ApiLog
public R save(@Valid @RequestBody MainProducerEntity entity) {
List<MainProducerEntity> list = mainProducerService.list(Wrappers.<MainProducerEntity>lambdaQuery().eq(MainProducerEntity::getProcessId,entity.getProcessId()).eq(MainProducerEntity::getMainProducer,entity.getMainProducer()).eq(BaseEntity::getIsDeleted,0));
if(CollectionUtils.isNotEmpty(list)){
@ -122,6 +124,7 @@ public class MainProducerController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入mainProducer")
@ApiLog
public R update(@Valid @RequestBody MainProducerEntity entity) {
return R.status(mainProducerService.updateById(entity));
}
@ -142,6 +145,7 @@ public class MainProducerController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(mainProducerService.deleteLogic(Func.toLongList(ids)));
}

@ -25,18 +25,24 @@
*/
package org.springblade.scheduling.scheduling.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
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 com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.annotation.ApiLog;
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.pojo.entity.OutsourceProcessEntity;
import org.springblade.scheduling.scheduling.excel.OutsourceProcessExcel;
@ -44,15 +50,9 @@ 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 java.util.Map;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* 外协工序表 控制器
@ -106,6 +106,7 @@ public class OutsourceProcessController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入OutsourceProcess")
@ApiLog
public R save(@Valid @RequestBody OutsourceProcessEntity OutsourceProcess) {
return R.status(outsourceProcessService.save(OutsourceProcess));
}
@ -116,6 +117,7 @@ public class OutsourceProcessController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入OutsourceProcess")
@ApiLog
public R update(@Valid @RequestBody OutsourceProcessEntity OutsourceProcess) {
return R.status(outsourceProcessService.updateById(OutsourceProcess));
}
@ -136,6 +138,7 @@ public class OutsourceProcessController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(outsourceProcessService.deleteLogic(Func.toLongList(ids)));
}

@ -38,6 +38,7 @@ 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.log.annotation.ApiLog;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
@ -109,6 +110,7 @@ public class PersonAbilityController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入personAbility")
@ApiLog
public R save(@Valid @RequestBody PersonAbilityEntity entity) {
List<PersonAbilityEntity> list = personAbilityService.list(Wrappers.<PersonAbilityEntity>lambdaQuery().eq(PersonAbilityEntity::getWorkCenterId,entity.getWorkCenterId()).eq(PersonAbilityEntity::getProcessId,entity.getProcessId()).eq(PersonAbilityEntity::getCraftId,entity.getCraftId()).eq(BaseEntity::getIsDeleted,0));
if(CollectionUtils.isNotEmpty(list)){
@ -123,6 +125,7 @@ public class PersonAbilityController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入personAbility")
@ApiLog
public R update(@Valid @RequestBody PersonAbilityEntity entity) {
return R.status(personAbilityService.updateById(entity));
}
@ -143,6 +146,7 @@ public class PersonAbilityController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(personAbilityService.deleteLogic(Func.toLongList(ids)));
}

@ -25,18 +25,24 @@
*/
package org.springblade.scheduling.scheduling.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
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 com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.annotation.ApiLog;
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.pojo.entity.SameTroughEntity;
import org.springblade.scheduling.scheduling.excel.SameTroughExcel;
@ -44,15 +50,9 @@ import org.springblade.scheduling.scheduling.service.ISameTroughService;
import org.springblade.scheduling.scheduling.vo.SameTroughVO;
import org.springblade.scheduling.scheduling.wrapper.SameTroughWrapper;
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 java.util.Map;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* 非同槽因素表 控制器
@ -106,6 +106,7 @@ public class SameTroughController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入SameTrough")
@ApiLog
public R save(@Valid @RequestBody SameTroughEntity sameTrough) {
return R.status(sameTroughService.save(sameTrough));
}
@ -116,6 +117,7 @@ public class SameTroughController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入SameTrough")
@ApiLog
public R update(@Valid @RequestBody SameTroughEntity sameTrough) {
return R.status(sameTroughService.updateById(sameTrough));
}
@ -136,6 +138,7 @@ public class SameTroughController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(sameTroughService.deleteLogic(Func.toLongList(ids)));
}

@ -25,18 +25,24 @@
*/
package org.springblade.scheduling.scheduling.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
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 com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.annotation.ApiLog;
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.pojo.entity.SintTempCurveEntity;
import org.springblade.scheduling.scheduling.excel.SintTempCurveExcel;
@ -44,15 +50,9 @@ import org.springblade.scheduling.scheduling.service.ISintTempCurveService;
import org.springblade.scheduling.scheduling.vo.SintTempCurveVO;
import org.springblade.scheduling.scheduling.wrapper.SintTempCurveWrapper;
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 java.util.Map;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* 烧结温度曲线表 控制器
@ -106,6 +106,7 @@ public class SintTempCurveController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入SintTempCurve")
@ApiLog
public R save(@Valid @RequestBody SintTempCurveEntity sintTempCurve) {
return R.status(sintTempCurveService.save(sintTempCurve));
}
@ -116,6 +117,7 @@ public class SintTempCurveController extends BladeController {
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入SintTempCurve")
@ApiLog
public R update(@Valid @RequestBody SintTempCurveEntity sintTempCurve) {
return R.status(sintTempCurveService.updateById(sintTempCurve));
}
@ -136,6 +138,7 @@ public class SintTempCurveController extends BladeController {
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(sintTempCurveService.deleteLogic(Func.toLongList(ids)));
}

@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.scheduling.pojo.entity.PartEntity;
import org.springblade.scheduling.scheduling.excel.PartExcel;
import org.springblade.scheduling.scheduling.vo.PartVO;
@ -62,6 +63,6 @@ public interface PartMapper extends BaseMapper<PartEntity> {
List<PartExcel> export(@Param("ew") Wrapper<PartEntity> queryWrapper);
List<PartEntity> selectChildPart(PartEntity part);
List<PartEntity> selectChildPart(DsPartVersionEntity partVersion);
}

@ -77,10 +77,12 @@
c.*
FROM
DS_PART a
LEFT JOIN DS_PART_RELATION b ON a.id = b.PART_ID
LEFT JOIN DS_PART c ON b.CHILD_PART_ID = c.id
LEFT JOIN DS_PART_VERSION b ON a.id = b.part_id
LEFT JOIN DS_PART_RELATION c ON a.id = c.PART_ID
LEFT JOIN DS_PART d ON c.CHILD_PART_ID = d.id
WHERE
a.PART_CODE = #{partCode}
b.PART_CODE = #{partCode}
and b.PART_VERSION = #{partVersion}
</select>
</mapper>

@ -0,0 +1,41 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
/**
* 零件信息表 Mapper 接口
*
* @author BladeX
* @since 2025-11-12
*/
public interface PartVersionMapper extends BaseMapper<DsPartVersionEntity> {
}

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.scheduling.scheduling.mapper.PartVersionMapper">
<!-- 通用查询映射结果 -->
<resultMap id="partVersionResultMap" type="org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity">
<result column="ID" property="id"/>
<result column="PART_ID" property="partId"/>
<result column="PART_CODE" property="partCode"/>
<result column="PART_VERSION" property="partVersion"/>
<result column="CRAFT_ID" property="craftId"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="REMARKS" property="remarks"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
</mapper>

@ -28,6 +28,7 @@ package org.springblade.scheduling.scheduling.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.scheduling.pojo.entity.PartEntity;
import org.springblade.scheduling.scheduling.excel.PartExcel;
import org.springblade.scheduling.scheduling.vo.PartVO;
@ -59,6 +60,6 @@ public interface IPartService extends BaseService<PartEntity> {
*/
List<PartExcel> export(Wrapper<PartEntity> queryWrapper);
List<PartEntity> selectChildPart(PartEntity part);
List<PartEntity> selectChildPart(DsPartVersionEntity partVersion);
}

@ -0,0 +1,42 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import java.util.List;
/**
* 零件版本信息表 服务类
*
* @author BladeX
* @since 2025-11-12
*/
public interface IPartVersionService extends BaseService<DsPartVersionEntity> {
}

@ -30,21 +30,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.jackson.JsonUtil;
import org.springblade.scheduling.pojo.entity.EquipAbilityEntity;
import org.springblade.scheduling.pojo.entity.EquipResourceEntity;
import org.springblade.scheduling.scheduling.excel.EquipResourceExcel;
import org.springblade.scheduling.scheduling.mapper.EquipResourceMapper;
import org.springblade.scheduling.scheduling.service.IEquipAbilityService;
import org.springblade.scheduling.scheduling.service.IEquipResourceService;
import org.springblade.scheduling.scheduling.vo.EquipAbilityVO;
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;
@ -92,6 +96,9 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
wrapper.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId());
wrapper.eq(EquipResourceEntity::getCraftId,equipAbility.getCraftId());
wrapper.eq(EquipResourceEntity::getEquipCode,equipAbility.getEquipCode());
if(equipAbility.getProcessId() != null){
wrapper.eq(EquipResourceEntity::getProcessId,equipAbility.getProcessId());
}
List<EquipResourceEntity> list = this.list(wrapper);
if(CollectionUtils.isEmpty(list)){
generateData(today,equipAbility);
@ -129,17 +136,24 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
if(equipAbility.getCraftId() != null){
wrapper.eq(EquipAbilityEntity::getCraftId,equipAbility.getCraftId());
}
if(equipAbility.getProcessId() != null){
wrapper.eq(EquipAbilityEntity::getProcessId,equipAbility.getProcessId());
}
if(StringUtils.isNotBlank(equipAbility.getEquipCode())){
wrapper.eq(EquipAbilityEntity::getEquipCode,equipAbility.getEquipCode());
}
List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(wrapper);
if(CollectionUtils.isNotEmpty(equipAbilityList)){
if(equipAbility.getWorkCenterId() != null && equipAbility.getCraftId() != null && StringUtils.isNotBlank(equipAbility.getEquipCode())){
List<EquipResourceEntity> list = this.list(Wrappers.<EquipResourceEntity>lambdaQuery()
.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId())
LambdaQueryWrapper<EquipResourceEntity> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId())
.eq(EquipResourceEntity::getCraftId,equipAbility.getCraftId())
.eq(EquipResourceEntity::getEquipCode,equipAbility.getEquipCode())
.eq(EquipResourceEntity::getDateTime,day));
.eq(EquipResourceEntity::getDateTime,day);
if(equipAbility.getProcessId() != null){
wrapper2.eq(EquipResourceEntity::getProcessId,equipAbility.getProcessId());
}
List<EquipResourceEntity> list = this.list(wrapper2);
if(CollectionUtils.isNotEmpty(list)){
list.forEach(item -> baseMapper.deleteById(item.getId()));
}
@ -151,61 +165,57 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
LocalDateTime startOfDay = LocalDateTime.of(targetDate, LocalTime.MIDNIGHT);
//获取
List<Map<String,Object>> 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<EquipResourceEntity> 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().toString());
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());
equipResource.setWorkCenterId(equipAbility.getWorkCenterId());
int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟
int totalMinutes = 24 * 60; // 一天总分钟数
int totalCount = totalMinutes / interval; // 生成条数
List<EquipResourceEntity> resourceList = new ArrayList<>();
for (int i = 0; i < totalCount; i++) {
if(equipAbility.getPartType() != 0){
List<EquipAbilityVO> voList = JsonUtil.readValue(equipAbility.getStandardProcessAbility(), new TypeReference<List<EquipAbilityVO>>() {});
for(EquipAbilityVO vo : voList){
LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
//0-产线设备 1-普通设备
LocalDateTime endTime = startTime.plusMinutes("0".equals(equipAbility.getEquipType()) ? interval : equipAbility.getStandardTime().longValue());
EquipResourceEntity equipResource = new EquipResourceEntity();
equipResource.setDateTime(day);
equipResource.setEquipCode(equipAbility.getEquipCode());
equipResource.setEquipName(equipAbility.getEquipName());
equipResource.setCraftId(equipAbility.getCraftId().toString());
equipResource.setCraftName(equipAbility.getCraftName());
equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
equipResource.setTotalCapacity(BigDecimal.valueOf(Integer.parseInt(vo.getStandardProcessAbility())));
equipResource.setRestCapacity(BigDecimal.valueOf(Integer.parseInt(vo.getStandardProcessAbility())));
equipResource.setStartTime(startTime);
equipResource.setEndTime(endTime);
equipResource.setEquipOrder(equipAbility.getEquipOrder());
equipResource.setStandardTime(equipAbility.getStandardTime());
equipResource.setIsUsed("0");
equipResource.setEquipType(equipAbility.getEquipType());
equipResource.setWorkCenterId(equipAbility.getWorkCenterId());
equipResource.setProcessId(equipAbility.getProcessId());
equipResource.setProcessName(equipAbility.getProcessName());
equipResource.setStartNum(vo.getStartNum());
equipResource.setEndNum(vo.getEndNum());
Long teamId = null;
for(Map<String,Object> map : teamIdList){
Long teamId = null;
for(Map<String,Object> map : teamIdList){
LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter);
LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter);
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());
}
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);
}
equipResource.setTeamId(teamId);
resourceList.add(equipResource);
}
if(CollectionUtils.isNotEmpty(resourceList)){
this.saveBatch(resourceList);
}
}else{
//普通设备每30分钟间隔生成数据
int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString());
int totalMinutes = 24 * 60; // 一天总分钟数
int totalCount = totalMinutes / interval; // 生成条数
List<EquipResourceEntity> resourceList = new ArrayList<>();
for (int i = 0; i < totalCount; i++) {
}else{
LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
LocalDateTime endTime = startTime.plusMinutes(equipAbility.getStandardTime().longValue());
LocalDateTime endTime = startTime.plusMinutes(interval);
EquipResourceEntity equipResource = new EquipResourceEntity();
equipResource.setDateTime(day);
equipResource.setEquipCode(equipAbility.getEquipCode());
@ -213,8 +223,8 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
equipResource.setCraftId(equipAbility.getCraftId().toString());
equipResource.setCraftName(equipAbility.getCraftName());
equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility());
equipResource.setRestCapacity(equipAbility.getStandardProcessAbility());
equipResource.setTotalCapacity(BigDecimal.valueOf(Integer.parseInt(equipAbility.getStandardProcessAbility())));
equipResource.setRestCapacity(BigDecimal.valueOf(Integer.parseInt(equipAbility.getStandardProcessAbility())));
equipResource.setStartTime(startTime);
equipResource.setEndTime(endTime);
equipResource.setEquipOrder(equipAbility.getEquipOrder());
@ -222,24 +232,27 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
equipResource.setIsUsed("0");
equipResource.setEquipType(equipAbility.getEquipType());
equipResource.setWorkCenterId(equipAbility.getWorkCenterId());
equipResource.setProcessId(equipAbility.getProcessId());
equipResource.setProcessName(equipAbility.getProcessName());
Long teamId = null;
for(Map<String,Object> 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);
}
}
if(CollectionUtils.isNotEmpty(resourceList)){
this.saveBatch(resourceList);
}
}
}

@ -25,15 +25,17 @@
*/
package org.springblade.scheduling.scheduling.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.scheduling.pojo.entity.PartEntity;
import org.springblade.scheduling.scheduling.excel.PartExcel;
import org.springblade.scheduling.scheduling.mapper.PartMapper;
import org.springblade.scheduling.scheduling.service.IPartService;
import org.springblade.scheduling.scheduling.vo.PartVO;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
@ -61,8 +63,8 @@ public class PartServiceImpl extends BaseServiceImpl<PartMapper, PartEntity> imp
}
@Override
public List<PartEntity> selectChildPart(PartEntity part) {
return baseMapper.selectChildPart(part);
public List<PartEntity> selectChildPart(DsPartVersionEntity partVersion) {
return baseMapper.selectChildPart(partVersion);
}
}

@ -0,0 +1,47 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.scheduling.scheduling.mapper.PartVersionMapper;
import org.springblade.scheduling.scheduling.service.IPartVersionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 相似零件表 服务实现类
*
* @author BladeX
* @since 2025-11-21
*/
@Service
public class PartsVersionServiceImpl extends BaseServiceImpl<PartVersionMapper, DsPartVersionEntity> implements IPartVersionService {
@Autowired
PartVersionMapper partVersionMapper;
}

@ -47,7 +47,10 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 工艺能力表 服务实现类
@ -84,7 +87,7 @@ public class PersonResourceServiceImpl extends BaseServiceImpl<PersonResourceMap
generateData(today);
}
}
log.info("初始化人力资源开始:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
log.info("初始化人力资源结束:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
}
public void generateData(String day){
@ -96,43 +99,11 @@ public class PersonResourceServiceImpl extends BaseServiceImpl<PersonResourceMap
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
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<Map<String,Object>> teamIdList = baseMapper.selectTeamByWorkCenter(personAbility.getWorkCenterId());
List<PersonResourceEntity> resourceList = new ArrayList<>();
//普通设备每30分钟间隔生成数据
/*int interval = 30;
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(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<String,Object> 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);
}*/
for(Map<String,Object> map : teamIdList){
LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter);
LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter);

@ -43,4 +43,8 @@ public class EquipAbilityVO extends EquipAbilityEntity {
@Serial
private static final long serialVersionUID = 1L;
private Integer startNum;
private Integer endNum;
}

@ -43,4 +43,8 @@ public class PersonAbilityVO extends PersonAbilityEntity {
@Serial
private static final long serialVersionUID = 1L;
private Integer startNum;
private Integer endNum;
}

Loading…
Cancel
Save