工艺提交

liweidong
liweidong-hj 3 months ago
commit 12aa2fc3e8
  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. 157
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java
  7. 91
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java
  8. 56
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java
  9. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java
  10. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java
  11. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java
  12. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java
  13. 30
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java
  14. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java
  15. 22
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipAbilityEntity.java
  16. 23
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipResourceEntity.java
  17. 20
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartEntity.java
  18. 12
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java
  19. 5
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PersonAbilityEntity.java
  20. 3
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java
  21. 7
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java
  22. 13
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java
  23. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsBatchPreserveTaskServiceImpl.java
  24. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
  25. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  26. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  27. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java
  28. 58
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java
  29. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java
  30. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml
  31. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java
  32. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml
  33. 39
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  34. 123
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  35. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDsRbFilePreserveService.java
  36. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DsRbFilePreserveServiceImpl.java
  37. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
  38. 51
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
  39. 37
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/DsRbFilePreserveWrapper.java
  40. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java
  41. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml
  42. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java
  43. 600
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  44. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CertificateTypeController.java
  45. 36
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CraftAbilityController.java
  46. 54
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipAbilityController.java
  47. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipmentController.java
  48. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/MainProducerController.java
  49. 29
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java
  50. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonAbilityController.java
  51. 29
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SameTroughController.java
  52. 29
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SintTempCurveController.java
  53. 3
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.java
  54. 8
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.xml
  55. 41
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.java
  56. 24
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.xml
  57. 3
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartService.java
  58. 42
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartVersionService.java
  59. 129
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
  60. 12
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartServiceImpl.java
  61. 47
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartsVersionServiceImpl.java
  62. 39
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java
  63. 832
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
  64. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/EquipAbilityVO.java
  65. 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),

@ -0,0 +1,157 @@
package org.springblade.desk.produce.pojo.dto;
import java.util.List;
public class PrintChildCheck implements java.io.Serializable {
/**
* @return 序号
* @Author dxl
* @CreateTime 2022/11/7 10:24
*/
private String testOrders;
/**
* @return 检验细项
* @Author dxl
* @CreateTime 2022/11/8 16:22
*/
private List<PrintChildCheckChild> cccList;
/**
* @return 抽样数
* @Author dxl
* @CreateTime 2022/11/7 9:25
*/
private String checkQty;
/**
* @return 合格不合格NA
* @Author dxl
* @CreateTime 2022/11/7 9:25
*/
private String checkResult;
/**
* @return 姓名
* @Author dxl
* @CreateTime 2022/11/7 9:25
*/
private String checkName;
/**
* @return 检验日期
* @Author dxl
* @CreateTime 2022/11/7 9:25
*/
private String checkDate;
/**
* 试验数量
*/
private String testQty;
/**
* @return 检测项目名称
*/
private String testName;
/**
* @return 检测项目实验标准
*/
private String trialStandard;
/**
* @return 设备编码
*/
private String deviceCode;
/**
* @return 检验印章URL
*/
private String imgUrl;
public String getTestOrders() {
return testOrders;
}
public void setTestOrders(String testOrders) {
this.testOrders = testOrders;
}
public String getCheckQty() {
return checkQty;
}
public void setCheckQty(String checkQty) {
this.checkQty = checkQty;
}
public String getCheckName() {
return checkName;
}
public void setCheckName(String checkName) {
this.checkName = checkName;
}
public String getCheckDate() {
return checkDate;
}
public void setCheckDate(String checkDate) {
this.checkDate = checkDate;
}
public String getCheckResult() {
return checkResult;
}
public void setCheckResult(String checkResult) {
this.checkResult = checkResult;
}
public List<PrintChildCheckChild> getCccList() {
return cccList;
}
public void setCccList(List<PrintChildCheckChild> cccList) {
this.cccList = cccList;
}
public String getTestQty() {
return testQty;
}
public void setTestQty(String testQty) {
this.testQty = testQty;
}
public String getTestName() {
return testName;
}
public void setTestName(String testName) {
this.testName = testName;
}
public String getTrialStandard() {
return trialStandard;
}
public void setTrialStandard(String trialStandard) {
this.trialStandard = trialStandard;
}
public String getDeviceCode() {
return deviceCode;
}
public void setDeviceCode(String deviceCode) {
this.deviceCode = deviceCode;
}
public PrintChildCheck() {
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
}

@ -0,0 +1,91 @@
package org.springblade.desk.produce.pojo.dto;
/**
* @version V1.0
* @Title: PrintChildCheckChild
* @Author: dxl
* @CreateTime: 2022/11/8 16:18
*/
public class PrintChildCheckChild implements java.io.Serializable {
/**
* @return 名称
* @Author dxl
* @CreateTime 2022/11/7 10:24
*/
private String testName;
/**
* @return 实验标准
* @Author dxl
* @CreateTime 2022/11/7 10:34
*/
private String trialStandard;
/**
* @return 检验值
* @Author dxl
* @CreateTime 2022/11/7 10:34
*/
private String checkValue;
/**
* @return 设备量具
* @Author dxl
* @CreateTime 2022/11/7 10:24
*/
private String emTools;
/**
* @return 检验项Id
* @Author dxl
* @CreateTime 2022/11/8 17:09
*/
private Long wpiId;
public String getTestName() {
return testName;
}
public void setTestName(String testName) {
this.testName = testName;
}
public String getEmTools() {
return emTools;
}
public void setEmTools(String emTools) {
this.emTools = emTools;
}
public String getTrialStandard() {
return trialStandard;
}
public void setTrialStandard(String trialStandard) {
this.trialStandard = trialStandard;
}
public String getCheckValue() {
return checkValue;
}
public void setCheckValue(String checkValue) {
this.checkValue = checkValue;
}
public Long getWpiId() {
return wpiId;
}
public void setWpiId(Long wpiId) {
this.wpiId = wpiId;
}
public PrintChildCheckChild(String testName, String trialStandard, String checkValue, Long wpiId) {
this.testName = testName;
this.trialStandard = trialStandard;
this.checkValue = checkValue;
this.wpiId = wpiId;
}
public PrintChildCheckChild() {
}
}

@ -0,0 +1,56 @@
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.time.LocalDate;
import java.util.Date;
/**
*
* @author litao
*/
@Data
@TableName("DS_RB_FILE_PRESERVE")
@Schema(description = "DsRbFilePreserve对象")
@EqualsAndHashCode(callSuper = true)
public class DsRbFilePreserve extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "作业中心")
private Long wcId;
@Schema(description = "工序")
private Long ppsId;
@Schema(description = "线上线下")
private String line;
@Schema(description = "维护时间")
private LocalDate keepTime;
@Schema(description = "维护人")
private Long keepMan;
@Schema(description = "名称")
private String name;
@Schema(description = "审批状态")
private Short approvalStatus = -1;
@Schema(description = "状态")
private Short rfpStatus = 1;
@Schema(description = "升版ID")
private String versionId;
}

@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.desk.produce.pojo.dto.PrintChildCheck;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
@ -327,5 +328,11 @@ public class WorkPlan extends BaseEntity {
private List<MesQcProduceRunEntity> qcProduceRunsList;
@TableField(exist = false)
private Integer totalPreserve = 0;
@TableField(exist = false)
private MesBsAdditionalMessEntity bsAdditionalMess;
@TableField(exist = false)
private List<MesRbFilePreserveSlotEntity> dsRbFilePreserveSlotList;
@TableField(exist = false)
private List<PrintChildCheck> printChildCheck;
}

@ -0,0 +1,18 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import java.util.Date;
/**
* 加工记录 视图实体类
*
* @author BladeX
* @since 2026-02-04
*/
@Data
public class DsRbFilePreserveVO extends DsRbFilePreserve {
}

@ -1,5 +1,6 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@ -7,8 +8,11 @@ import java.util.List;
@Data
public class UnBingVo {
@Schema(description = "挂具编号")
private String rsCode;
@Schema(description = "飞靶编号")
private String fsCode;
@Schema(description = "设备编号")
private String deviceCode;
}

@ -71,5 +71,11 @@ public class RaiseHand extends BaseEntity {
@Schema(description = "免责金额")
private BigDecimal amount;
/**
* raisHand文件
*/
@Schema(description = "文件路径")
private String fileUrl;
}

