排产开发-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 * @author lqk
* @date 2025-12-05 16:51 * @date 2025-12-05 16:51
*/ */
public interface DsPartConst { public interface DsPartConstant {
//region 烧结子件种类 //region 烧结子件种类
/** /**
* 插针 * 插针

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

@ -28,7 +28,6 @@ package org.springblade.scheduling.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer; 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -99,8 +98,7 @@ public class EquipAbilityEntity extends BaseEntity {
* 额定加工能力 * 额定加工能力
*/ */
@Schema(description = "额定加工能力") @Schema(description = "额定加工能力")
@JsonSerialize(nullsUsing = NullSerializer.class) private String standardProcessAbility;
private BigDecimal standardProcessAbility;
/** /**
* 额定工时分钟 * 额定工时分钟
@ -141,4 +139,22 @@ public class EquipAbilityEntity extends BaseEntity {
@Schema(description = "备注") @Schema(description = "备注")
private String remarks; 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.TableField;
import com.baomidou.mybatisplus.annotation.TableName; 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -159,7 +161,28 @@ public class EquipResourceEntity extends BaseEntity {
private Integer isDeleted; 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; package org.springblade.scheduling.pojo.entity;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date; import io.swagger.v3.oas.annotations.media.Schema;
import java.math.BigDecimal; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial; import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;
/** /**
* 零件信息表 实体类 * 零件信息表 实体类
@ -291,4 +291,14 @@ public class PartEntity extends BaseEntity {
@Schema(description = "审核人") @Schema(description = "审核人")
private String reviewUser; 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; package org.springblade.scheduling.pojo.entity;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal; import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial; import java.io.Serial;
/** /**
@ -54,7 +52,7 @@ public class PartRelationEntity extends BaseEntity {
* 部件ID * 部件ID
*/ */
@Schema(description = "部件ID") @Schema(description = "部件ID")
private BigDecimal partId; private Long partId;
/** /**
* 部件号 * 部件号
*/ */
@ -64,7 +62,7 @@ public class PartRelationEntity extends BaseEntity {
* 子件ID * 子件ID
*/ */
@Schema(description = "子件ID") @Schema(description = "子件ID")
private BigDecimal childPartId; private Long childPartId;
/** /**
* 子件号 * 子件号
*/ */

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

@ -34,7 +34,6 @@ import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial; import java.io.Serial;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* 车间作业计划 实体类 * 车间作业计划 实体类
@ -97,7 +96,7 @@ public class WorkPlanEntity extends BaseEntity {
* 工时定额 * 工时定额
*/ */
@Schema(description = "工时定额") @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 com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity; import org.springblade.core.tenant.mp.TenantEntity;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@ -61,6 +60,12 @@ public class YieldOrderEntity extends TenantEntity {
@TableField(value = "PART_NAME") @TableField(value = "PART_NAME")
private String partName; private String partName;
/**
* 零件号版本号
*/
@TableField(value = "PART_VERSION")
private String partVersion;
/** /**
* 镀种 * 镀种
*/ */

@ -27,10 +27,17 @@ public enum WorkOrderEnum {
STATUS_COMPLETED("已完工", 4), STATUS_COMPLETED("已完工", 4),
STATUS_ADJUDICATING("审理中", 5), STATUS_ADJUDICATING("审理中", 5),
STATUS_SCRAP("已报废", 6), 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 String name;
final int category; final int code;
/** /**
* 匹配枚举值 * 匹配枚举值
@ -54,7 +61,7 @@ public enum WorkOrderEnum {
*/ */
public static String getName(int category) { public static String getName(int category) {
WorkOrderEnum item = Arrays.stream(WorkOrderEnum.values()) WorkOrderEnum item = Arrays.stream(WorkOrderEnum.values())
.filter(enumItem -> enumItem.getCategory() == category) .filter(enumItem -> enumItem.getCode() == category)
.findFirst() .findFirst()
.orElse(null); .orElse(null);
return ObjectUtil.isEmpty(item) ? StringPool.EMPTY : item.getName(); 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.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.constant.BatchConstant; 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.BsWorkCenterEntity;
import org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity; import org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity;
import org.springblade.desk.dashboard.pojo.entity.DsBatchPreserveTaskEntity; 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.pojo.vo.DsBatchPreserveTaskVO;
import org.springblade.desk.dashboard.excel.DsBatchPreserveTaskExcel; import org.springblade.desk.dashboard.excel.DsBatchPreserveTaskExcel;
import org.springblade.desk.dashboard.mapper.DsBatchPreserveTaskMapper; import org.springblade.desk.dashboard.mapper.DsBatchPreserveTaskMapper;
import org.springblade.desk.dashboard.service.IBsWorkCenterService; import org.springblade.desk.dashboard.service.IBsWorkCenterService;
import org.springblade.desk.dashboard.service.IDsBatchPreservePlanService; import org.springblade.desk.dashboard.service.IDsBatchPreservePlanService;
import org.springblade.desk.dashboard.service.IDsBatchPreserveTaskService; import org.springblade.desk.dashboard.service.IDsBatchPreserveTaskService;
import org.springblade.desk.dashboard.service.IDsBatchWorkCenterSetService;
import org.springblade.system.feign.IUserClient; import org.springblade.system.feign.IUserClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; 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.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; 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.ObjectUtil;
import org.springblade.core.tool.utils.StringPool; import org.springblade.core.tool.utils.StringPool;
import org.springblade.desk.dashboard.constant.DsCraftConstant; 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.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity; import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
@ -406,13 +406,13 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
@Override @Override
public void saveSubYieldOrder(YieldOrder yieldOrder, Boolean isManual, Long receiveUser) throws BusinessException { 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<>(); List<DsPartEntity> subList = new ArrayList<>();
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_SMM, "石墨模")); subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_SMM, "石墨模"));
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_KT, "壳体")); subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.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_CZ, "插针"));
if (subList.size() == 0) { if (subList.size() == 0) {
throw new BusinessException("未找到烧结前处理子件信息,请联系工艺编制!"); throw new BusinessException("未找到烧结前处理子件信息,请联系工艺编制!");
} }
@ -806,9 +806,9 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
throw new BusinessException(errMsg); throw new BusinessException(errMsg);
} }
Integer yieldType = YieldOrderEnum.YIELD_TYPE_6.getCode(); 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(); 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(); yieldType = YieldOrderEnum.YIELD_TYPE_5.getCode();
} }
//非石墨模子件,面积不允许为空 //非石墨模子件,面积不允许为空
@ -825,7 +825,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
//获取金属件子件B号,如果未获取到,提示异常 //获取金属件子件B号,如果未获取到,提示异常
String roamNo = null; 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()); roamNo = dsPartService.findRoamNoByPartCode(dsPartSub.getPartCode());
if (StringUtils.isBlank(roamNo)) { if (StringUtils.isBlank(roamNo)) {
String errMsg = MessageFormat.format("子件{}未找到对应B号,请在ERP核查子件一级路线!", dsPartSub.getPartCode()); 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.api.ResultCode;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil; 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.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.service.IDsPartService; import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.mapper.YieldPlanMapper; import org.springblade.desk.order.mapper.YieldPlanMapper;
@ -117,7 +117,7 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
@Override @Override
public Boolean saveGlassCake(YieldPlan yieldPlan) { 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) { if (glassCakePartList != null && glassCakePartList.size() > 0) {
for (DsPartEntity dsPart : glassCakePartList) { for (DsPartEntity dsPart : glassCakePartList) {
//不包含玻璃字样的代表维护错误,跳过 //不包含玻璃字样的代表维护错误,跳过

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

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

@ -25,10 +25,10 @@
*/ */
package org.springblade.scheduling.scheduling.controller; 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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -38,7 +38,7 @@ import jakarta.validation.Valid;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil; 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.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.BladeUser;
@ -56,6 +56,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.CompletableFuture;
/** /**
* 设备能力表 控制器 * 设备能力表 控制器
@ -110,14 +111,35 @@ public class EquipAbilityController extends BladeController {
@PostMapping("/save") @PostMapping("/save")
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入mesEquipAbility") @Operation(summary = "新增", description = "传入mesEquipAbility")
public R save(@Valid @RequestBody EquipAbilityEntity entity) { public R save(@Valid @RequestBody List<EquipAbilityEntity> list) {
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)){ for(EquipAbilityEntity entity : list){
return R.status(false,"该设备能力已存在!"); 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); return R.status(true);
} }
@ -127,10 +149,13 @@ public class EquipAbilityController extends BladeController {
@PostMapping("/update") @PostMapping("/update")
@ApiOperationSupport(order = 5) @ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入mesEquipAbility") @Operation(summary = "修改", description = "传入mesEquipAbility")
public R update(@Valid @RequestBody EquipAbilityEntity entity) { @ApiLog
equipAbilityService.updateById(entity); public R update(@Valid @RequestBody List<EquipAbilityEntity> list) {
//初始化设备资源 for(EquipAbilityEntity entity : list){
equipResourceService.initSingleEquipResource(entity); equipAbilityService.updateById(entity);
//初始化设备资源
equipResourceService.initSingleEquipResource(entity);
}
return R.status(true); return R.status(true);
} }
@ -150,6 +175,7 @@ public class EquipAbilityController extends BladeController {
@PostMapping("/remove") @PostMapping("/remove")
@ApiOperationSupport(order = 7) @ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids") @Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(equipAbilityService.deleteLogic(Func.toLongList(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); ExcelUtil.export(response, "设备能力表数据" + DateUtil.time(), "设备能力表数据表", list, EquipAbilityExcel.class);
} }
} }

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

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

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

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

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

@ -25,18 +25,24 @@
*/ */
package org.springblade.scheduling.scheduling.controller; 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.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springblade.core.secure.BladeUser; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.secure.annotation.IsAdmin; 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.Condition;
import org.springblade.core.mp.support.Query; 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.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.scheduling.pojo.entity.SintTempCurveEntity; import org.springblade.scheduling.pojo.entity.SintTempCurveEntity;
import org.springblade.scheduling.scheduling.excel.SintTempCurveExcel; 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.vo.SintTempCurveVO;
import org.springblade.scheduling.scheduling.wrapper.SintTempCurveWrapper; import org.springblade.scheduling.scheduling.wrapper.SintTempCurveWrapper;
import org.springframework.web.bind.annotation.*; 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 java.util.List;
import jakarta.servlet.http.HttpServletResponse; import java.util.Map;
/** /**
* 烧结温度曲线表 控制器 * 烧结温度曲线表 控制器
@ -106,6 +106,7 @@ public class SintTempCurveController extends BladeController {
@PostMapping("/save") @PostMapping("/save")
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入SintTempCurve") @Operation(summary = "新增", description = "传入SintTempCurve")
@ApiLog
public R save(@Valid @RequestBody SintTempCurveEntity sintTempCurve) { public R save(@Valid @RequestBody SintTempCurveEntity sintTempCurve) {
return R.status(sintTempCurveService.save(sintTempCurve)); return R.status(sintTempCurveService.save(sintTempCurve));
} }
@ -116,6 +117,7 @@ public class SintTempCurveController extends BladeController {
@PostMapping("/update") @PostMapping("/update")
@ApiOperationSupport(order = 5) @ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入SintTempCurve") @Operation(summary = "修改", description = "传入SintTempCurve")
@ApiLog
public R update(@Valid @RequestBody SintTempCurveEntity sintTempCurve) { public R update(@Valid @RequestBody SintTempCurveEntity sintTempCurve) {
return R.status(sintTempCurveService.updateById(sintTempCurve)); return R.status(sintTempCurveService.updateById(sintTempCurve));
} }
@ -136,6 +138,7 @@ public class SintTempCurveController extends BladeController {
@PostMapping("/remove") @PostMapping("/remove")
@ApiOperationSupport(order = 7) @ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids") @Operation(summary = "逻辑删除", description = "传入ids")
@ApiLog
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(sintTempCurveService.deleteLogic(Func.toLongList(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.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param; 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.pojo.entity.PartEntity;
import org.springblade.scheduling.scheduling.excel.PartExcel; import org.springblade.scheduling.scheduling.excel.PartExcel;
import org.springblade.scheduling.scheduling.vo.PartVO; 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<PartExcel> export(@Param("ew") Wrapper<PartEntity> queryWrapper);
List<PartEntity> selectChildPart(PartEntity part); List<PartEntity> selectChildPart(DsPartVersionEntity partVersion);
} }

@ -77,10 +77,12 @@
c.* c.*
FROM FROM
DS_PART a DS_PART a
LEFT JOIN DS_PART_RELATION b ON a.id = b.PART_ID LEFT JOIN DS_PART_VERSION b ON a.id = b.part_id
LEFT JOIN DS_PART c ON b.CHILD_PART_ID = c.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 WHERE
a.PART_CODE = #{partCode} b.PART_CODE = #{partCode}
and b.PART_VERSION = #{partVersion}
</select> </select>
</mapper> </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.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService; 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.pojo.entity.PartEntity;
import org.springblade.scheduling.scheduling.excel.PartExcel; import org.springblade.scheduling.scheduling.excel.PartExcel;
import org.springblade.scheduling.scheduling.vo.PartVO; import org.springblade.scheduling.scheduling.vo.PartVO;
@ -59,6 +60,6 @@ public interface IPartService extends BaseService<PartEntity> {
*/ */
List<PartExcel> export(Wrapper<PartEntity> queryWrapper); 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.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.springblade.core.mp.base.BaseServiceImpl; 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.EquipAbilityEntity;
import org.springblade.scheduling.pojo.entity.EquipResourceEntity; import org.springblade.scheduling.pojo.entity.EquipResourceEntity;
import org.springblade.scheduling.scheduling.excel.EquipResourceExcel; import org.springblade.scheduling.scheduling.excel.EquipResourceExcel;
import org.springblade.scheduling.scheduling.mapper.EquipResourceMapper; import org.springblade.scheduling.scheduling.mapper.EquipResourceMapper;
import org.springblade.scheduling.scheduling.service.IEquipAbilityService; import org.springblade.scheduling.scheduling.service.IEquipAbilityService;
import org.springblade.scheduling.scheduling.service.IEquipResourceService; import org.springblade.scheduling.scheduling.service.IEquipResourceService;
import org.springblade.scheduling.scheduling.vo.EquipAbilityVO;
import org.springblade.scheduling.scheduling.vo.EquipResourceVO; import org.springblade.scheduling.scheduling.vo.EquipResourceVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
@ -92,6 +96,9 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
wrapper.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId()); wrapper.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId());
wrapper.eq(EquipResourceEntity::getCraftId,equipAbility.getCraftId()); wrapper.eq(EquipResourceEntity::getCraftId,equipAbility.getCraftId());
wrapper.eq(EquipResourceEntity::getEquipCode,equipAbility.getEquipCode()); wrapper.eq(EquipResourceEntity::getEquipCode,equipAbility.getEquipCode());
if(equipAbility.getProcessId() != null){
wrapper.eq(EquipResourceEntity::getProcessId,equipAbility.getProcessId());
}
List<EquipResourceEntity> list = this.list(wrapper); List<EquipResourceEntity> list = this.list(wrapper);
if(CollectionUtils.isEmpty(list)){ if(CollectionUtils.isEmpty(list)){
generateData(today,equipAbility); generateData(today,equipAbility);
@ -129,17 +136,24 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
if(equipAbility.getCraftId() != null){ if(equipAbility.getCraftId() != null){
wrapper.eq(EquipAbilityEntity::getCraftId,equipAbility.getCraftId()); wrapper.eq(EquipAbilityEntity::getCraftId,equipAbility.getCraftId());
} }
if(equipAbility.getProcessId() != null){
wrapper.eq(EquipAbilityEntity::getProcessId,equipAbility.getProcessId());
}
if(StringUtils.isNotBlank(equipAbility.getEquipCode())){ if(StringUtils.isNotBlank(equipAbility.getEquipCode())){
wrapper.eq(EquipAbilityEntity::getEquipCode,equipAbility.getEquipCode()); wrapper.eq(EquipAbilityEntity::getEquipCode,equipAbility.getEquipCode());
} }
List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(wrapper); List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(wrapper);
if(CollectionUtils.isNotEmpty(equipAbilityList)){ if(CollectionUtils.isNotEmpty(equipAbilityList)){
if(equipAbility.getWorkCenterId() != null && equipAbility.getCraftId() != null && StringUtils.isNotBlank(equipAbility.getEquipCode())){ if(equipAbility.getWorkCenterId() != null && equipAbility.getCraftId() != null && StringUtils.isNotBlank(equipAbility.getEquipCode())){
List<EquipResourceEntity> list = this.list(Wrappers.<EquipResourceEntity>lambdaQuery() LambdaQueryWrapper<EquipResourceEntity> wrapper2 = new LambdaQueryWrapper<>();
.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId()) wrapper2.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId())
.eq(EquipResourceEntity::getCraftId,equipAbility.getCraftId()) .eq(EquipResourceEntity::getCraftId,equipAbility.getCraftId())
.eq(EquipResourceEntity::getEquipCode,equipAbility.getEquipCode()) .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)){ if(CollectionUtils.isNotEmpty(list)){
list.forEach(item -> baseMapper.deleteById(item.getId())); list.forEach(item -> baseMapper.deleteById(item.getId()));
} }
@ -151,61 +165,57 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
LocalDateTime startOfDay = LocalDateTime.of(targetDate, LocalTime.MIDNIGHT); LocalDateTime startOfDay = LocalDateTime.of(targetDate, LocalTime.MIDNIGHT);
//获取 //获取
List<Map<String,Object>> teamIdList = baseMapper.selectTeamByWorkCenter(equipAbility.getWorkCenterId()); List<Map<String,Object>> teamIdList = baseMapper.selectTeamByWorkCenter(equipAbility.getWorkCenterId());
//0-产线设备 1-普通设备 int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟
if("0".equals(equipAbility.getEquipType())){ int totalMinutes = 24 * 60; // 一天总分钟数
//产线设备根据轮询间隔生成数据,根据轮询间隔判断一天要分成多少段 int totalCount = totalMinutes / interval; // 生成条数
int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟 List<EquipResourceEntity> resourceList = new ArrayList<>();
int totalMinutes = 24 * 60; // 一天总分钟数 for (int i = 0; i < totalCount; i++) {
int totalCount = totalMinutes / interval; // 生成条数 if(equipAbility.getPartType() != 0){
List<EquipResourceEntity> resourceList = new ArrayList<>(); List<EquipAbilityVO> voList = JsonUtil.readValue(equipAbility.getStandardProcessAbility(), new TypeReference<List<EquipAbilityVO>>() {});
for (int i = 0; i < totalCount; i++) { for(EquipAbilityVO vo : voList){
LocalDateTime startTime = startOfDay.plusMinutes(i * interval); LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
LocalDateTime endTime = startTime.plusMinutes(interval); //0-产线设备 1-普通设备
EquipResourceEntity equipResource = new EquipResourceEntity(); LocalDateTime endTime = startTime.plusMinutes("0".equals(equipAbility.getEquipType()) ? interval : equipAbility.getStandardTime().longValue());
equipResource.setDateTime(day); EquipResourceEntity equipResource = new EquipResourceEntity();
equipResource.setEquipCode(equipAbility.getEquipCode()); equipResource.setDateTime(day);
equipResource.setEquipName(equipAbility.getEquipName()); equipResource.setEquipCode(equipAbility.getEquipCode());
equipResource.setCraftId(equipAbility.getCraftId().toString()); equipResource.setEquipName(equipAbility.getEquipName());
equipResource.setCraftName(equipAbility.getCraftName()); equipResource.setCraftId(equipAbility.getCraftId().toString());
equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter)); equipResource.setCraftName(equipAbility.getCraftName());
equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility()); equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
equipResource.setRestCapacity(equipAbility.getStandardProcessAbility()); equipResource.setTotalCapacity(BigDecimal.valueOf(Integer.parseInt(vo.getStandardProcessAbility())));
equipResource.setStartTime(startTime); equipResource.setRestCapacity(BigDecimal.valueOf(Integer.parseInt(vo.getStandardProcessAbility())));
equipResource.setEndTime(endTime); equipResource.setStartTime(startTime);
equipResource.setEquipOrder(equipAbility.getEquipOrder()); equipResource.setEndTime(endTime);
equipResource.setStandardTime(equipAbility.getStandardTime()); equipResource.setEquipOrder(equipAbility.getEquipOrder());
equipResource.setIsUsed("0"); equipResource.setStandardTime(equipAbility.getStandardTime());
equipResource.setEquipType(equipAbility.getEquipType()); equipResource.setIsUsed("0");
equipResource.setWorkCenterId(equipAbility.getWorkCenterId()); 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 teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter);
LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").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); }else{
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++) {
LocalDateTime startTime = startOfDay.plusMinutes(i * interval); LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
LocalDateTime endTime = startTime.plusMinutes(equipAbility.getStandardTime().longValue()); LocalDateTime endTime = startTime.plusMinutes(interval);
EquipResourceEntity equipResource = new EquipResourceEntity(); EquipResourceEntity equipResource = new EquipResourceEntity();
equipResource.setDateTime(day); equipResource.setDateTime(day);
equipResource.setEquipCode(equipAbility.getEquipCode()); equipResource.setEquipCode(equipAbility.getEquipCode());
@ -213,8 +223,8 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
equipResource.setCraftId(equipAbility.getCraftId().toString()); equipResource.setCraftId(equipAbility.getCraftId().toString());
equipResource.setCraftName(equipAbility.getCraftName()); equipResource.setCraftName(equipAbility.getCraftName());
equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter)); equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility()); equipResource.setTotalCapacity(BigDecimal.valueOf(Integer.parseInt(equipAbility.getStandardProcessAbility())));
equipResource.setRestCapacity(equipAbility.getStandardProcessAbility()); equipResource.setRestCapacity(BigDecimal.valueOf(Integer.parseInt(equipAbility.getStandardProcessAbility())));
equipResource.setStartTime(startTime); equipResource.setStartTime(startTime);
equipResource.setEndTime(endTime); equipResource.setEndTime(endTime);
equipResource.setEquipOrder(equipAbility.getEquipOrder()); equipResource.setEquipOrder(equipAbility.getEquipOrder());
@ -222,24 +232,27 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
equipResource.setIsUsed("0"); equipResource.setIsUsed("0");
equipResource.setEquipType(equipAbility.getEquipType()); equipResource.setEquipType(equipAbility.getEquipType());
equipResource.setWorkCenterId(equipAbility.getWorkCenterId()); equipResource.setWorkCenterId(equipAbility.getWorkCenterId());
equipResource.setProcessId(equipAbility.getProcessId());
equipResource.setProcessName(equipAbility.getProcessName());
Long teamId = null; Long teamId = null;
for(Map<String,Object> map : teamIdList){ for(Map<String,Object> map : teamIdList){
LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter);
LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").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)){ if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){
teamId = Long.parseLong(map.get("teamId").toString()); teamId = Long.parseLong(map.get("teamId").toString());
} }
} }
equipResource.setTeamId(teamId); equipResource.setTeamId(teamId);
resourceList.add(equipResource); 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; 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.pojo.entity.PartEntity;
import org.springblade.scheduling.scheduling.excel.PartExcel; import org.springblade.scheduling.scheduling.excel.PartExcel;
import org.springblade.scheduling.scheduling.mapper.PartMapper; import org.springblade.scheduling.scheduling.mapper.PartMapper;
import org.springblade.scheduling.scheduling.service.IPartService; import org.springblade.scheduling.scheduling.service.IPartService;
import org.springblade.scheduling.scheduling.vo.PartVO; import org.springblade.scheduling.scheduling.vo.PartVO;
import org.springframework.stereotype.Service; 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; import java.util.List;
/** /**
@ -61,8 +63,8 @@ public class PartServiceImpl extends BaseServiceImpl<PartMapper, PartEntity> imp
} }
@Override @Override
public List<PartEntity> selectChildPart(PartEntity part) { public List<PartEntity> selectChildPart(DsPartVersionEntity partVersion) {
return baseMapper.selectChildPart(part); 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.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; 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); 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){ public void generateData(String day){
@ -96,43 +99,11 @@ public class PersonResourceServiceImpl extends BaseServiceImpl<PersonResourceMap
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDate targetDate = LocalDate.parse(day, dateFormatter); LocalDate targetDate = LocalDate.parse(day, dateFormatter);
LocalDateTime startOfDay = LocalDateTime.of(targetDate, LocalTime.MIDNIGHT);
for(PersonAbilityEntity personAbility : personAbilityList){ for(PersonAbilityEntity personAbility : personAbilityList){
//获取 //获取
List<Map<String,Object>> teamIdList = baseMapper.selectTeamByWorkCenter(personAbility.getWorkCenterId()); List<Map<String,Object>> teamIdList = baseMapper.selectTeamByWorkCenter(personAbility.getWorkCenterId());
List<PersonResourceEntity> resourceList = new ArrayList<>(); 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){ for(Map<String,Object> map : teamIdList){
LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter);
LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter);

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

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

Loading…
Cancel
Save