@ -3,10 +3,12 @@
*/
package org.springblade.desk.quality.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
@ -149,4 +151,32 @@ public class WorkPlanItemDetail extends BaseEntity {
*/
@Schema(description = "实际[量具]id")
private Long actMtId;
@TableField(exist = false)
private String trialItem;
@TableField(exist = false)
private String trialStandard;
@TableField(exist = false)
private Long wpiId;
public String getGaugeValueNotNUll() {
StringBuffer sb = new StringBuffer();
if(StringUtils.isNotBlank(this.gaugeValue2) && this.gaugeValue6 != "/"){
sb.append(this.gaugeValue1+"/"+this.gaugeValue2+"/");
}
if(StringUtils.isNotBlank(this.gaugeValue4) && this.gaugeValue4 != "/"){
sb.append(this.gaugeValue3+"/"+this.gaugeValue4+"/");
}
if(StringUtils.isNotBlank(this.gaugeValue6) && this.gaugeValue6 != "/"){
sb.append(this.gaugeValue5+"/"+this.gaugeValue6+"/");
}
return sb.toString();
}
}

@ -123,4 +123,6 @@ public class InspectionTaskListVO extends InspectionTask {
private String ppsName;
private Integer yieldType;
}

@ -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;

@ -388,7 +388,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(zPartEntity.getId());
// 5新图任务 - 磨具计划下发 对接坤哥
if(TaskingConstant.NEW_MAP_TASKS.equals(dsTaskingEntity.getTaskType())
&& DsPartConst.SIN_TER_TYPE_SMM.equals(zPartEntity.getSinTerType())
&& DsPartConstant.SIN_TER_TYPE_SMM.equals(zPartEntity.getSinTerType())
&& "1".equals(partVersionEntity.getPartVersion())){
List<MoldDemand> moldDemandList = new ArrayList<>();
@ -974,8 +974,9 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
// 1. 获取生产订单信息
YieldOrder yieldOrder = yieldOrderService.selectByPartCOdeAndBatchNo(partCode, batchNo);
String partVersion = null;
YieldOrder yieldOrder = yieldOrderService.selectByPartCOdeAndBatchNo(partCode, batchNo, reworkOrder);
if (yieldOrder == null) {
//查询该零件最新版本号
DsPartVersionEntity newPartVersion = partService.getNewPartVersion(partCode);

@ -211,11 +211,12 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
/**
* 根据 零件号 批次号查询
*
* @param partCode
* @param batchNo
* @return
*/
YieldOrder selectByPartCOdeAndBatchNo(String partCode, String batchNo);
YieldOrder selectByPartCOdeAndBatchNo(String partCode, String batchNo, String reworkOrder);
/**
* <p>方法名: getNewCardNo </p>

@ -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("未找到烧结前处理子件信息,请联系工艺编制!");
}
@ -716,8 +716,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
}
@Override
public YieldOrder selectByPartCOdeAndBatchNo(String partCode, String batchNo) {
return workOrderMapper.selectByPartCOdeAndBatchNo(partCode, batchNo);
public YieldOrder selectByPartCOdeAndBatchNo(String partCode, String batchNo, String reworkOrder) {
return workOrderMapper.selectByPartCOdeAndBatchNo(partCode, batchNo, reworkOrder);
}
@Override
@ -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) {
//不包含玻璃字样的代表维护错误,跳过

@ -0,0 +1,58 @@
package org.springblade.desk.produce.controller;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO;
import org.springblade.desk.produce.pojo.vo.DsRbFilePreserveVO;
import org.springblade.desk.produce.pojo.vo.TaskCompleteVO;
import org.springblade.desk.produce.service.IDisTaskingService;
import org.springblade.desk.produce.service.IDsRbFilePreserveService;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springblade.desk.produce.service.IWorkPlanLogService;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
*
*
* @author litao
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/DisTaskingController")
public class DsRbFilePreserveController extends BladeController {
private final IDsRbFilePreserveService dsRbFilePreserveService;
@GetMapping("/page")
@ApiOperationSupport(order = 1)
@Operation(summary = "调度任务分派", description = "传入taskCompleteDTO")
public R<IPage<DsRbFilePreserveVO>> disTaskHandle(DsRbFilePreserve taskCompleteDTO, Query query) {
return R.data(null);
}
}

@ -0,0 +1,19 @@
package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import java.util.List;
/**
*
* @author BladeX
*/
public interface DsRbFilePreserveMapper extends BaseMapper<DsRbFilePreserve> {
}

@ -0,0 +1,11 @@
<?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.desk.produce.mapper.DsRbFilePreserveMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesDsRbFilePreserveResultMap" type="org.springblade.desk.produce.pojo.entity.DsRbFilePreserve">
</resultMap>
</mapper>

@ -45,7 +45,7 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
List<QueryByReadStatusVO> queryByReadStatusPage(IPage page, QueryByReadStatusDTO query);
YieldOrder selectByPartCOdeAndBatchNo(@Param("partCode") String partCode,@Param("batchNo") String batchNo);
YieldOrder selectByPartCOdeAndBatchNo(@Param("partCode") String partCode, @Param("batchNo") String batchNo, @Param("reworkOrder") String reworkOrder);
WorkOrderEntity selectByYoId(@Param("yoId") Long yoId);

@ -185,7 +185,12 @@
ORDER BY a.CREATE_TIME DESC
</select>
<select id="selectByPartCOdeAndBatchNo" resultType="org.springblade.desk.order.pojo.entity.YieldOrder">
select * from MES_YIELD_ORDER where IS_DELETED = 0 and PART_CODE = #{partCode} and BATCH_NO = #{batchNo}
SELECT * FROM (select yo.*
from MES_YIELD_ORDER yo inner join MES_WORK_ORDER wo on yo.ID = wo.YO_ID
where yo.IS_DELETED = 0
and yo.PART_CODE = #{partCode}
and yo.BATCH_NO = #{batchNo}
and wo.REWORK_CODE = #{reworkOrder}) WHERE ROWNUM = 1
</select>
<select id="selectByYoId" resultType="org.springblade.scheduling.pojo.entity.WorkOrderEntity">

@ -2,14 +2,16 @@ package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartSub;
import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import org.springblade.desk.quality.pojo.entity.ReviewSheet;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.desk.quality.pojo.entity.WorkPlanItemDetail;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
@ -44,15 +46,38 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
MesQcProduceRunEntity getBoxInfo(Long wpId);
List<ProduceMonitorSlotListVO> listSlotInfoGr (Long wpId, Boolean aTrue);
List<ProduceMonitorSlotListVO> listSlotInfo (Long wpId,Boolean aTrue);
List<ProduceMonitorSlotListVO> listSlotInfoList (Long wpId,Boolean aTrue);
List<MacToolUse> listMacToolUse(Long wpId,Boolean aTrue);
MakeRec getByWpId(Long wpId);
Object[] getConcatMrByWpId(Long wpId);
// Object[] getConcatMrByWpId(Long wpId);
WorkPlan getConcatMrByWpId(Long wpId);
List<MesQcProduceRunEntity> listPrByWpIdIndex(Long wpId, Integer index,boolean aTrue);
List<MacToolUse> getDataByWpIdAndIndexList(Long wpId, String indexNum);
List<MesQcProduceRunEntity> listPrByWpIdIndexAndMtnCode(Long wpId, Integer indexNum,String mtnCode);
List<MesQcProduceRunEntity> getBoxInfoByWpIdMtnCode(Long wpId);
List<MesQcProduceRunEntity> getBoxInfoByWpIdMtnCodeList(Long wpId);
List<MesRbFilePreserveDetailDTO> getByRfpsId(Long rfpsId);
MacToolUse getHangNumIsNull(Long wpId);
MacToolUse getDataByWpIdAndIndex(Long wpId, String numberIndex);
List<DsRbFilePreserve> getDataByWcIdAndPpsId(Long wcId, Long ppsId,boolean aTrue);
List<MesRbFilePreserveSlotEntity> getByRfpId(Long rfpId);
// MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long wpId);
MesBsAdditionalMessEntity getDataByOneData(String mtnCode,Short indexNum);
List<WorkOrder> findFatherByYoIdMes(Long yoId);
List<WorkPlan> listByWoIdAllMes(Long woId);
List<ProduceMonitorSlotListVO> listSjSlotInfoMes(Long wpId, Boolean aTrue);
List<WorkPlanItem> listByWpIdMes(Long wpId);
List<WorkOrder> findCubByYoIdMes(Long yoId);
List<DsPartRelationEntity> listByPartCodeNew(String partCode, Short indexNum);
List<WorkOrder> findByPartCodeAndMemoMes(String partCode, String memo);
DsPartSub getByPartCodeAndSubCodeMes(String partCode, String subCode);
String getCheckManByNewErpMes(String userName);
List<WorkPlanItemDetail> listByWpiIdMes(Long wpiId);
List<ReviewSheet> getQcReviewSheetListMes(String partCode,String batchNo);
}

@ -97,7 +97,7 @@
</select>
<select id="listSlotInfo" resultType="org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO">
<select id="listSlotInfoList" resultType="org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO">
select a.PART_CODE, a.BATCH_NO, a.WORK_QTY, a.area, a.sumArea,
a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type from (
select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.PO_AREA as area,
@ -122,7 +122,7 @@
<select id="listMacToolUse" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select * from MES_MAC_TOOL_USE a
where a.wpId= #{wpId}
where a.wp_id= #{wpId}
<if test="aTrue==true">
and a.finished = false
</if>
@ -131,13 +131,53 @@
<select id="getByWpId" resultType="org.springblade.desk.produce.pojo.entity.MakeRec">
select * from MES_MAKE_REC a
where a.wpId= #{wpId}
where a.wp_id= #{wpId}
order by a.ID desc
</select>
<select id="getConcatMrByWpId" >
select nvl(sum(a.flag_qty),0), nvl(wmsys.wm_concat(a.flag_colour_one),' '), nvl(wmsys.wm_concat(a.flag_colour_two),' '), nvl(wmsys.wm_concat(a.flag_ink),' '), nvl(wmsys.wm_concat(a.flag_matter),' '),
nvl(sum(a.belt_qty),0), nvl(wmsys.wm_concat(a.belt_colour_one),' '), nvl(wmsys.wm_concat(a.belt_colour_two),' '), nvl(wmsys.wm_concat(a.belt_ink),' '), nvl(wmsys.wm_concat(a.belt_matter),' ')
<select id="findCubByYoIdMes" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
select * from MES_WORK_ORDER a left join MES_YIELD_ORDER b on a.YO_ID = b.ID where b.FATHER_YO_ID = #{yoId}
</select>
<select id="listByWpIdMes" resultType="org.springblade.desk.quality.pojo.entity.WorkPlanItem">
select * from QA_WORK_PLAN_ITEM a left join MES_WORK_PLAN b on a.wp_id = b.ID where a.wp_id= #{wpId}
</select>
<select id="listByPartCodeNew" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity">
select * from DS_PART_RELATION a left join DS_PART b on a.PART_CODE = b.PART_CODE where a.PART_CODE= #{partCode} and b.SIN_TER_TYPE = #{indexNum}
</select>
<select id="getByPartCodeAndSubCodeMes" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartSub">
select b.*,a.CHILD_PART_CODE as subCode from DS_PART_RELATION a left join DS_PART b
on a.PART_CODE = b.PART_CODE where a.PART_CODE= #{partCode} and a.CHILD_PART_CODE = #{subCode}
</select>
<select id="findByPartCodeAndMemoMes" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
select * from MES_WORK_ORDER a left join MES_YIELD_ORDER b on a.YO_ID = b.ID where b.PART_CODE= #{partCode} and b.YP_CODE = #{memo}
</select>
<select id="getCheckManByNewErpMes" resultType="String">
select a.value1,a.value2 from v_rb_qms_checker_seal@nerp_mes_link a where a.checker_name= #{userName}
</select>
<select id="getQcReviewSheetListMes" resultType="org.springblade.desk.quality.pojo.entity.ReviewSheet">
select a.rs_code,a.memo,a.unqualified_qty,a.REVIEW_DATE from QA_REVIEW_SHEET a
-- inner join rb_pr_work_check b on a.wc_id = b.wc_id
inner join MES_WORK_PLAN c on b.wp_id=c.id
inner join MES_WORK_ORDER d on c.wo_id=d.id
inner join MES_YIELD_ORDER e on e.id = d.yo_id
where e.part_code = #{partCode} and e.batch_no = #{batchNo}
</select>
<select id="listByWpiIdMes" resultType="org.springblade.desk.quality.pojo.entity.WorkPlanItemDetail">
select *,b.ITEM_NAME as trialItem,b.STANDARD_NAME as trialStandard,b.ID as wpiId from QA_WORK_PLAN_ITEM_DETAIL a
left join QA_WORK_PLAN_ITEM b on a.WORK_PLAN_ITEM_ID = b.ID where a.WORK_PLAN_ITEM_ID = #{wpiId}
order by a.UPDATE_TIME,a.GAUGE_VALUE1 desc
</select>
<select id="getConcatMrByWpId" resultType="org.springblade.desk.produce.pojo.entity.WorkPlan">
select nvl(sum(a.flag_qty),0) as flagQty, nvl(wmsys.wm_concat(a.flag_colour_one),' ') as flagColourOne, nvl(wmsys.wm_concat(a.flag_colour_two),' ') as flagColourTwo, nvl(wmsys.wm_concat(a.flag_ink),' ') as flagInk, nvl(wmsys.wm_concat(a.flag_matter),' ') as flagMatter,
nvl(sum(a.belt_qty),0) as beltQty, nvl(wmsys.wm_concat(a.belt_colour_one),' ') as beltColourOne, nvl(wmsys.wm_concat(a.belt_colour_two),' ') as beltColourTwo, nvl(wmsys.wm_concat(a.belt_ink),' ') as beltInk, nvl(wmsys.wm_concat(a.belt_matter),' ') as beltMatter
from MES_MAKE_REC a where a.wp_id = #{wpId} order by a.ID desc
</select>
@ -147,7 +187,7 @@
<if test="aTrue == true">
and b.work_slot != '烘箱'
</if>
order by mtn_code, b.pr_id
order by mtn_code, b.id
</select>
<select id="listPrByWpIdIndexAndMtnCode" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
@ -158,7 +198,41 @@
order by b.ID asc
</select>
<select id="getBoxInfoByWpIdMtnCode" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
<select id="listSjSlotInfoMes" resultType="org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO">
select a.PART_CODE, a.BATCH_NO, a.WORK_QTY as qua, a.area, a.sumArea as totalArea,a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type
from (
select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.PO_AREA as area,
sum(b.WORK_QTY*d.PO_AREA) over() as sumArea,
a.MTN_CODE, d.prod_ident,c.wo_code,f.material,d.yield_type from MES_MAC_TOOL_USE a
inner join MES_WORK_PLAN b on a.WP_ID = b.WP_ID
inner join MES_WORK_ORDER c on b.WO_ID = c.ID
inner join MES_YIELD_ORDER d on c.YO_ID = d.ID
inner join ds_part f on d.part_code = f.part_code
where a.MTN_CODE in(
select a.MTN_CODE from MES_MAC_TOOL_USE a
left join DE_EQUIPMENT_CARD b on a.EQUIPMENT_CARD = b.ID
where a.WP_ID = #{wpId}
<if test="aTrue==true">
and b.CATEGORYS = '产线设备'
</if>
<if test="aTrue==false">
and (b.CATEGORYS not like '%烘箱%' or b.CATEGORYS is null )
</if>
) and a.mtu_index = '2'
)a group by a.PART_CODE, a.BATCH_NO, a.WORK_QTY, a.area, a.sumArea,
a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type
</select>
<select id="findFatherByYoIdMes" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
select * from pr_work_order a inner join pj_yield_order b on a.yo_id = b.id and b.id = #{yoId}
</select>
<select id="listByWoIdAllMes" resultType="org.springblade.desk.produce.pojo.entity.WorkPlan">
select a.* from rb_pr_work_plan a where a.wo_id= #{woId} order by orders asc
</select>
<select id="getBoxInfoByWpIdMtnCodeList" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
select min(c.IN_DATE), max(c.OUT_DATE), 'Max:'||max(c.TEMP_SLOT)||'/'||'Min:'||min(c.temp_slot), max(c.DEVICE_ID)
from MES_QC_PRODUCE_RUN c where c.mtn_code in(
select a.mtn_code from MES_MAC_TOOL_USE a left join MES_EQUIPMENT_CARD b on a.EQUIPMENT_CARD = b.ID
@ -167,15 +241,29 @@
</select>
<select id="getDataByWpIdAndIndexList" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select b.* from MES_MAC_TOOL_USE a
select a.* from MES_MAC_TOOL_USE a
left join MES_WORK_PLAN wp on a.WP_ID = wp.ID
where wp.Id=#{wpId} and a.mtu_index=#{indexNum} order by a.mtuId
where wp.Id=#{wpId} and a.mtu_index=#{indexNum} order by a.Id
</select>
<select id="getDataByWpIdAndIndex" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select a.* from MES_MAC_TOOL_USE a
left join MES_WORK_PLAN wp on a.WP_ID = wp.ID
where wp.Id=#{wpId} and a.mtu_index=#{numberIndex} order by a.Id desc
</select>
<select id="getHangNumIsNull" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select a.* from MES_MAC_TOOL_USE a where a.wp_id = #{wpId} and hang_num is not null
</select>
<select id="getDataByWcIdAndPpsId" resultType="org.springblade.desk.produce.pojo.entity.DsRbFilePreserve">
select from DS_RB_FILE_PRESERVE a where 1=1
<if test="wcId != null">
and a.WC_ID = #{wcId}
</if>
and a.PPS_ID = #{ppsId} and a.LINE = 2
</select>
<select id="getByRfpsId" resultType="org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO">
select * ,slot.rfps_type as rfpsType from MES_RB_FILE_PRESERVE_DETAIL a
@ -185,6 +273,21 @@
</select>
<select id="getByRfpId" resultType="org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity">
select a.* from MES_RB_FILE_PRESERVE_SLOT a
left join DS_RB_FILE_PRESERVE slot on a.Id = slot.RFP_ID
where slot.RFP_ID =#{rfpId}
</select>
<select id="getDataByOneData" resultType="org.springblade.desk.produce.pojo.entity.MesBsAdditionalMessEntity">
select a.* from MES_BS_ADDITIONAL_MESS a
where a.ONE_DATA =#{mtnCode} and a.TYPE = #{indexNum}
</select>
<select id="loadPrMacToolUseByMtnCode" resultType="java.lang.String">
SELECT
c.card_no

@ -0,0 +1,22 @@
package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import java.util.List;
/**
*
*
* @author BladeX
* @since 2025-11-28
*/
public interface IDsRbFilePreserveService extends BaseService<DsRbFilePreserve> {
}

@ -0,0 +1,40 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.produce.mapper.DsRbFilePreserveMapper;
import org.springblade.desk.produce.mapper.MacToolUseMapper;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.service.IDsRbFilePreserveService;
import org.springblade.desk.produce.service.IMacToolUseService;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
/**
* 设备工装使用记录 服务实现类
*
* @author BladeX
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class DsRbFilePreserveServiceImpl extends BaseServiceImpl<DsRbFilePreserveMapper, DsRbFilePreserve> implements IDsRbFilePreserveService {
}

@ -9,7 +9,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.produce.mapper.MacToolUseMapper;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
@ -18,9 +20,11 @@ import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.service.IMacToolUseService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static com.fasterxml.jackson.databind.type.LogicalType.DateTime;
@ -38,6 +42,8 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
private final IBsProcessSetService bsProcessSetService;
private final IEquipmentService equipmentService;
@Override
public String nextCode(int i) {
// 编码模式
@ -58,27 +64,34 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
}
@Override
@Transactional(rollbackFor = Exception.class)
public void unMacToolUseBind(List<MacToolUse> mtuList) {
MacToolUse mtu = null;
Date now = new Date();
RackSetEntity bsRackSet;
List<RackSetEntity> bsRackSets = new ArrayList<>();
List<EquipmentEntity> equipments = equipmentService.listByIds(mtuList.stream().map(MacToolUse::getEquipmentCard).toList());
Map<Long, EquipmentEntity> equipmentMap = equipments.stream().collect(Collectors.toMap(EquipmentEntity::getId, v -> v));
for (MacToolUse item : mtuList) {
if (mtu == null && item.getEquipmentCard() != null) {
EquipmentEntity equipment = equipmentMap.get(item.getEquipmentCard());
if (mtu == null && item.getEquipmentCard() != null && "烘箱设备".equals(equipment.getCategorys())) {
mtu = item;
}
item.setFinished(1);
item.setManualUnBuildTime(now);
String deviceCode = item.getEquipmentCard() != null ? item.getMtnCode() : "";
String deviceCode = equipment != null ? equipment.getDeviceCode() : "";
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:unMacToolUseBind(),{}", deviceCode, item.getHangNum(), item.getMtnCode(), item.getFinished());
// 将挂具状态改为空闲
if (item != null && item.getBsRackSet() != null) {
RackSetEntity bsRackSet = new RackSetEntity();
if (item.getBsRackSet() != null) {
bsRackSet = new RackSetEntity();
bsRackSet.setId(item.getBsRackSet());
bsRackSet.setBindQty((short) 0);
bsRackSet.setStatus(RackSetEntity.RS_STATUS_FREE);
rackSetService.updateById(bsRackSet);
bsRackSets.add(bsRackSet);
}
this.updateById(item);
}
rackSetService.updateBatchById(bsRackSets);
this.updateBatchById(mtuList);
//this.haveHongXiaoTem(mtu);
}

@ -314,6 +314,8 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
MacToolUse mtu;
//绑定日期
Date nowDate = new Date();
List<MacToolUse> mtuList = new ArrayList<>();
List<WorkPlan> workPlans = new ArrayList<>();
for (Long id : planList) {
if (operate != null && mesQcProduceRunService.getDataByWpIdAndSlot(id, operate)) {
throw new ServiceException("此工序已有对应操作的记录,请勿重复操作");
@ -322,7 +324,6 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
mtu = new MacToolUse();
mtu.setWpId(id);
mtu.setBindType("sj");
// "玻璃饼排蜡玻化(箱式炉)".equals(ppsName) ||
if ("配胶".equals(operate) || "玻璃饼压制".equals(ppsName) || "振光".equals(operate) || "玻璃饼印字".equals(ppsName)
|| "I面涂覆".equals(operate) || "II面涂覆".equals(operate)) {
mtu.setFinished(1);
@ -330,18 +331,19 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:sjBindingCard(),{}", deviceCode, mtu.getHangNum(), mtu.getMtnCode(), mtu.getFinished());
}
this.packageMtu(mtu, null, null, equipment.getId(), code);
macToolUseService.save(mtu);
mtuList.add(mtu);
//修改作业计划绑定状态为绑定
workPlan.setBindStatus(WorkPlan.BIND_STATUS_BIND);
workPlan.setPrintType(WorkPlan.PRINT_TYPE_PROCESS);
baseMapper.updateById(workPlan);
workPlans.add(workPlan);
}
macToolUseService.saveBatch(mtuList);
baseMapper.updateById(workPlans);
MesQcProduceRunEntity qcProduceRun = new MesQcProduceRunEntity();
qcProduceRun.setMtnCode(code);
qcProduceRun.setDeviceId(equipment != null ? equipment.getDeviceCode() : "");
qcProduceRun.setInDate(new Date().toString());
qcProduceRun.setCreateMan(String.valueOf(AuthUtil.getUser().getUserId()));
qcProduceRun.setCreateTime(nowDate);
// 操作的步骤
qcProduceRun.setWorkSlot(operate);
// 此次绑定的工序
@ -386,25 +388,24 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
@Override
@Transactional(rollbackFor = Exception.class)
public void unBind(UnBingVo unBingVo) {
if (StringUtils.isBlank(unBingVo.getRsCode()) && StringUtils.isBlank(unBingVo.getFsCode()) && StringUtils.isBlank(unBingVo.getDeviceCode())) {
return;
}
// 查询挂具
RackSetEntity bsRackSet = rackSetService.getOne(Wrappers.<RackSetEntity>lambdaQuery().eq(RackSetEntity::getRsCode, unBingVo.getRsCode()));
RackSetEntity bsRackSet = rackSetService.getBsRackSetByCode(unBingVo.getRsCode());
// 查询飞靶
FeiBaSetEntity bsFeiBaSet = feiBaSetService.getOne(Wrappers.<FeiBaSetEntity>lambdaQuery().eq(FeiBaSetEntity::getFsCode, unBingVo.getFsCode()));
FeiBaSetEntity bsFeiBaSet = feiBaSetService.getBsFeiBaSetByCode(unBingVo.getFsCode());
//查询设备
EquipmentEntity equipmentCard = equipmentService.getOne(Wrappers.<EquipmentEntity>lambdaQuery().eq(EquipmentEntity::getDeviceCode, unBingVo.getDeviceCode()));
EquipmentEntity equipmentCard = equipmentService.getDeEquipmentCardByCode(unBingVo.getDeviceCode());
// 如果都为空,则返回
if (equipmentCard == null && bsFeiBaSet == null && bsRackSet == null) {
return;
}
//绑定记录
List<MacToolUse> mtuList = macToolUseService.list(Wrappers.<MacToolUse>lambdaQuery()
.eq(MacToolUse::getBsFeiBaSet, bsFeiBaSet.getId()).eq(MacToolUse::getBsRackSet, bsRackSet.getId())
.eq(MacToolUse::getEquipmentCard, equipmentCard.getId()).eq(MacToolUse::getFinished, 0));
List<MacToolUse> mtuList = macToolUseService.listByParams(bsRackSet.getId(), bsFeiBaSet != null ? bsFeiBaSet.getId() : null, equipmentCard != null ? equipmentCard.getId() : null, null);
macToolUseService.unMacToolUseBind(mtuList);
this.unBindDetail(mtuList);
@ -726,37 +727,33 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
private void unBindBsFeiBaSet(FeiBaSetEntity bsFeiBaSet) {
if (bsFeiBaSet != null) {
bsFeiBaSet.setBindQty((short) 0);
bsFeiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_FREE);
feiBaSetService.updateById(bsFeiBaSet);
}
bsFeiBaSet.setBindQty((short) 0);
bsFeiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_FREE);
feiBaSetService.updateById(bsFeiBaSet);
}
private void unBindDeEquipmentCard(EquipmentEntity equipmentCard) {
//设备不为空是解绑设备
if (equipmentCard != null) {
equipmentCard.setBindQty(equipmentCard.getBindQty().subtract(BigDecimal.valueOf(1)));
if (equipmentCard.getBindQty().compareTo(BigDecimal.valueOf(0)) <= 0) {
equipmentCard.setBindQty(BigDecimal.valueOf(0));
equipmentCard.setStatus(0);
}
equipmentService.updateById(equipmentCard);
equipmentCard.setBindQty(equipmentCard.getBindQty().subtract(BigDecimal.valueOf(1)));
if (equipmentCard.getBindQty().compareTo(BigDecimal.valueOf(0)) <= 0) {
equipmentCard.setBindQty(BigDecimal.valueOf(0));
equipmentCard.setStatus(0);
}
equipmentService.updateById(equipmentCard);
}
private void unBindDetail(List<MacToolUse> mtuList) {
if (mtuList == null || mtuList.isEmpty()) {
if (CollectionUtils.isEmpty(mtuList)) {
return;
}
List<WorkPlan> wpList = new ArrayList<>();
for (MacToolUse mtu : mtuList) {
//修改作业计划绑定状态
WorkPlan wp = baseMapper.selectById(mtu.getWpId());
wp.setBindStatus(WorkPlan.BIND_STATUS_FREE);
baseMapper.updateById(wp);
wpList.add(wp);
}
baseMapper.updateById(wpList);
}
/**

@ -0,0 +1,37 @@
package org.springblade.desk.produce.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import org.springblade.desk.produce.pojo.vo.DsRbFilePreserveVO;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
import java.util.Objects;
/**
* 热表电子档案维护-明细 包装类,返回视图层所需的字段
*
* @author BladeX
* @since 2026-02-05
*/
public class DsRbFilePreserveWrapper extends BaseEntityWrapper<DsRbFilePreserve, DsRbFilePreserveVO> {
public static DsRbFilePreserveWrapper build() {
return new DsRbFilePreserveWrapper();
}
@Override
public DsRbFilePreserveVO entityVO(DsRbFilePreserve mesRbFilePreserveDetail) {
DsRbFilePreserveVO mesRbFilePreserveDetailVO = Objects.requireNonNull(BeanUtil.copyProperties(mesRbFilePreserveDetail, DsRbFilePreserveVO.class));
//User createUser = UserCache.getUser(mesRbFilePreserveDetail.getCreateUser());
//User updateUser = UserCache.getUser(mesRbFilePreserveDetail.getUpdateUser());
//mesRbFilePreserveDetailVO.setCreateUserName(createUser.getName());
//mesRbFilePreserveDetailVO.setUpdateUserName(updateUser.getName());
return mesRbFilePreserveDetailVO;
}
}

@ -199,6 +199,24 @@ public class InspectionTaskController extends BladeController {
// return ResultInfo.ok(prWorkOrderService.newPagePrintEleFiles(woId, planList,moduleList));
}
@Operation(summary = "烧结电子档案打印")
@PostMapping(value = "/pagePrintSj")
public R pagePrintSj(@RequestBody JSONObject data) {
Long woId = data.getLong("woId");
Integer yieldType = data.getInteger("yieldType");
List<Boolean> planList = new ArrayList<>();
List<Boolean> moduleList = new ArrayList<>();
if(data.getJSONArray("planList") != null){
planList= data.getJSONArray("planList").toJavaList(Boolean.class); // 工序
moduleList= data.getJSONArray("moduleList").toJavaList(Boolean.class); // 模块
}
Object pagePrintSjEleFiles = service.pagePrintSjEleFiles(woId, yieldType,planList,moduleList);
return R.data(pagePrintSjEleFiles);
}
/**
* [检验任务] 自定义分页

@ -250,6 +250,7 @@
wo.batch_no AS poBatchNo,
ps.NAME AS currentProcessName,
yo.PRODUCT_IDENT AS prodIdent,
yo.YIELD_TYPE as yieldType,
yo.YP_AREA * wo.MAKE_QTY AS areaTotal,
yo.YP_AREA AS area,
wo.MAKE_QTY AS poQty,

@ -121,4 +121,7 @@ public interface IInspectionTaskService extends BaseService<InspectionTask> {
R sameResultCopy(Long sourceId, Long targetId);
InspectionTask refreshStatusAndQty(Long id);
Object pagePrintSjEleFiles(Long woId, Integer yieldType,List<Boolean> planList, List<Boolean> moduleList);
}

@ -4,6 +4,7 @@
package org.springblade.desk.quality.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -34,6 +35,8 @@ import org.springblade.desk.basic.util.IdUtil;
import org.springblade.desk.basic.util.StatusCountMap;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartSub;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
@ -46,6 +49,8 @@ import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO;
import org.springblade.desk.produce.pojo.dto.PrintChildCheck;
import org.springblade.desk.produce.pojo.dto.PrintChildCheckChild;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.service.IMesEquipmentCardService;
@ -72,9 +77,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import static com.fasterxml.jackson.databind.type.LogicalType.DateTime;
/**
* [检验任务] 服务实现类
*
@ -471,7 +479,17 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 生产过程(放在获取检验记录下面,这个方法会排除数据)
this.getNewProcess(wpList, jsonObj, planList);
if (moduleList.get(3)) {
// 审理单记录
// PrWorkOrder wor = this.getByKey(woId);
// PjYieldOrder yo = wo.getPjYieldOrder();
// jsonObj.put("modelFive", qcReviewSheetDao.getQcReviewSheetList(yo.getPartCode(), yo.getBatchNo()));
jsonObj.put("modelFive", null);
}
if (moduleList.get(2)) {
// 镀后入库记录
jsonObj.put("modelFour", wpList.get(wpList.size() - 1));
}
return jsonObj;
}
@ -486,6 +504,9 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// }
List<WorkPlan> workPlanList = new ArrayList<>();
for (int i = 0; i < newWpList.size(); i++) {
// if(i == modelFlag.size()-1){
// break;
// }
if (modelFlag.get(i)) {
WorkPlan prWorkPlan = newWpList.get(i);
this.getProcessByWp(prWorkPlan);
@ -516,9 +537,9 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
if (process.getName().equals("固溶")) {
slotList = workPlanMapper.listSlotInfoGr(workPlan.getId(), Boolean.FALSE);
} else {
slotList = workPlanMapper.listSlotInfo(workPlan.getId(), Boolean.TRUE);
slotList = workPlanMapper.listSlotInfoList(workPlan.getId(), Boolean.TRUE);
if (slotList == null || slotList.size() == 0) {
slotList = workPlanMapper.listSlotInfo(workPlan.getId(), Boolean.FALSE);
slotList = workPlanMapper.listSlotInfoList(workPlan.getId(), Boolean.FALSE);
}
}
// 2025-07-23 线上迁移修改 删除了prMacToolUseService.listSlotInfo方法调用
@ -570,20 +591,20 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
}
}
Object[] obs = workPlanMapper.getConcatMrByWpId(workPlan.getId());
if (obs.length > 0) {
WorkPlan plan = workPlanMapper.getConcatMrByWpId(workPlan.getId());
if (null != plan) {
// 色标数据
workPlan.setFlagQty(Double.valueOf(obs[0].toString()));
workPlan.setFlagColourOne(obs[1].toString());
workPlan.setFlagColourTwo(obs[2].toString());
workPlan.setFlagInk(obs[3].toString());
workPlan.setFlagMatter(obs[4].toString());
workPlan.setFlagQty(Double.valueOf(plan.getFlagQty().toString()));
workPlan.setFlagColourOne(plan.getFlagColourOne().toString());
workPlan.setFlagColourTwo(plan.getFlagColourTwo().toString());
workPlan.setFlagInk(plan.getFlagInk().toString());
workPlan.setFlagMatter(plan.getFlagMatter().toString());
// 色带数据
workPlan.setBeltQty(Double.valueOf(obs[5].toString()));
workPlan.setBeltColourOne(obs[6].toString());
workPlan.setBeltColourTwo(obs[7].toString());
workPlan.setBeltInk(obs[8].toString());
workPlan.setBeltMatter(obs[9].toString());
workPlan.setBeltQty(Double.valueOf(plan.getBeltQty().toString()));
workPlan.setBeltColourOne(plan.getBeltColourOne().toString());
workPlan.setBeltColourTwo(plan.getBeltColourTwo().toString());
workPlan.setBeltInk(plan.getBeltInk().toString());
workPlan.setBeltMatter(plan.getBeltMatter().toString());
}
List<MesQcProduceRunEntity> qcProduceRunsList;
@ -635,7 +656,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
qcProduceRunsList = workPlanMapper.listPrByWpIdIndexAndMtnCode(workPlan.getId(), 1, prMacToolUseItem.getMtnCode());
// 烘箱信息(从设备,工装使用记录获取)
// boxInfo = workPlanMapper.getBoxInfoByWpIdMtnCode(workPlan.getId());
List<MesQcProduceRunEntity> runs = workPlanMapper.getBoxInfoByWpIdMtnCode(workPlan.getId());
List<MesQcProduceRunEntity> runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId());
if(runs != null && runs.size() > 0){
boxInfo = runs.get(0);
}
@ -661,105 +682,115 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
//1111111111111111111111111111111111111111111111
// // 根据电子档案维护组装数据(自动)
// prMacToolUse = prMacToolUseService.getDataByWpIdAndIndex(workPlan.getWpId(), "2");
// if (prMacToolUse != null && prMacToolUse.getMtuId() != null) {
// // 获取模板数据
// List<DsRbFilePreserve> dsRbFilePreserveList = null;
// if (workPlan.getProcedureSet() != null &&
// ("喷砂".equals(workPlan.getProcedureSet().getPpsName()) || "涂色标".equals(workPlan.getProcedureSet().getPpsName()))) {
// dsRbFilePreserveList = dsRbFilePreserveService.getDataByWcIdAndPpsId(null,
// workPlan.getProcedureSet().getPpsId(), Boolean.TRUE);
// } else {
// dsRbFilePreserveList = dsRbFilePreserveService.getDataByWcIdAndPpsId(bsCenterTeam.getBsWorkCenter().getWcId(),
// workPlan.getProcedureSet().getPpsId(), Boolean.TRUE);
// }
// if (dsRbFilePreserveList != null && dsRbFilePreserveList.size() > 0) {
// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(dsRbFilePreserveList.get(0).getRfpId());
// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getWpId(), 2, Boolean.TRUE);
//
// // 烘箱信息(从设备,工装使用记录获取)
// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId());
// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0 && StringUtils.isNotBlank(boxInfo.getInDate())) {
// qcProduceRunsList.add(boxInfo);
// }
// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
// //验证qc中重复槽子
//// Boolean checkQcRepeat = this.checkQcRepeat(qcProduceRunsList);
//// if (checkQcRepeat) {
//// //返镍排序
//// this.setRbFilePreserveDataFn(preserveSlotList, qcProduceRunsList, workPlan,
//// dsRbFilePreserveSlotList, prMacToolUse);
//// } else {
// // cdl 20250218 修改分槽同一槽号连续出现
// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan,
// dsRbFilePreserveSlotList, prMacToolUse);
//// }
//
// // cdl
// if (!(num > 0)) {
// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
// 根据电子档案维护组装数据(自动)
prMacToolUse = workPlanMapper.getDataByWpIdAndIndex(workPlan.getId(), "2");
if (prMacToolUse != null && prMacToolUse.getId() != null) {
// 获取模板数据
List<DsRbFilePreserve> dsRbFilePreserveList = null;
if (workPlan.getPpsId() != null){
BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId());
if("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) {
dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(null,
workPlan.getPpsId(), Boolean.TRUE);
} else {
dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(bsCenterTeam.getWcId(),
workPlan.getPpsId(), Boolean.TRUE);
}
}
if (dsRbFilePreserveList != null && dsRbFilePreserveList.size() > 0) {
preserveSlotList = workPlanMapper.getByRfpId(dsRbFilePreserveList.get(0).getId());
qcProduceRunsList = workPlanMapper.listPrByWpIdIndex(workPlan.getId(), 2, Boolean.TRUE);
List<MesQcProduceRunEntity> runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId());
if(runs != null && runs.size() > 0){
boxInfo = runs.get(0);
}
// 烘箱信息(从设备,工装使用记录获取)
// boxInfo = workPlanMapper.getBoxInfoByWpIdMtnCode(workPlan.getId());
if (qcProduceRunsList != null && qcProduceRunsList.size() > 0 && StringUtils.isNotBlank(boxInfo.getInDate())) {
qcProduceRunsList.add(boxInfo);
}
if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
//验证qc中重复槽子
// Boolean checkQcRepeat = this.checkQcRepeat(qcProduceRunsList);
// if (checkQcRepeat) {
// //返镍排序
// this.setRbFilePreserveDataFn(preserveSlotList, qcProduceRunsList, workPlan,
// dsRbFilePreserveSlotList, prMacToolUse);
// } else {
// cdl 20250218 修改分槽同一槽号连续出现
this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan,
dsRbFilePreserveSlotList, prMacToolUse);
// }
// num += 1;
// }
// }
// // 获取额外面积数据
// BsAdditionalMess dataByMtuCode = bsAdditionalMessDao.getDataByOneData(prMacToolUse.getMtnCode(), BsAdditionalMess.TYPE_ONE);
// workPlan.setBsAdditionalMess(dataByMtuCode);
// }
// cdl
if (!(num > 0)) {
workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
}
num += 1;
}
}
// 获取额外面积数据
MesBsAdditionalMessEntity dataByMtuCode = workPlanMapper.getDataByOneData(prMacToolUse.getMtnCode(), MesBsAdditionalMessEntity.TYPE_ONE);
workPlan.setBsAdditionalMess(dataByMtuCode);
}
//222222222222222222222222222222222222222222222
// // 根据电子档案维护组装数据(线下)
//// prMacToolUse = prMacToolUseService.getDataByWpIdAndIndex(workPlan.getWpId(), "3");
//// if (prMacToolUse != null && prMacToolUse.getMtuId() != null) {
//// // 获取模板数据
//// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUse.getRfpId()));
//// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getWpId(), 3, Boolean.FALSE);
//// // 烘箱信息(从设备,工装使用记录获取)
//// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId());
//// if (StringUtils.isNotBlank(boxInfo.getInDate())) {
//// qcProduceRunsList.add(boxInfo);
//// }
//// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList);
//// //zxh 20241231 注释下方代码
////// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
////// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
////// }
//// }
// //zxh 20250117 解决单工序绑定两个手动记录只显示一个问题
// List<PrMacToolUse> prMacToolUseList = prMacToolUseService.getDataByWpIdAndIndexList(workPlan.getWpId(), "3");
// if (prMacToolUseList != null && prMacToolUseList.size() > 0) {
// for (PrMacToolUse prMacToolUseSd : prMacToolUseList) {
// if (prMacToolUseSd != null && prMacToolUseSd.getMtuId() != null) {
// // 获取模板数据
// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId()));
// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndexAndMtnCode(workPlan.getWpId(), 3, prMacToolUseSd.getMtnCode());
// // 烘箱信息(从设备,工装使用记录获取)
// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId());
// if (StringUtils.isNotBlank(boxInfo.getInDate())) {
// qcProduceRunsList.add(boxInfo);
// }
//
// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
//
// // cdl 20250218 修改分槽同一槽号连续出现
// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan,
// dsRbFilePreserveSlotList, prMacToolUseSd);
// if (!(num > 0)) {
// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
// }
// }
// }
// 根据电子档案维护组装数据(线下)
// prMacToolUse = prMacToolUseService.getDataByWpIdAndIndex(workPlan.getWpId(), "3");
// if (prMacToolUse != null && prMacToolUse.getMtuId() != null) {
// // 获取模板数据
// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUse.getRfpId()));
// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getWpId(), 3, Boolean.FALSE);
// // 烘箱信息(从设备,工装使用记录获取)
// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId());
// if (StringUtils.isNotBlank(boxInfo.getInDate())) {
// qcProduceRunsList.add(boxInfo);
// }
// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList);
// //zxh 20241231 注释下方代码
//// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
//// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
//// }
// }
//zxh 20250117 解决单工序绑定两个手动记录只显示一个问题
List<MacToolUse> prMacToolUseList = workPlanMapper.getDataByWpIdAndIndexList(workPlan.getId(), "3");
if (prMacToolUseList != null && prMacToolUseList.size() > 0) {
for (MacToolUse prMacToolUseSd : prMacToolUseList) {
if (prMacToolUseSd != null && prMacToolUseSd.getId() != null) {
// 获取模板数据
preserveSlotList = workPlanMapper.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId()));
qcProduceRunsList = workPlanMapper.listPrByWpIdIndexAndMtnCode(workPlan.getId(), 3, prMacToolUseSd.getMtnCode());
// 烘箱信息(从设备,工装使用记录获取)
// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId());
List<MesQcProduceRunEntity> runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId());
if(runs != null && runs.size() > 0){
boxInfo = runs.get(0);
}
if (StringUtils.isNotBlank(boxInfo.getInDate())) {
qcProduceRunsList.add(boxInfo);
}
if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
// cdl 20250218 修改分槽同一槽号连续出现
this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan,
dsRbFilePreserveSlotList, prMacToolUseSd);
if (!(num > 0)) {
workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
}
}
}
}
}
}
// workPlan.setDsRbFilePreserveSlotList(dsRbFilePreserveSlotList);
workPlan.setDsRbFilePreserveSlotList(dsRbFilePreserveSlotList);
}
@ -1277,6 +1308,369 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
return task;
}
private JSONObject glassCake(Long woId) {
JSONObject obj = new JSONObject();
// 子件订单信息
WorkOrder prWorkOrder =workOrderMapper.selectById(woId);
YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId());
// DsPartEntity dsPart = dsPartService.getByPartCode(prWorkOrder.getPjYieldOrder().getPartCode());
QueryWrapper<DsPartEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("part_code", yieldOrder.getPartCode());
List<DsPartEntity> dsPartList = partService.list(queryWrapper);
DsPartEntity dsPart = new DsPartEntity();
if(null != dsPartList && dsPartList.size() > 0){
dsPart = dsPartList.get(0);
}
// 获取工序
List<WorkPlan> prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId());
obj.put("prWorkOrder", prWorkOrder);
obj.put("dsPart", dsPart);
List<WorkPlanItem> prWorkPlanItems;
List<PrintChildCheck> printChildCheckList = new ArrayList<>();
for (WorkPlan prWorkPlan : prWorkPlanList) {
// // 同槽信息
// List<QcSlotInfo> slotList = prMacToolUseService.listSjSlotInfo(prWorkPlan.getWpId(), Boolean.FALSE);
// prWorkPlan.setSlotList(slotList);
//
// // 设备绑定记录
// List<QcProduceRun> prList = qcProduceRunService.listPrByWpId(prWorkPlan.getWpId());
// prWorkPlan.setPrList(prList);
this.getProcessByWp(prWorkPlan);
prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId());
if (prWorkPlanItems != null && prWorkPlanItems.size() > 0) {
PrintChildCheck printChildCheck;
for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) {
printChildCheck = new PrintChildCheck();
// printChildCheck.setTestOrders(prWorkPlanItem.getTrialNo());
// printChildCheck.setTestName(prWorkPlanItem.getTrialItem());
// printChildCheck.setTrialStandard(prWorkPlanItem.getTrialStandard());
printChildCheck.setTestOrders(prWorkPlanItem.getItemCode());
printChildCheck.setTestName(prWorkPlanItem.getItemName());
printChildCheck.setTrialStandard(prWorkPlanItem.getStandardName());
printChildCheck.setCheckResult(prWorkPlanItem.getCheckResult() == -1 ? "未检验" : prWorkPlanItem.getCheckResult() == 1 ? "合格" :
prWorkPlanItem.getCheckResult() == 2 ? "不合格" : prWorkPlanItem.getCheckResult() == 3 ? "NA" : "");
if (prWorkPlanItem.getCheckUserId() != null) {
R<User> user = userClient.userInfoById(prWorkPlanItem.getCheckUserId());
if(null != user && null != user.getData()){
printChildCheck.setCheckName(user.getData().getRealName());
}
}
if (prWorkPlanItem.getCheckDate() != null) {
printChildCheck.setCheckDate(prWorkPlanItem.getCheckDate().toString());
}
printChildCheckList.add(printChildCheck);
}
prWorkPlan.setPrintChildCheck(printChildCheckList);
}
}
obj.put("prWorkPlanList", prWorkPlanList);
return obj;
}
private List<WorkOrder> checkOrderSj(WorkOrder prWorkOrder) {
//B号为空则直接跳过
YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId());
if (StringUtils.isBlank(yieldOrder.getRoamNo())) {
return null;
}
//非烧结零件跳过子件验证
if (!yieldOrder.getYieldType().equals(YieldOrder.YIELD_TYPE_2)) {
return null;
}
// String roamNoText = dsPartService.findNameByRoamNo(prWorkOrder.getPjYieldOrder().getPartCode(), prWorkOrder.getPjYieldOrder().getRoamNo());
// if (StringUtils.isBlank(roamNoText)) {
// return null;
// }
//
// //如果部件b号不带有封接字样, 则不显示子件
// if (!roamNoText.contains("封接")) {
// return null;
// }
//获取到所有除玻璃饼外的其他子件车间订单
List<WorkOrder> subList = workPlanMapper.findCubByYoIdMes(yieldOrder.getId());
//获取到部件下面的玻璃饼信息
List<DsPartRelationEntity> dpsList = workPlanMapper.listByPartCodeNew(yieldOrder.getPartCode(), DsPartSub.SIN_TER_TYPE_BLB);
if (dpsList != null && dpsList.size() > 0) {
List<WorkOrder> blbList;
for (DsPartRelationEntity dps : dpsList) {
blbList = workPlanMapper.findByPartCodeAndMemoMes(dps.getChildPartCode(), yieldOrder.getYpCode());
subList.addAll(blbList);
}
}
return subList;
}
private JSONObject glassSealing(Long woId, List<Boolean> planList, List<Boolean> moduleList) {
JSONObject obj = new JSONObject();
// 订单信息
WorkOrder prWorkOrder =workOrderMapper.selectById(woId);
List<WorkOrder> subPrWorkOrderList = this.checkOrderSj(prWorkOrder);
YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId());
// DsPartEntity dsPart = dsPartService.getByPartCode(prWorkOrder.getPjYieldOrder().getPartCode());
QueryWrapper<DsPartEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("part_code", yieldOrder.getPartCode());
List<DsPartEntity> dsPartList = partService.list(queryWrapper);
DsPartEntity dsPart = new DsPartEntity();
if(null != dsPartList && dsPartList.size() > 0){
dsPart = dsPartList.get(0);
}
obj.put("prWorkOrder", prWorkOrder);
obj.put("dsPart", dsPart);
JSONArray sunPrWorkOrderList = new JSONArray();
DsPartSub dsPartSub;
if (subPrWorkOrderList != null && subPrWorkOrderList.size() > 0) {
for (WorkOrder workOrder : subPrWorkOrderList) {
JSONObject sub = new JSONObject();
dsPartSub = workPlanMapper.getByPartCodeAndSubCodeMes(dsPart.getPartCode(), yieldOrder.getPartCode());
if (dsPartSub != null) {
sub.put("batchNo", workOrder.getBatchNo());//批次号
sub.put("makeQty", workOrder.getMakeQty());//数量
sub.put("yieldType", dsPartSub.getSinTerType());//零件类型
sub.put("partCode", dsPartSub.getSubCode());//零件号
sub.put("material", dsPartSub.getMaterial());//材料
sub.put("plate", dsPartSub.getPlate());//镀种
if (dsPartSub.getArea() != null && dsPartSub.getQuota() != null) {
sub.put("poArea", String.valueOf(dsPartSub.getArea() * dsPartSub.getQuota()));//面积
}
}
sunPrWorkOrderList.add(sub);
}
}
obj.put("sunPrWorkOrderList", sunPrWorkOrderList);
// 获取工序
List<WorkPlan> prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId());
List<WorkPlan> newPrWorkPlanList = new ArrayList<>();
List<WorkPlanItem> prWorkPlanItems;
List<PrintChildCheck> printChildCheckList;
for (int i = 0; i < prWorkPlanList.size(); i++) {
if (planList.get(i)) {
WorkPlan prWorkPlan = prWorkPlanList.get(i);
this.getProcessByWp(prWorkPlan);
prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId());
printChildCheckList = new ArrayList<>();
this.getCheckListDetail(printChildCheckList, prWorkPlanItems, true);
prWorkPlan.setPrintChildCheck(printChildCheckList);
newPrWorkPlanList.add(prWorkPlan);
}
}
obj.put("prWorkPlanList", newPrWorkPlanList);
if (moduleList.get(0)) {
// 审理单记录
// YieldOrder yo = prWorkOrder.getPjYieldOrder();
obj.put("qcReviewSheetList", workPlanMapper.getQcReviewSheetListMes(yieldOrder.getPartCode(), yieldOrder.getBatchNo()));
}
return obj;
}
public List<PrintChildCheck> getCheckListDetail(List<PrintChildCheck> checkList, List<WorkPlanItem> piLst, Boolean eleOrPrint) {
if (piLst != null && piLst.size() > 0) {
//开始组装检验项map
Map<String, PrintChildCheck> ccMap = new LinkedHashMap<>();
PrintChildCheck cc;
Map<String, List<PrintChildCheckChild>> piMap = new LinkedHashMap<>();
List<PrintChildCheckChild> lst;
for (WorkPlanItem pi : piLst) {
lst = piMap.get(pi.getItemCode());
WorkPlan plan = workPlanMapper.selectById(pi.getWpId());
String testOrder = plan.getOrders() + "-" + pi.getItemCode();
if (lst == null || lst.size() == 0) {
//组装检验小项集合
lst = new ArrayList<>();
piMap.put(testOrder, lst);
//组装打印检验大项集合
cc = new PrintChildCheck();
cc.setTestOrders(testOrder);
if (pi.getCheckQty() != null && pi.getCheckQty() > 0) {
cc.setCheckQty(pi.getCheckQty().toString());
}
// 230310新增试验数量
cc.setTestQty(pi.getTestQty() != null && pi.getTestQty() > 0 ? pi.getTestQty().toString() : "");
// 检验结果
if(0==pi.getCheckResult()){
cc.setCheckResult("未检验");
}
if(1==pi.getCheckResult()){
cc.setCheckResult("合格");
}
if(2==pi.getCheckResult()){
cc.setCheckResult("不合格");
}
if(-1==pi.getCheckResult()){
cc.setCheckResult("NA");
}
// cc.setCheckResult(!"未检验".equals(pi.getCheckResult()) ? pi.getCheckResult() : null);
if (pi.getCheckUserId() != null) {
R<User> user = userClient.userInfoById(pi.getCheckUserId());
String userName = user.getData().getAccount();
if(null != user && user.getData() != null){
cc.setCheckName(user.getData().getRealName());
}
//zxh 20250212 从nerp获取检验员印章
String checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(userName);
if (eleOrPrint) {
cc.setImgUrl(checkManByNewErp);
} else {
if (checkManByNewErp != null && checkManByNewErp.indexOf("base64,") > 0) {
String checkManByNewErpSubString = checkManByNewErp.substring(checkManByNewErp.indexOf("base64,") + 7);
cc.setImgUrl(checkManByNewErpSubString);
}
}
if(null != pi.getCheckDate()){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDateTime = pi.getCheckDate().format(formatter);
cc.setCheckDate(formattedDateTime);
}
}
ccMap.put(testOrder, cc);
}
if ("厚度检测".equals(pi.getItemName())) {
for (int i = 0; i < 3; i++) {
lst.add(new PrintChildCheckChild(pi.getItemCode(), pi.getStandardName(), pi.getCheckValue(), pi.getWpId()));
}
}
lst.add(new PrintChildCheckChild(pi.getItemCode(), pi.getStandardName(), pi.getCheckValue(), pi.getWpId()));
}
List<WorkPlanItemDetail> idLst;
for (Map.Entry<String, PrintChildCheck> entry : ccMap.entrySet()) {
cc = ccMap.get(entry.getKey());
if (cc != null) {
lst = piMap.get(cc.getTestOrders());
lst = lst.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()
-> new TreeSet<>(Comparator.comparing(i -> i.getWpiId()))), ArrayList::new));
if (lst != null && lst.size() > 0) {
for (PrintChildCheckChild ccc : lst) {
idLst = workPlanMapper.listByWpiIdMes(ccc.getWpiId());
if (idLst != null && idLst.size() > 0) {
lst = new ArrayList<>();
// 组装量具集合
for (WorkPlanItemDetail itemDetail : idLst) {
if ("厚度检测".equals(itemDetail.getTrialItem())) {
cc.setDeviceCode(itemDetail.getGaugeValue8());
lst.add(new PrintChildCheckChild(itemDetail.getTrialItem(),
itemDetail.getTrialStandard(), itemDetail.getGaugeValueNotNUll(),
null));
} else if (itemDetail.getActMtId() != null) {
lst.add(new PrintChildCheckChild(itemDetail.getTrialItem(), itemDetail.getRuleSize(),
itemDetail.getGaugeValue1(), itemDetail.getWpiId()));
cc.setDeviceCode(itemDetail.getTools());
if (cc.getTrialStandard() != null) {
cc.setTrialStandard(cc.getTrialStandard() + ';' + itemDetail.getRuleSize());
} else {
cc.setTrialStandard(itemDetail.getRuleSize());
}
if (cc.getCheckResult() != null) {
cc.setCheckResult(cc.getCheckResult());
} else {
cc.setCheckResult(itemDetail.getGaugeValue1());
}
}
}
}
cc.setCccList(lst);
checkList.add(cc);
break;
}
}
}
}
}
return checkList;
}
@Override
public Object pagePrintSjEleFiles(Long woId, Integer yieldType, List<Boolean> planList, List<Boolean> moduleList) {
if (yieldType == YieldOrder.YIELD_TYPE_4 || yieldType == YieldOrder.YIELD_TYPE_5) {
return this.metalParts(woId);
} else if (yieldType == YieldOrder.YIELD_TYPE_6) { // 石墨模
// return this.graphiteMold(woId);
return this.metalParts(woId);
} else if (yieldType == YieldOrder.YIELD_TYPE_3) { // 玻璃饼
return this.glassCake(woId);
} else if (yieldType == YieldOrder.YIELD_TYPE_2) { // 玻璃封接部件
return this.glassSealing(woId, planList, moduleList);
}
return null;
}
private JSONObject metalParts(Long woId) {
JSONObject obj = new JSONObject();
// 子件订单信息
WorkOrder prWorkOrder = workOrderMapper.selectById(woId);
// 获取部件订单
List<WorkOrder> workOrderList = workPlanMapper.findFatherByYoIdMes(prWorkOrder.getYoId());
// 获取工序
List<WorkPlan> prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId());
obj.put("prWorkOrder", prWorkOrder);
obj.put("workOrderList", workOrderList);
List<WorkPlanItem> prWorkPlanItems;
List<PrintChildCheck> printChildCheckList = new ArrayList<>();
for (WorkPlan prWorkPlan : prWorkPlanList) {
// 同槽信息
List<ProduceMonitorSlotListVO> slotList = workPlanMapper.listSjSlotInfoMes(prWorkPlan.getId(), Boolean.FALSE);
prWorkPlan.setSlotList(slotList);
// 设备绑定记录
List<MesQcProduceRunEntity> prList = workPlanMapper.listPrByWpId(prWorkPlan.getId());
prWorkPlan.setPrList(prList);
prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId());
if (prWorkPlanItems != null && prWorkPlanItems.size() > 0) {
PrintChildCheck printChildCheck;
for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) {
printChildCheck = new PrintChildCheck();
// printChildCheck.setTestOrders(prWorkPlanItem.getTrialNo());
// printChildCheck.setTestName(prWorkPlanItem.getTrialItem());
// printChildCheck.setTrialStandard(prWorkPlanItem.getTrialStandard());
printChildCheck.setTestOrders(prWorkPlanItem.getItemCode());
printChildCheck.setTestName(prWorkPlanItem.getItemName());
printChildCheck.setTrialStandard(prWorkPlanItem.getStandardName());
printChildCheck.setCheckResult(prWorkPlanItem.getCheckResult() == -1 ? "未检验" : prWorkPlanItem.getCheckResult() == 1 ? "合格" :
prWorkPlanItem.getCheckResult() == 2 ? "不合格" : prWorkPlanItem.getCheckResult() == 3 ? "NA" : "");
if (prWorkPlanItem.getCheckUserId() != null) {
R<User> user = userClient.userInfoById(prWorkPlanItem.getCheckUserId());
if(null != user && null != user.getData()){
printChildCheck.setCheckName(user.getData().getRealName());
}
}
if (prWorkPlanItem.getCheckDate() != null) {
printChildCheck.setCheckDate(prWorkPlanItem.getCheckDate().toString());
}
printChildCheckList.add(printChildCheck);
}
prWorkPlan.setPrintChildCheck(printChildCheckList);
}
}
obj.put("prWorkPlanList", prWorkPlanList);
return obj;
}
public void addRsSheet(Long id) {
InspectionTask task = getById(id);
if (InspectionTaskConst.CHECK_RESULT_NG.equals(task.getCheckResult())) {

@ -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