工艺演示提交

liweidong
liweidong-hj 3 months ago
parent 19896db778
commit 03d462e63c
  1. 4
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 11
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskBillDTO.java
  3. 111
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsFillingDetailEntity.java
  4. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsBatchPreservePlanEntity.java
  5. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java
  6. 76
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartVersionEntity.java
  7. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessProjectEntity.java
  8. 10
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSimilarPartsEntity.java
  9. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java
  10. 21
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskBillEntity.java
  11. 54
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/EpLineElectricEntity.java
  12. 21
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/PrReworkProcessEntity.java
  13. 15
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartVO.java
  14. 52
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartVersionVO.java
  15. 54
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingIsCompletedVO.java
  16. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java
  17. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsBatchPreservePlanController.java
  18. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsCraftController.java
  19. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java
  20. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsSpecialProController.java
  21. 30
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java
  22. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java
  23. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BatchPreservePlanMapper.xml
  24. 48
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsFillingDetailMapper.java
  25. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml
  26. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java
  27. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java
  28. 57
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartVersionMapper.java
  29. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsSpecialProMapper.java
  30. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskBillMapper.java
  31. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/FillingDetailMapper.xml
  32. 116
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
  33. 39
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartVersionMapper.xml
  34. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml
  35. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMeasuringToolMapper.xml
  36. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMoldToolMapper.xml
  37. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessProjectMapper.xml
  38. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml
  39. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SimilarPartsMapper.xml
  40. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml
  41. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskBillMapper.xml
  42. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml
  43. 46
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsFillingDetailService.java
  44. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsBatchPreservePlanService.java
  45. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java
  46. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
  47. 69
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java
  48. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsSpecialProService.java
  49. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskBillService.java
  50. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java
  51. 45
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsFillingDetailServiceImpl.java
  52. 42
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsBatchPreservePlanServiceImpl.java
  53. 37
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java
  54. 33
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
  55. 80
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java
  56. 41
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProModelServiceImpl.java
  57. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsSimilarPartsServiceImpl.java
  58. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsSpecialProServiceImpl.java
  59. 113
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskBillServiceImpl.java
  60. 128
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
  61. 29
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/utils/DateUtils.java
  62. 48
      blade-service/blade-desk/src/main/java/org/springblade/desk/iot/controller/IotWebApiController.java
  63. 51
      blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.java
  64. 48
      blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml
  65. 66
      blade-service/blade-desk/src/main/java/org/springblade/desk/iot/setvice/IEpLineElectricService.java
  66. 85
      blade-service/blade-desk/src/main/java/org/springblade/desk/iot/setvice/impl/EpLineElectricServiceImpl.java
  67. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldPlanServiceImpl.java
  68. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java

@ -12,11 +12,11 @@ public interface LauncherConstant {
/**
* nacos 命名空间
*/
// String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
// 生产环境
// String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
// 测试环境
String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";
// String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";
/**
* nacos 用户名

@ -25,10 +25,13 @@
*/
package org.springblade.desk.dashboard.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsTaskBillEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.util.List;
/**
* 任务单表 数据传输对象实体类
@ -42,4 +45,12 @@ public class DsTaskBillDTO extends DsTaskBillEntity {
@Serial
private static final long serialVersionUID = 1L;
private Long tbId;
private String fillMemo;
private List<BsFillingDetailEntity> fillingDetailList;
private List<Long> deleteIds;
}

@ -0,0 +1,111 @@
/**
* 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.desk.dashboard.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
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;
/**
* 填报明细表 实体类
*
* @author BladeX
* @since 2025-11-12
*/
@Data
@TableName("BS_FILLING_DETAIL")
@EqualsAndHashCode(callSuper = true)
public class BsFillingDetailEntity extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 业务ID
*/
@Schema(description = "业务ID")
@TableField("bus_id")
private Long busId;
/**
* 业务类型
*/
@Schema(description = "业务类型")
@TableField("bus_type")
private String busType;
/**
* 事项
*/
@Schema(description = "事项")
@TableField("matter")
private String matter;
/**
* 过程
*/
@Schema(description = "过程")
@TableField("process")
private String process;
/**
* 备注
*/
@Schema(description = "备注")
@TableField("remarks")
private String remarks;
/**
* 巡检任务
*/
public static String OEM_INSPECTION_TASK = "oem_inspection_task";
/**
* 试验任务
*/
public static String OEM_TEXT_TASK = "oem_text_task";
/**
* 工艺任务
*/
public static String DS_TASK_BILL = "ds_task_bill";
/**
* 试验任务
*/
public static String QC_TASK_REVIEW = "qc_task_review";
/**
* 外协 特殊过程任务
*/
public static String OEM_PROCESS_TASK = "oem_process_task";
}

@ -55,6 +55,14 @@ public class DsBatchPreservePlanEntity extends BaseEntity {
*/
@Schema(description = "槽号")
private String batchNo;
/**
* 作业槽名称
*/
@Schema(description = "作业槽名称")
private String batchNoName;
/**
* 安排日期
*/
@ -162,13 +170,13 @@ public class DsBatchPreservePlanEntity extends BaseEntity {
* 累计类状态 1.进行中 2.已完成
*/
@Schema(description = "累计类状态")
private Integer accumulatedStatus;
private String accumulatedStatus;
/**
* 累计类有效期 1.长期 2.一次性
*/
@Schema(description = "累计类有效期")
private Integer periodOfValidity;
private String periodOfValidity;
/**
* 设备外键
@ -176,4 +184,10 @@ public class DsBatchPreservePlanEntity extends BaseEntity {
@Schema(description = "设备(外键)")
private Long device;
/**
* 设备名称
*/
@Schema(description = "设备名称")
private String deviceName;
}

@ -300,7 +300,7 @@ public class DsPartEntity extends BaseEntity {
private String inkjetPrinting;
/**
* 有效期
* 有效期X
*/
@Schema(description = "有效期")
private String periodOfValidity;

@ -0,0 +1,76 @@
/**
* 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.desk.dashboard.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;
/**
* 零件信息表 实体类
*
* @author BladeX
* @since 2025-11-12
*/
@Data
@TableName("DS_PART_VERSION")
@Schema(description = "DsPartVersion对象")
@EqualsAndHashCode(callSuper = true)
public class DsPartVersionEntity extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 零件ID
*/
@Schema(description = "零件ID")
private Long partId;
/**
* 零件号
*/
@Schema(description = "零件号")
private String partCode;
/**
* 零件版本号
*/
@Schema(description = "零件版本号")
private String partVersion;
/**
* 工艺ID
*/
@Schema(description = "工艺ID")
private Long craftId;
/**
* 备注
*/
@Schema(description = "备注")
private String remarks;
}

@ -69,6 +69,11 @@ public class DsProcessProjectEntity extends BaseEntity {
*/
@Schema(description = "标准")
private String projectStandard;
/**
* 标准名称
*/
@Schema(description = "标准名称")
private String projectStandardName;
/**
* 工时定额
*/

@ -55,11 +55,21 @@ public class DsSimilarPartsEntity extends BaseEntity {
*/
@Schema(description = "零件号")
private Long partOne;
/**
* 零件号
*/
@Schema(description = "零件号编码")
private String partOneCode;
/**
* 相似零件
*/
@Schema(description = "相似零件")
private Long partTwo;
/**
* 零件号
*/
@Schema(description = "相似零件号编码")
private String partTwoCode;
/**
* 备注
*/

@ -120,6 +120,6 @@ public class DsSpecialProEntity extends BaseEntity {
* 设备名称
*/
@Schema(description = "设备名称")
private Long equipmentName;
private String equipmentName;
}

@ -59,12 +59,12 @@ public class DsTaskBillEntity extends BaseEntity {
* 特殊过程项
*/
@Schema(description = "特殊过程项")
private BigDecimal spId;
private Long spId;
/**
* 作业中心外键
*/
@Schema(description = "作业中心(外键)")
private BigDecimal wcId;
private Long wcId;
/**
* 过程项
*/
@ -89,17 +89,17 @@ public class DsTaskBillEntity extends BaseEntity {
* 提醒天数
*/
@Schema(description = "提醒天数")
private Long remDays;
private String remDays;
/**
* 工艺员外键-人员
*/
@Schema(description = "工艺员(外键-人员)")
private BigDecimal proMan;
private Long proMan;
/**
* 处理状态
*/
@Schema(description = "处理状态")
private Long tbStatus;
private Short tbStatus;
/**
* 填报备注
*/
@ -121,6 +121,15 @@ public class DsTaskBillEntity extends BaseEntity {
* 设备名称
*/
@Schema(description = "设备名称")
private Long equipmentName;
private String equipmentName;
/**
* 未处理
*/
public static Short TBSTATUS_NOT = 0;
/**
* 已处理
*/
public static Short TBSTATUS_END = 1;
}

@ -0,0 +1,54 @@
package org.springblade.desk.dashboard.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.util.Date;
/**
* 产线电量推送信息表 实体类
*
* @author BladeX
* @since 2024-01-01
*/
@Data
@TableName("EP_LINE_ELECTRIC")
@Schema(description = "EpLineElectric对象")
@EqualsAndHashCode(callSuper = true)
public class EpLineElectricEntity extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 设备编号
*/
@Schema(description = "设备编号")
private String deviceId;
/**
* 槽位信息
*/
@Schema(description = "槽位信息")
private String workSlot;
/**
* 电量
*/
@Schema(description = "电量值")
private String electric;
/**
* 推送数据原始JSON格式
*/
@Schema(description = "推送数据")
private String pushData;
}

@ -132,7 +132,7 @@ public class PrReworkProcessEntity extends BaseEntity {
@Schema(description = "零件号")
private String partCode;
/**
* 批次号
* 批次号 零件版本号
*/
@Schema(description = "批次号")
private String batchNo;
@ -149,4 +149,23 @@ public class PrReworkProcessEntity extends BaseEntity {
@Schema(description = "工序名称")
private String ppsName;
/**
* 工艺能力名称
*/
@Schema(description = "工艺能力名称")
private String craftName;
/**
* 外协厂商名称
*/
@Schema(description = "外协厂商名称")
private String ocName;
/**
* 加工班组名称
*/
@Schema(description = "加工班组名称")
private String makeTeamName;
}

@ -25,6 +25,7 @@
*/
package org.springblade.desk.dashboard.pojo.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import lombok.Data;
@ -71,13 +72,25 @@ public class DsPartVO extends DsPartEntity {
@Schema(description = "零件IDS")
private List<Long> partIds;
/**
* 零件版本号
*/
@Schema(description = "零件版本号")
private String partVersion;
/**
* 子件信息
*/
@Schema(description = "子件信息")
private List<DsPartEntity> children;
private List<DsPartVersionVO> children;
public String getPartVersion() {
return this.partVersion;
}
public void setPartVersion(String partVersion) {
this.partVersion = partVersion;
}

@ -0,0 +1,52 @@
/**
* 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.desk.dashboard.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import java.io.Serial;
import java.util.List;
/**
* 零件信息表 视图实体类
*
* @author BladeX
* @since 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DsPartVersionVO extends DsPartEntity {
/**
* 零件版本号
*/
@Schema(description = "零件版本号")
private String partVersion;
}

@ -0,0 +1,54 @@
/**
* 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.desk.dashboard.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.dashboard.pojo.entity.DsTaskingEntity;
import java.io.Serial;
import java.util.List;
/**
* 任务分派表 视图实体类
*
* @author BladeX
* @since 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DsTaskingIsCompletedVO extends DsTaskingEntity {
/**
* 标识符
*/
@Schema(description = "标识符")
private boolean completed = true;
}

@ -49,7 +49,7 @@ public class DsTaskingVO extends DsTaskingEntity {
* 子件信息
*/
@Schema(description = "子件信息")
private List<DsPartEntity> children;
private List<DsTaskingIsCompletedVO> children;
/**
* 任务状态

@ -170,6 +170,18 @@ public class DsBatchPreservePlanController extends BladeController {
return R.status(dsBatchPreservePlanService.factoryApproval(dsBatchPreservePlan));
}
/**
* 槽液维护计划表 批量重置
* 提交后更新为进行中状态重新进行累计计算
*/
@PostMapping("/batchReset")
@ApiOperationSupport(order = 5)
@Operation(summary = "批量重置", description = "dsBatchPreservePlan")
public R batchReset(@RequestParam String ids) {
return R.status(dsBatchPreservePlanService.batchReset(Func.toLongList(ids)));
}
/**
* 模拟定时任务
*/

@ -38,6 +38,7 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.desk.dashboard.pojo.vo.DsCraftExpireVO;
import org.springblade.desk.dashboard.pojo.vo.DsPartSynthesisVO;
import org.springblade.desk.dashboard.pojo.vo.DsProcessSynthesisVO;
@ -173,9 +174,9 @@ public class DsCraftController extends BladeController {
@GetMapping("/getVersion")
@ApiOperationSupport(order = 1)
@Operation(summary = "获取版本号", description = "传入零件ID")
public R<List<DsCraftExpireVO>> getVersion(Long partId) {
return R.data(dsCraftService.getVersion(partId));
}
public R<List<DsPartVersionEntity>> getVersion(Long partId) {
return R.data(dsCraftService.getVersion(partId));
}
/**
* 根据零件ID查询工艺

@ -75,9 +75,8 @@ public class DsPartController extends BladeController {
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入dsPart")
public R<DsPartSynthesisVO> detail(@RequestParam Long partId,
@RequestParam String partVersion) {
DsPartSynthesisVO detail = dsPartService.detail(partId,partVersion);
public R<DsPartSynthesisVO> detail(@RequestParam String partCode,@RequestParam String partVersion) {
DsPartSynthesisVO detail = dsPartService.detail(partCode,partVersion);
return R.data(detail);
}

@ -88,18 +88,18 @@ public class DsSpecialProController extends BladeController {
/**
* 特殊过程表 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入dsSpecialPro")
public R<IPage<DsSpecialProVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> dsSpecialPro, Query query) {
IPage<DsSpecialProEntity> pages = dsSpecialProService.page(Condition.getPage(query), Condition.getQueryWrapper(dsSpecialPro, DsSpecialProEntity.class));
return R.data(DsSpecialProWrapper.build().pageVO(pages));
}
// @GetMapping("/list")
// @ApiOperationSupport(order = 2)
// @Operation(summary = "分页", description = "传入dsSpecialPro")
// public R<IPage<DsSpecialProVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> dsSpecialPro, Query query) {
// IPage<DsSpecialProEntity> pages = dsSpecialProService.page(Condition.getPage(query), Condition.getQueryWrapper(dsSpecialPro, DsSpecialProEntity.class));
// return R.data(DsSpecialProWrapper.build().pageVO(pages));
// }
/**
* 特殊过程表 自定义分页
*/
@GetMapping("/page")
@GetMapping("/list")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入dsSpecialPro")
public R<IPage<DsSpecialProVO>> page(DsSpecialProVO dsSpecialPro, Query query) {

@ -38,6 +38,8 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.dto.DsTaskBillDTO;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -158,4 +160,32 @@ public class DsTaskBillController extends BladeController {
ExcelUtil.export(response, "任务单表数据" + DateUtil.time(), "任务单表数据表", list, DsTaskBillExcel.class);
}
/**
* 模拟定时任务
* log.info("创建工艺特殊过程任务定时器运行...");
*/
@PostMapping("/createCraSpecTask")
@ApiOperationSupport(order = 10)
public R submit() {
dsTaskBillService.createCraSpecTask();
return R.status(true);
}
/**
* 任务单表 新增
*/
@PostMapping("/handleDsTaskBill")
@ApiOperationSupport(order = 4)
@Operation(summary = "处理特殊工艺任务")
public R handleDsTaskBill(@Valid @RequestBody DsTaskBillDTO dto) {
Long tbId = dto.getTbId();
String fillMemo = dto.getFillMemo();
List<BsFillingDetailEntity> fillingDetailList = dto.getFillingDetailList();
List<Long> deleteIds = dto.getDeleteIds();
return R.status(dsTaskBillService.handleDsTaskBill(tbId,fillMemo,fillingDetailList,deleteIds));
}
}

@ -230,8 +230,8 @@ public class DsTaskingController extends BladeController {
@GetMapping("/partDetail")
@ApiOperationSupport(order = 1)
@Operation(summary = "零件信息", description = "传入dsCraft")
public R<DsPartSynthesisVO> partDetail(Long taskId) {
DsPartSynthesisVO detail = dsTaskingService.getPartDetail(taskId);
public R<DsPartSynthesisVO> partDetail(@RequestParam Long taskId,@RequestParam String version) {
DsPartSynthesisVO detail = dsTaskingService.getPartDetail(taskId,version);
return R.data(detail);
}
@ -241,9 +241,11 @@ public class DsTaskingController extends BladeController {
@GetMapping("/processAuthorized")
@ApiOperationSupport(order = 1)
@Operation(summary = "工艺编制", description = "传入dsCraft")
public R<DsPartAuthorizedVO> processAuthorized(Long taskId, String rank) {
public R<DsPartAuthorizedVO> processAuthorized(@RequestParam Long taskId,
@RequestParam(required = false) String rank,
@RequestParam String version) {
DsPartAuthorizedVO detail = dsTaskingService.processAuthorized(taskId,rank);
DsPartAuthorizedVO detail = dsTaskingService.processAuthorized(taskId,rank,version);
return R.data(detail);
}
@ -372,10 +374,10 @@ public class DsTaskingController extends BladeController {
@GetMapping("/craftDetail")
@ApiOperationSupport(order = 1)
@Operation(summary = "零件-工艺详情", description = "传入dsPart")
public R<DsPartAuthorizedVO> craftDetail(@RequestParam Long partId,
public R<DsPartAuthorizedVO> craftDetail(@RequestParam String partCode,
@RequestParam String partVersion,
@RequestParam String rank) {
DsPartAuthorizedVO detail = dsTaskingService.craftDetail(partId,partVersion,rank);
DsPartAuthorizedVO detail = dsTaskingService.craftDetail(partCode,partVersion,rank);
return R.data(detail);
}

@ -6,6 +6,7 @@
<resultMap id="dsBatchPreservePlanResultMap" type="org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity">
<result column="ID" property="id"/>
<result column="BATCH_NO" property="batchNo"/>
<result column="BATCH_NO_NAME" property="batchNoName"/>
<result column="ARRANGE_TIME" property="arrangeTime"/>
<result column="PRESERVE_CONTENT" property="preserveContent"/>
<result column="WC_ID" property="wcId"/>
@ -34,6 +35,7 @@
<result column="ACCUMULATED_STATUS" property="accumulatedStatus"/>
<result column="PERIOD_OF_VALIDITY" property="periodOfValidity"/>
<result column="DEVICE" property="device"/>
<result column="DEVICE_NAME" property="deviceName"/>
</resultMap>

@ -0,0 +1,48 @@
/**
* 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.desk.dashboard.mapper;
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.excel.DsTaskingExcel;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsTaskingEntity;
import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO;
import java.util.List;
/**
* 填报明细表 Mapper 接口
*
* @author BladeX
* @since 2025-11-12
*/
public interface BsFillingDetailMapper extends BaseMapper<BsFillingDetailEntity> {
}

@ -52,7 +52,6 @@
<select id="selectCraft" resultType="org.springblade.desk.dashboard.pojo.vo.DsCraftVO">
select * from DS_CRAFT where is_deleted = 0
and PART_ID = #{partId}
and PART_VERSIONS = #{version}
and RANK = #{rank}
</select>
@ -60,7 +59,6 @@
select * from DS_CRAFT where is_deleted = 0
and PART_ID = #{partId}
and RANK = #{rank}
and PART_VERSIONS = #{newestVersion}
</select>
<select id="getReworkCraft" resultType="org.springblade.desk.dashboard.pojo.entity.DsCraftEntity">

@ -67,9 +67,9 @@ public interface DsCraftMapper extends BaseMapper<DsCraftEntity> {
List<DsCraftVO> selectCraftByPartId(@Param("partId")Long partId);
List<DsCraftVO> selectCraft(@Param("partId")Long partId, @Param("version")String version,@Param("rank")String rank);
List<DsCraftVO> selectCraft(@Param("partId")Long partId,@Param("rank")String rank);
DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank, @Param("newestVersion")String newestVersion);
DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank);
DsCraftEntity getReworkCraft(@Param("partId")Long partId,@Param("changeNo") String changeNo);

@ -141,4 +141,8 @@ public interface DsPartMapper extends BaseMapper<DsPartEntity> {
List<DsPartBomVO> selectPartRelations(@Param("partCode")String partCode);
DsPartEntity selectDsPartByPartIdAndPartCode(@Param("id")Long id, @Param("partCode")String partCode);
DsPartEntity selectByPartCodeAndVersion(@Param("partCode") String partCode, @Param("version")String version);
List<DsPartVersionVO> selectDsPartVersionByIds(@Param("ids") List<Long> idList);
}

@ -0,0 +1,57 @@
/**
* 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.desk.dashboard.mapper;
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.excel.DsPartExcel;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.desk.dashboard.pojo.vo.*;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
/**
* 零件信息表 Mapper 接口
*
* @author BladeX
* @since 2025-11-12
*/
public interface DsPartVersionMapper extends BaseMapper<DsPartVersionEntity> {
DsPartVersionEntity selectByPartId(@Param("partId") Long partId);
List<DsPartVersionEntity> selectByPartCode(@Param("partCode") String partCode);
List<DsPartVersionEntity> selectByPartIds(@Param("idList") List<Long> idList);
DsPartVersionEntity selectByPartCodeAndPartVersion(@Param("partCode") String partCode, @Param("partVersion")String partVersion);
}

@ -32,6 +32,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
/**
@ -49,7 +51,7 @@ public interface DsSpecialProMapper extends BaseMapper<DsSpecialProEntity> {
* @param dsSpecialPro 查询参数
* @return List<DsSpecialProVO>
*/
List<DsSpecialProVO> selectDsSpecialProPage(IPage page, DsSpecialProVO dsSpecialPro);
List<DsSpecialProVO> selectDsSpecialProPage(IPage page,@Param("dsSpecialPro") DsSpecialProVO dsSpecialPro);
/**
@ -60,4 +62,5 @@ public interface DsSpecialProMapper extends BaseMapper<DsSpecialProEntity> {
*/
List<DsSpecialProExcel> exportDsSpecialPro(@Param("ew") Wrapper<DsSpecialProEntity> queryWrapper);
List<DsSpecialProEntity> listSpByTime(@Param("nextRunTimeStr") String nextRunTimeStr);
}

@ -32,6 +32,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
/**
@ -60,4 +62,18 @@ public interface DsTaskBillMapper extends BaseMapper<DsTaskBillEntity> {
*/
List<DsTaskBillExcel> exportDsTaskBill(@Param("ew") Wrapper<DsTaskBillEntity> queryWrapper);
/**
* 根据特殊过程项查询任务单返回处理状态
* @param spId 特殊过程项id
* @param tbstatusNot 处理状态
* @return
*/
DsTaskBillEntity getTaskBillBySpId(@Param("spId") Long spId,@Param("tbstatusNot") Short tbstatusNot);
/**
* 根据编码规则返回最大编码的记录
* @param codePattern
* @return
*/
String findMaxByCodePattern(@Param("codePattern") String codePattern);
}

@ -0,0 +1,27 @@
<?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.dashboard.mapper.BsFillingDetailMapper">
<!-- 通用查询映射结果 -->
<resultMap id="bsFillingDetailResultMap" type="org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity">
<result column="ID" property="id"/>
<result column="BUS_ID" property="busId"/>
<result column="BUS_TYPE" property="busType"/>
<result column="MATTER" property="matter"/>
<result column="PROCESS" property="process"/>
<result column="REMARKS" property="remarks"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
<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"/>
</resultMap>
</mapper>

@ -63,6 +63,71 @@
<result column="PF_STATUS" property="pfStatus"/>
</resultMap>
<!-- 通用查询映射结果 -->
<resultMap id="dsPartMap" type="org.springblade.desk.dashboard.pojo.vo.DsPartVO">
<result column="ID" property="id"/>
<result column="PARENT_ID" property="parentId"/>
<result column="PART_CODE" property="partCode"/>
<result column="PART_NAME" property="partName"/>
<result column="HARDNESS" property="hardness"/>
<result column="MATERIAL" property="material"/>
<result column="AREA" property="area"/>
<result column="PLATE" property="plate"/>
<result column="CRAFT_WAY" property="craftWay"/>
<result column="EXPIRATION_PERIOD" property="expirationPeriod"/>
<result column="ADVANCE_REMIND" property="advanceRemind"/>
<result column="NEXT_DUE" property="nextDue"/>
<result column="TECHNICIAN" property="technician"/>
<result column="KEY_INFO" property="keyInfo"/>
<result column="SIGN_MEMO" property="signMemo"/>
<result column="IS_SINTERING" property="isSintering"/>
<result column="PRODUCT_TYPE" property="productType"/>
<result column="IS_ABNORMAL" property="isAbnormal"/>
<result column="CONFIG_CODE" property="configCode"/>
<result column="GOLD_MARK" property="goldMark"/>
<result column="DOC_LINK" property="docLink"/>
<result column="PLATE_CODE" property="plateCode"/>
<result column="PLATE_THICKNESS" property="plateThickness"/>
<result column="PLATE_GOODS_CODE" property="plateGoodsCode"/>
<result column="MARKINGS_TEST" property="markingsTest"/>
<result column="PRODUCT_SERIES" property="productSeries"/>
<result column="IS_CLASS_CAKE" property="isClassCake"/>
<result column="FORMING_THICKNESS" property="formingThickness"/>
<result column="IS_CHILD_PRINT" property="isChildPrint"/>
<result column="POWDER_WEIGHT" property="powderWeight"/>
<result column="IS_PRINT" property="isPrint"/>
<result column="REVIEW_USER" property="reviewUser"/>
<result column="APPROVE_USER" property="approveUser"/>
<result column="TSB_NUM" property="tsbNum"/>
<result column="TSD_NUM" property="tsdNum"/>
<result column="TJT_NUM" property="tjtNum"/>
<result column="LAST_UPDATE_TIME" property="lastUpdateTime"/>
<result column="LAST_UPDATE_USER" property="lastUpdateUser"/>
<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"/>
<result column="SIN_TER_TYPE" property="sinTerType"/>
<result column="QUOTA" property="quota"/>
<result column="PLATE_TWO" property="plateTwo"/>
<result column="PLATE_CODE_TWO" property="plateCodeTwo"/>
<result column="AREA_TWO" property="areaTwo"/>
<result column="PRODUCT_APPLICATION_AREA" property="productApplicationArea"/>
<result column="HOT_DISPOSE" property="hotDispose"/>
<result column="FLUORESCENCE_CHECK" property="fluorescenceCheck"/>
<result column="INKJET_PRINTING" property="inkjetPrinting"/>
<result column="PERIOD_OF_VALIDITY" property="periodOfValidity"/>
<result column="PF_STATUS" property="pfStatus"/>
<result column="PF_STATUS" property="pfStatus"/>
<result column="PART_VERSION" property="partVersion"/>
</resultMap>
<update id="updateNextDueByIds">
UPDATE DS_PART
SET NEXT_DUE = TO_DATE(#{nextDue}, 'YYYY-MM-DD')
@ -73,27 +138,25 @@
</update>
<select id="selectDsPartPage" resultType="org.springblade.desk.dashboard.pojo.vo.DsPartVO">
SELECT p.*, c.CRAFT_STATUS
<select id="selectDsPartPage" resultMap="dsPartMap">
SELECT
p.*,
c.CRAFT_STATUS,
v.PART_VERSION
FROM DS_PART p
LEFT JOIN DS_CRAFT c
ON p.ID = c.PART_ID
WHERE c.CRAFT_STATUS = 2
and p.is_deleted = 0
AND c.PART_VERSIONS = (
SELECT MAX(PART_VERSIONS)
FROM DS_CRAFT
WHERE PART_ID = p.ID
AND CRAFT_STATUS = 2
)
AND NOT EXISTS (
SELECT 1 FROM DS_CRAFT c2
WHERE c2.PART_ID = p.ID
AND c2.CRAFT_STATUS = 2
AND c2.PART_VERSIONS = c.PART_VERSIONS
AND c2.RANK = 2
AND c2.ID != c.ID
LEFT JOIN DS_CRAFT c ON p.ID = c.PART_ID
AND c.IS_DELETED = 0
LEFT JOIN DS_PART_VERSION v ON p.ID = v.PART_ID
AND v.IS_DELETED = 0
WHERE NOT EXISTS (
SELECT 1
FROM DS_PART_RELATION r
WHERE r.CHILD_PART_ID = p.ID
AND r.IS_DELETED = 0
)
AND p.IS_DELETED = 0
AND c.RANK = 2
AND c.CRAFT_STATUS = 2
<if test="dsPart.plate != null and dsPart.plate != ''">
and p.PLATE = #{dsPart.plate}
</if>
@ -297,5 +360,20 @@
select * from DS_PART where is_deleted = 0 and id =#{id} and part_code = #{partCode}
</select>
<select id="selectByPartCodeAndVersion"
resultType="org.springblade.desk.dashboard.pojo.entity.DsPartEntity">
select * from DS_PART p left join DS_PART_VERSION v on p.ID = v.PART_ID
where p.PART_CODE = #{partCode}
and v.PART_VERSION = #{version}
</select>
<select id="selectDsPartVersionByIds" resultType="org.springblade.desk.dashboard.pojo.vo.DsPartVersionVO">
select * from DS_PART p left join DS_PART_VERSION v on p.ID = v.PART_ID
where p.ID in
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
AND p.is_deleted = 0
</select>
</mapper>

@ -0,0 +1,39 @@
<?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.dashboard.mapper.DsPartVersionMapper">
<!-- 通用查询映射结果 -->
<resultMap id="dsPartVersionResultMap" 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>
<select id="selectByPartId" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity">
select * from DS_PART_VERSION where part_id = #{partId}
</select>
<select id="selectByPartCode" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity">
select * from DS_PART_VERSION where part_code = #{partCode}
</select>
<select id="selectByPartIds" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity">
select * from DS_PART_VERSION where part_id in
<foreach collection="idList" item="partId" open="(" close=")" separator=",">
#{partId}
</foreach>
</select>
<select id="selectByPartCodeAndPartVersion"
resultType="org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity">
select * from DS_PART_VERSION where PART_CODE = #{partCode} and PART_VERSION = #{partVersion}
</select>
</mapper>

@ -36,7 +36,7 @@
</select>
<select id="selectDsProcessByCraftId"
resultType="org.springblade.desk.dashboard.pojo.entity.DsProcessEntity">
select * from DS_PROCESS where CRAFT_ID = #{craftId}
select * from DS_PROCESS where IS_DELETED = 0 and CRAFT_ID = #{craftId}
</select>
<select id="selectDsProcessByIds" resultType="org.springblade.desk.dashboard.pojo.entity.DsProcessEntity">

@ -37,7 +37,7 @@
resultType="org.springblade.desk.dashboard.pojo.entity.DsProcessMeasuringToolEntity">
SELECT * FROM DS_PROCESS_MEASURING_TOOL
WHERE process_id IN
WHERE IS_DELETED = 0 and process_id IN
<foreach collection="processIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>

@ -35,7 +35,7 @@
<select id="selectDsProcessMoldToolByProcessIds" resultType="org.springblade.desk.dashboard.pojo.entity.DsProcessMoldToolEntity">
SELECT * FROM DS_PROCESS_MOLD_TOOL
WHERE process_id IN
WHERE IS_DELETED = 0 and process_id IN
<foreach collection="processIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>

@ -9,6 +9,7 @@
<result column="PROJECT_CODE" property="projectCode"/>
<result column="PROJECT_NAME" property="projectName"/>
<result column="PROJECT_STANDARD" property="projectStandard"/>
<result column="PROJECT_STANDARD_NAME" property="projectStandardName"/>
<result column="PRO_HOURS" property="proHours"/>
<result column="PREPARE_HOURS" property="prepareHours"/>
<result column="CREATE_TIME" property="createTime"/>
@ -34,7 +35,7 @@
<select id="selectDsProcessProjectByProcessIds" resultType="org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity">
SELECT * FROM DS_PROCESS_PROJECT
WHERE process_id IN
WHERE IS_DELETED = 0 and process_id IN
<foreach collection="processIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>

@ -30,6 +30,9 @@
<result column="CREATE_DEPT" property="createDept"/>
<result column="TRIAL_NO" property="trialNo"/>
<result column="PPS_NAME" property="ppsName"/>
<result column="CRAFT_NAME" property="craftName"/>
<result column="OC_NAME" property="ocName"/>
<result column="MAKE_TEAM_NAME" property="makeTeamName"/>
</resultMap>

@ -6,7 +6,9 @@
<resultMap id="dsSimilarPartsResultMap" type="org.springblade.desk.dashboard.pojo.entity.DsSimilarPartsEntity">
<result column="ID" property="id"/>
<result column="PART_ONE" property="partOne"/>
<result column="PART_ONE_CODE" property="partOneCode"/>
<result column="PART_TWO" property="partTwo"/>
<result column="PART_TWO_CODE" property="partTwoCode"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>

@ -22,13 +22,19 @@
<result column="OC_ID" property="ocId"/>
<result column="OC_NAME" property="ocName"/>
<result column="EQUIPMENT_CODE" property="equipmentCode"/>
<result column="equipment_id" property="equipmentId"/>
<result column="equipment_name" property="equipmentName"/>
<result column="EQUIPMENT_ID" property="equipmentId"/>
<result column="EQUIPMENT_NAME" property="equipmentName"/>
</resultMap>
<select id="selectDsSpecialProPage" resultMap="dsSpecialProResultMap">
select * from DS_SPECIAL_PRO where is_deleted = 0
<if test="dsSpecialPro.wcId != null">
and WC_ID = #{dsSpecialPro.wcId}
</if>
<if test="dsSpecialPro.equipmentId != null">
and EQUIPMENT_ID = #{dsSpecialPro.equipmentId}
</if>
</select>
@ -36,4 +42,10 @@
SELECT * FROM DS_SPECIAL_PRO ${ew.customSqlSegment}
</select>
<select id="listSpByTime" resultType="org.springblade.desk.dashboard.pojo.entity.DsSpecialProEntity">
SELECT * FROM ds_special_pro a
WHERE IS_DELETED = 0
AND to_char(NVL(a.last_due_time, a.create_time) - a.rem_days, 'yyyy-mm-dd HH24:MI:SS') &lt; #{nextRunTimeStr}
</select>
</mapper>

@ -37,4 +37,12 @@
SELECT * FROM DS_TASK_BILL ${ew.customSqlSegment}
</select>
<select id="getTaskBillBySpId" resultType="org.springblade.desk.dashboard.pojo.entity.DsTaskBillEntity">
SELECT * FROM DS_TASK_BILL a WHERE a.SP_ID = #{spId} and a.TB_STATUS = #{tbstatusNot}
</select>
<select id="findMaxByCodePattern" resultType="java.lang.String">
select a.tb_Code from ds_task_bill a where a.tb_code like #{codePattern} order by a.tb_code desc
</select>
</mapper>

@ -61,8 +61,19 @@
</select>
<!-- SELECT t.*-->
<!-- FROM DS_TASKING t-->
<!-- WHERE t.is_deleted = 0-->
<!-- AND NOT EXISTS (-->
<!-- SELECT 1-->
<!-- FROM DS_PART_RELATION r-->
<!-- WHERE r.is_deleted = 0-->
<!-- AND r.CHILD_PART_CODE = t.PART_CODE)-->
<select id="selectDisposeList" resultType="org.springblade.desk.dashboard.pojo.vo.DsTaskingVO">
select * from DS_TASKING where is_deleted = 0
SELECT t.*
FROM DS_TASKING t
WHERE t.is_deleted = 0
<if test="dsTasking.taskStatus != null ">
and TASK_STATUS = #{dsTasking.taskStatus}
</if>

@ -0,0 +1,46 @@
/**
* 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.desk.dashboard.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.excel.BsCraftAbilityExcel;
import org.springblade.desk.dashboard.pojo.entity.BsCraftAbilityEntity;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.vo.BsCraftAbilityVO;
import java.util.List;
/**
* 填报明细表 服务类
*
* @author BladeX
* @since 2025-11-12
*/
public interface IBsFillingDetailService extends BaseService<BsFillingDetailEntity> {
}

@ -106,4 +106,11 @@ public interface IDsBatchPreservePlanService extends BaseService<DsBatchPreserve
* @return void
*/
void createAccumulateClassTask();
/**
* 批量重置
* @param ids
* @return
*/
boolean batchReset(List<Long> ids);
}

@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.excel.DsCraftExcel;
import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.desk.dashboard.pojo.vo.DsCraftExpireVO;
import org.springblade.desk.dashboard.pojo.vo.DsCraftVO;
import org.springblade.desk.dashboard.pojo.vo.DsProcessSynthesisVO;
@ -83,7 +84,7 @@ public interface IDsCraftService extends BaseService<DsCraftEntity> {
* @return
*/
List<DsCraftExpireVO> getVersion(Long partId);
List<DsPartVersionEntity> getVersion(Long partId);
/**
* 根据零件ID查询工艺列表
@ -101,13 +102,12 @@ public interface IDsCraftService extends BaseService<DsCraftEntity> {
List<DsCraftVO> selectDsCraftByPartId(Long partId);
/**
* 根据零件号 版本号 工艺级别查询工艺信息
* 根据零件号 工艺级别查询工艺信息
* @param partId
* @param version
* @param rank
* @return
*/
List<DsCraftVO> selectDsCraftByPartId(Long partId, String version, String rank);
List<DsCraftVO> selectDsCraftByPartId(Long partId, String rank);
/**
* 保存修改工艺
@ -127,10 +127,9 @@ public interface IDsCraftService extends BaseService<DsCraftEntity> {
* 获取零件工艺
* @param partId 零件号
* @param rank 工艺等级
* @param newestVersion 最新版本号
* @return
*/
DsCraftEntity getPartCraft(Long partId, String rank, String newestVersion);
DsCraftEntity getPartCraft(Long partId, String rank);
/**
* 获取返工工艺

@ -67,12 +67,12 @@ public interface IDsPartService extends BaseService<DsPartEntity> {
List<DsPartEntity> selectDsPartByParentID(Long id);
/**
* 根据零件号查询
*
* 根据零件号和版本号查询 版本号为空默认查询最新版本
* @param partCode
* @param version
* @return
*/
DsPartEntity selectDsPartByPatCode(String partCode);
DsPartEntity selectDsPartByPatCodeAndVersion(String partCode,String version);
/**
* 根据零件号和零件类型查询子件列表
@ -185,11 +185,11 @@ public interface IDsPartService extends BaseService<DsPartEntity> {
/**
* 零件详情
* @param partId
* @param partCode
* @param partVersion
* @return
*/
DsPartSynthesisVO detail(Long partId, String partVersion);
DsPartSynthesisVO detail(String partCode, String partVersion);
/**
@ -216,6 +216,7 @@ public interface IDsPartService extends BaseService<DsPartEntity> {
* @return
*/
String findNameByRoamNo(String partCode, String roamNo);
// List<DsPartTreeVO> getSimpleTree(String partCode);
}

@ -0,0 +1,69 @@
/**
* 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.desk.dashboard.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 IDsPartVersionService extends BaseService<DsPartVersionEntity> {
/**
* 根据零件ID获取版本号
* @param partId
* @return
*/
DsPartVersionEntity selectByPartId(Long partId);
/**
* 根据零件编码查询版本号
* @param partCode
* @return
*/
List<DsPartVersionEntity> selectByPartCode(String partCode);
/**
* 根据零件Ids查询版本号
* @param idList
* @return
*/
List<DsPartVersionEntity> selectByPartIds(List<Long> idList);
/**
* 根据零件号 版本号查询
* @param partCode
* @param partVersion
* @return
*/
DsPartVersionEntity selectByPartCodeAndPartVersion(String partCode, String partVersion);
}

@ -64,4 +64,11 @@ public interface IDsSpecialProService extends BaseService<DsSpecialProEntity> {
* @return
*/
boolean importExcelSpecialPro(List<DsSpecialProExcel> list);
/**
* 下次定时器运行时间
* @param nextRunTimeStr
* @return
*/
List<DsSpecialProEntity> listSpByTime(String nextRunTimeStr);
}

@ -26,6 +26,7 @@
package org.springblade.desk.dashboard.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsTaskBillEntity;
import org.springblade.desk.dashboard.pojo.vo.DsTaskBillVO;
import org.springblade.desk.dashboard.excel.DsTaskBillExcel;
@ -58,4 +59,18 @@ public interface IDsTaskBillService extends BaseService<DsTaskBillEntity> {
*/
List<DsTaskBillExcel> exportDsTaskBill(Wrapper<DsTaskBillEntity> queryWrapper);
/**
*根据提醒天数()生成工艺任务单
*/
void createCraSpecTask();
/**
*处理特殊工艺任务
* @param tbId
* @param fillMemo
* @param fillingDetailList
* @param deleteIds
* @return
*/
boolean handleDsTaskBill(Long tbId, String fillMemo, List<BsFillingDetailEntity> fillingDetailList, List<Long> deleteIds);
}

@ -138,16 +138,18 @@ public interface IDsTaskingService extends BaseService<DsTaskingEntity> {
/**
* 零件 子件 详情
* @param taskId 零件工艺信息ID
* @param version 版本号
* @return 零件详细信息
*/
DsPartSynthesisVO getPartDetail(Long taskId);
DsPartSynthesisVO getPartDetail(Long taskId, String version);
/**
* 工艺编制
* @param taskId
* @return
* @param taskId 任务ID
* @param rank 工艺等级
* @return version 版本号
*/
DsPartAuthorizedVO processAuthorized(Long taskId, String rank);
DsPartAuthorizedVO processAuthorized(Long taskId, String rank,String version);
/**
@ -206,12 +208,12 @@ public interface IDsTaskingService extends BaseService<DsTaskingEntity> {
/**
* 零件详情 工艺
* @param partId
* @param partCode
* @param partVersion
* @param rank
* @return
*/
DsPartAuthorizedVO craftDetail(Long partId, String partVersion, String rank);
DsPartAuthorizedVO craftDetail(String partCode, String partVersion, String rank);
/**
* 零件保存

@ -0,0 +1,45 @@
/**
* 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.desk.dashboard.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.mapper.BsFillingDetailMapper;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.service.IBsFillingDetailService;
import org.springframework.stereotype.Service;
/**
* 填报明细表 服务实现类
*
* @author BladeX
* @since 2025-11-12
*/
@Service
public class BsFillingDetailServiceImpl extends BaseServiceImpl<BsFillingDetailMapper, BsFillingDetailEntity> implements IBsFillingDetailService {
}

@ -25,6 +25,7 @@
*/
package org.springblade.desk.dashboard.service.impl;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.dashboard.constant.BatchConstant;
import org.springblade.desk.dashboard.pojo.dto.DsBatchPreservePlanDTO;
@ -38,6 +39,9 @@ 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.utils.DateUtils;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.iot.setvice.IEpLineElectricService;
import org.springblade.system.feign.IUserClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@ -46,6 +50,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*;
@ -71,6 +76,12 @@ public class DsBatchPreservePlanServiceImpl extends BaseServiceImpl<DsBatchPrese
@Lazy
IDsBatchPreserveTaskService batchPreserveTaskService;
@Autowired
IEquipmentService equipmentService;
@Autowired
IEpLineElectricService epLineElectricService;
@Override
public IPage<DsBatchPreservePlanVO> selectDsBatchPreservePlanPage(IPage<DsBatchPreservePlanVO> page, DsBatchPreservePlanVO dsBatchPreservePlan) {
@ -196,6 +207,26 @@ public class DsBatchPreservePlanServiceImpl extends BaseServiceImpl<DsBatchPrese
}
}
@Override
public boolean batchReset(List<Long> ids) {
if(CollectionUtils.isEmpty(ids)){
throw new ServiceException("数据不能为空");
}
for (Long batchPreservePlanId : ids) {
DsBatchPreservePlanEntity batchPreservePlanEntity = batchPreservePlanMapper.selectById(batchPreservePlanId);
if(null == batchPreservePlanEntity){
throw new ServiceException("槽液维护数据不存在: "+batchPreservePlanId);
}
batchPreservePlanEntity.setAccumulatedStatus("1");
int update = batchPreservePlanMapper.updateById(batchPreservePlanEntity);
if(update <= 0){
throw new ServiceException("批量维护失败: "+batchPreservePlanId);
}
}
return true;
}
/**
* 累计类 添加任务 计算逻辑
* @param batchPreservePlan
@ -205,6 +236,17 @@ public class DsBatchPreservePlanServiceImpl extends BaseServiceImpl<DsBatchPrese
//电量差 (1)电量差:当前值为1天的电量(自动取数)≥累计触发值,触发任务需添加量
if(BatchConstant.ELECTRICITY_DIFFERENCE.equals(batchPreservePlan.getRuleType())){
Date yesterdayStartDate = DateUtils.getYesterdayStartDate();
Date yesterdayEndDate = DateUtils.getYesterdayEndDate();
System.out.println(yesterdayStartDate);
System.out.println(yesterdayEndDate);
//设备编码
String deviceCode = equipmentService.getById(batchPreservePlan.getDevice()).getDeviceCode();
//槽号
String batchNo = batchPreservePlan.getBatchNo();
//查询
DsBatchPreservePlanEntity dsBatchPreservePlanEntity = epLineElectricService.getDataBySlot(batchNo,deviceCode,yesterdayStartDate,yesterdayEndDate);
//累计电量类 (2)累计电量:(当前日期的用电量-累计初始日期对应的用电量)≥累计触发值,触发任务需添加量
}else if(BatchConstant.CUMULATIVE_ELECTRICITY.equals(batchPreservePlan.getRuleType())){

@ -27,8 +27,10 @@ package org.springblade.desk.dashboard.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.commons.lang3.ObjectUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.excel.DsCraftExcel;
import org.springblade.desk.dashboard.mapper.DsCraftMapper;
@ -75,6 +77,9 @@ public class DsCraftServiceImpl extends BaseServiceImpl<DsCraftMapper, DsCraftEn
@Autowired
IDsProcessMoldToolService processMoldToolService;
@Autowired
IDsPartVersionService partVersionService;
@Override
public IPage<DsCraftVO> selectDsCraftPage(IPage<DsCraftVO> page, DsCraftVO dsCraft) {
@ -127,8 +132,19 @@ public class DsCraftServiceImpl extends BaseServiceImpl<DsCraftMapper, DsCraftEn
}
@Override
public List<DsCraftExpireVO> getVersion(Long partId) {
return craftMapper.selectDsCraftByPartId(partId);
public List<DsPartVersionEntity> getVersion(Long partId) {
//根据零件ID查询零件编码
DsPartEntity part = partService.getById(partId);
if(null == part){
throw new ServiceException("零件ID不存在 "+partId);
}
//根据编码 查询版本号
List<DsPartVersionEntity> partVersionList = partVersionService.selectByPartCode(part.getPartCode());
if(CollectionUtils.isEmpty(partVersionList)){
throw new IllegalArgumentException(partId+" 没有版本号信息");
}
return partVersionList;
}
@Override
@ -144,8 +160,8 @@ public class DsCraftServiceImpl extends BaseServiceImpl<DsCraftMapper, DsCraftEn
}
@Override
public List<DsCraftVO> selectDsCraftByPartId(Long partId, String version, String rank) {
return craftMapper.selectCraft(partId,version,rank);
public List<DsCraftVO> selectDsCraftByPartId(Long partId, String rank) {
return craftMapper.selectCraft(partId,rank);
}
@Override
@ -169,9 +185,12 @@ public class DsCraftServiceImpl extends BaseServiceImpl<DsCraftMapper, DsCraftEn
@Override
public String getNewestVersion(Long partId) {
List<DsCraftVO> craftVOList = craftMapper.selectCraftByPartId(partId);
Optional<String> latestVersion = craftVOList.stream()
.map(DsCraftVO::getPartVersions)
DsPartEntity part = partService.getById(partId);
//获取版本号
List<DsPartVersionEntity> partVersionList = partVersionService.selectByPartCode(part.getPartCode());
Optional<String> latestVersion = partVersionList.stream()
.map(DsPartVersionEntity::getPartVersion)
.max(Comparator.naturalOrder());
if (latestVersion.isPresent()) {
// 输出: 最新版本号
@ -182,8 +201,8 @@ public class DsCraftServiceImpl extends BaseServiceImpl<DsCraftMapper, DsCraftEn
}
@Override
public DsCraftEntity getPartCraft(Long partId, String rank, String newestVersion) {
return craftMapper.getPartCraft(partId,rank,newestVersion);
public DsCraftEntity getPartCraft(Long partId, String rank) {
return craftMapper.getPartCraft(partId,rank);
}
@Override

@ -93,6 +93,9 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
@Autowired
IUserClient userClient;
@Autowired
IDsPartVersionService partVersionService;
@Override
public IPage<DsPartVO> selectDsPartPage(IPage<DsPartVO> page, DsPartVO dsPart) {
@ -128,7 +131,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
//获取所有子件ID
List<Long> idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(idList)){
List<DsPartEntity> dsPartEntityList = dsPartMapper.selectDsPartByIds(idList);
List<DsPartVersionVO> dsPartEntityList = dsPartMapper.selectDsPartVersionByIds(idList);
dsPartVO.setChildren(dsPartEntityList);
}
}
@ -153,8 +156,24 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
}
@Override
public DsPartEntity selectDsPartByPatCode(String partCode) {
return dsPartMapper.selectDsPartByPatCode(partCode);
public DsPartEntity selectDsPartByPatCodeAndVersion(String partCode,String version) {
//查询最新版本号 对应的零件
if(StringUtils.isEmpty(version)){
List<DsPartVersionEntity> partVersionEntityList = partVersionService.selectByPartCode(partCode);
Optional<DsPartVersionEntity> maxEntity = partVersionEntityList.stream()
.filter(entity -> entity.getPartVersion() != null)
.max(Comparator.comparing(DsPartVersionEntity::getPartVersion));
if (maxEntity.isPresent()) {
DsPartVersionEntity maxPartVersionEntity = maxEntity.get();
DsPartEntity partEntity = dsPartMapper.selectById(maxPartVersionEntity.getPartId());
return partEntity;
}
}
DsPartEntity part = dsPartMapper.selectByPartCodeAndVersion(partCode,version);
return part;
}
@Override
@ -373,9 +392,11 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
}
@Override
public DsPartSynthesisVO detail(Long partId, String partVersion) {
public DsPartSynthesisVO detail(String partCode, String partVersion) {
DsPartVersionEntity partVersionEntity = partVersionService.selectByPartCodeAndPartVersion(partCode,partVersion);
//零件信息
DsPartEntity partEntity = dsPartMapper.selectById(partId);
DsPartEntity partEntity = dsPartMapper.selectById(partVersionEntity.getPartId());
DsPartSynthesisVO dsPartSynthesisVO = new DsPartSynthesisVO();
//查询子件信息
if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){
@ -389,6 +410,8 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
}
dsPartSynthesisVO.setDsPartEntity(partEntity);
dsPartSynthesisVO.setPartVersion(partVersionEntity.getPartVersion());
return dsPartSynthesisVO;
}

@ -0,0 +1,80 @@
/**
* 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.desk.dashboard.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.excel.DsSimilarPartsExcel;
import org.springblade.desk.dashboard.mapper.DsPartVersionMapper;
import org.springblade.desk.dashboard.mapper.DsSimilarPartsMapper;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.desk.dashboard.pojo.entity.DsSimilarPartsEntity;
import org.springblade.desk.dashboard.pojo.vo.DsSimilarPartsVO;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.dashboard.service.IDsPartVersionService;
import org.springblade.desk.dashboard.service.IDsSimilarPartsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
* 相似零件表 服务实现类
*
* @author BladeX
* @since 2025-11-21
*/
@Service
public class DsPartsVersionServiceImpl extends BaseServiceImpl<DsPartVersionMapper, DsPartVersionEntity> implements IDsPartVersionService {
@Autowired
DsPartVersionMapper partVersionMapper;
@Override
public DsPartVersionEntity selectByPartId(Long partId) {
return partVersionMapper.selectByPartId(partId);
}
@Override
public List<DsPartVersionEntity> selectByPartCode(String partCode) {
return partVersionMapper.selectByPartCode(partCode);
}
@Override
public List<DsPartVersionEntity> selectByPartIds(List<Long> idList) {
return partVersionMapper.selectByPartIds(idList);
}
@Override
public DsPartVersionEntity selectByPartCodeAndPartVersion(String partCode, String partVersion) {
return partVersionMapper.selectByPartCodeAndPartVersion(partCode,partVersion);
}
}

@ -75,8 +75,10 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP
BsPlatingTypeEntity platingTypeEntity = platingTypeService.getById(dsProModelVO.getPlatingType());
dsProModelVO.setPlatingTypeStr(platingTypeEntity.getPlateType());
}
List<DsProDetailEntity> dsProDetailEntityList = proDetailService.selectDsProDetailByModelId(dsProModelVO.getId());
dsProModelVO.setProcessNum((long)dsProDetailEntityList.size());
}
//baseMapper.selectDsProModelPage(page, dsProModel)
return page.setRecords(DsProModelVO);
}
@ -103,20 +105,35 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP
entity.setProcessNum((long) dsProModelDetailListVO.getTableData().size());
//新增模版
boolean save = save(entity);
if(!save){
throw new ServiceException("工艺模版新增失败");
if(null != entity.getId()){
boolean updateProModel = updateById(entity);
if(!updateProModel){
throw new ServiceException("工艺模版修改失败");
}
}else {
//新增模版
boolean save = save(entity);
if(!save){
throw new ServiceException("工艺模版新增失败");
}
}
Long modelId = entity.getId();
List<DsProDetailEntity> prodetailList = dsProModelDetailListVO.getTableData();
for (DsProDetailEntity tableDatum : prodetailList) {
if(null == tableDatum.getId()){
tableDatum.setModelId(modelId);
boolean saveBatch = proDetailService.save(tableDatum);
if(!saveBatch){
throw new ServiceException("工艺模版明细新增失败");
}
}else {
boolean update = proDetailService.updateById(tableDatum);
if(!update){
throw new ServiceException("工艺模版明细修改失败");
}
}
List<DsProDetailEntity> tableData = dsProModelDetailListVO.getTableData();
for (DsProDetailEntity tableDatum : tableData) {
tableDatum.setModelId(modelId);
}
boolean saveBatch = proDetailService.saveBatch(tableData);
if(!saveBatch){
throw new ServiceException("工艺模版明细新增失败");
}
return true;

@ -64,14 +64,6 @@ public class DsSimilarPartsServiceImpl extends BaseServiceImpl<DsSimilarPartsMap
@Override
public IPage<DsSimilarPartsVO> selectDsSimilarPartsPage(IPage<DsSimilarPartsVO> page, DsSimilarPartsVO dsSimilarParts) {
List<DsSimilarPartsVO> dsSimilarPartsList = baseMapper.selectDsSimilarPartsPage(page, dsSimilarParts);
for (DsSimilarPartsVO dsSimilarPartsVO : dsSimilarPartsList) {
DsPartEntity partOne = partService.getById(dsSimilarPartsVO.getPartOne());
DsPartEntity partTwo = partService.getById(dsSimilarPartsVO.getPartTwo());
if(null != partOne && null != partTwo){
dsSimilarPartsVO.setPartOneCode(partOne.getPartCode());
dsSimilarPartsVO.setPartTwoCode(partTwo.getPartCode());
}
}
return page.setRecords(dsSimilarPartsList);
}
@ -93,8 +85,8 @@ public class DsSimilarPartsServiceImpl extends BaseServiceImpl<DsSimilarPartsMap
List<DsSimilarPartsEntity> similarPartsList = new ArrayList<>();
for (DsSimilarPartsVO dsSimilarPartsVO : list) {
DsPartEntity partOne = partService.selectDsPartByPatCode(dsSimilarPartsVO.getPartOneCode());
DsPartEntity partTwo = partService.selectDsPartByPatCode(dsSimilarPartsVO.getPartTwoCode());
DsPartEntity partOne = partService.selectDsPartByPatCodeAndVersion(dsSimilarPartsVO.getPartOneCode(),null);
DsPartEntity partTwo = partService.selectDsPartByPatCodeAndVersion(dsSimilarPartsVO.getPartTwoCode(),null);
if(null != partOne && null != partTwo){
DsSimilarPartsEntity dsSimilarPartsEntity = new DsSimilarPartsEntity();
dsSimilarPartsEntity.setPartOne(partOne.getId());
@ -113,7 +105,7 @@ public class DsSimilarPartsServiceImpl extends BaseServiceImpl<DsSimilarPartsMap
public boolean saveSimilarParts(DsSimilarPartsEntity dsSimilarParts) {
DsSimilarPartsEntity similarParts = similarPartsMapper.selectByPartOneAndPartTwo(dsSimilarParts);
if(null != similarParts ){
throw new ServiceException("零件号: "+similarParts.getPartOne()+"与 "+similarParts.getPartTwo()+"存在");
throw new ServiceException("零件号: "+similarParts.getPartOne()+"与 "+similarParts.getPartTwo()+"存在");
}
int insert = similarPartsMapper.insert(dsSimilarParts);
if(insert <= 0){

@ -63,6 +63,9 @@ public class DsSpecialProServiceImpl extends BaseServiceImpl<DsSpecialProMapper,
@Autowired
IUserClient userClient;
@Autowired
DsSpecialProMapper specialProMapper;
@Override
public IPage<DsSpecialProVO> selectDsSpecialProPage(IPage<DsSpecialProVO> page, DsSpecialProVO dsSpecialPro) {
return page.setRecords(baseMapper.selectDsSpecialProPage(page, dsSpecialPro));
@ -116,4 +119,9 @@ public class DsSpecialProServiceImpl extends BaseServiceImpl<DsSpecialProMapper,
return true;
}
@Override
public List<DsSpecialProEntity> listSpByTime(String nextRunTimeStr) {
return specialProMapper.listSpByTime(nextRunTimeStr);
}
}

@ -24,16 +24,27 @@
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.dashboard.service.impl;
import com.alibaba.druid.sql.visitor.functions.Function;
import com.google.common.base.Strings;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsSpecialProEntity;
import org.springblade.desk.dashboard.pojo.entity.DsTaskBillEntity;
import org.springblade.desk.dashboard.pojo.vo.DsTaskBillVO;
import org.springblade.desk.dashboard.excel.DsTaskBillExcel;
import org.springblade.desk.dashboard.mapper.DsTaskBillMapper;
import org.springblade.desk.dashboard.service.IBsFillingDetailService;
import org.springblade.desk.dashboard.service.IDsSpecialProService;
import org.springblade.desk.dashboard.service.IDsTaskBillService;
import org.springframework.beans.factory.annotation.Autowired;
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 org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
/**
@ -45,6 +56,15 @@ import java.util.List;
@Service
public class DsTaskBillServiceImpl extends BaseServiceImpl<DsTaskBillMapper, DsTaskBillEntity> implements IDsTaskBillService {
@Autowired
IDsSpecialProService specialProService;
@Autowired
DsTaskBillMapper taskBillMapper;
@Autowired
IBsFillingDetailService fillingDetailService;
@Override
public IPage<DsTaskBillVO> selectDsTaskBillPage(IPage<DsTaskBillVO> page, DsTaskBillVO dsTaskBill) {
return page.setRecords(baseMapper.selectDsTaskBillPage(page, dsTaskBill));
@ -60,4 +80,95 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl<DsTaskBillMapper, DsT
return dsTaskBillList;
}
@Override
public void createCraSpecTask() {
//定时器运行时间
Date runTime = new Date();
//定时器下次运行时间(+1 天)
//例 今天 runTime 2026/01/25 nextRunTimeStr 2026/01/26
String nextRunTimeStr = LocalDateTime.now().plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//查询特殊过程项
List<DsSpecialProEntity> spList = specialProService.listSpByTime(nextRunTimeStr);
if(CollectionUtils.isEmpty(spList)){
return;
}
DsTaskBillEntity dsTaskBill;
int next = 1;
for (DsSpecialProEntity dsSpecialPro : spList) {
//如果有未处理任务
dsTaskBill = taskBillMapper.getTaskBillBySpId(dsSpecialPro.getId(), DsTaskBillEntity.TBSTATUS_NOT);
if (dsTaskBill != null) {
continue;
}
dsTaskBill = new DsTaskBillEntity();
dsTaskBill.setTbCode(this.nextCode(next));
dsTaskBill.setSpId(dsSpecialPro.getId());
dsTaskBill.setWcId(dsSpecialPro.getWcId());
dsTaskBill.setProItem(dsSpecialPro.getProItem());
dsTaskBill.setConfirmCondition(dsSpecialPro.getCondition());
dsTaskBill.setCycle(dsSpecialPro.getCycle());
dsTaskBill.setLastTime(dsSpecialPro.getLastDueTime());
dsTaskBill.setRemDays(dsSpecialPro.getCondition());
dsTaskBill.setProMan(dsSpecialPro.getProMan());
dsTaskBill.setRemarks(dsSpecialPro.getRemarks());
dsTaskBill.setTbStatus(DsTaskBillEntity.TBSTATUS_NOT);
dsTaskBill.setEquipmentId(dsSpecialPro.getEquipmentId());
dsTaskBill.setEquipmentName(dsSpecialPro.getEquipmentName());
dsTaskBill.setCreateTime(new Date());
int insert = taskBillMapper.insert(dsTaskBill);
next++;
//todo 发消息到工艺员
// pfMessageService.sendMessage("产线:" + dsSpecialPro.getBsWorkCenter().getWcName() + ",已生成新的工艺任务,请及时处理!",
// dsSpecialPro.getProMan().getUserId(), PfMessageType.MTCODE_0200, null, Boolean.FALSE, null);
}
}
@Override
public boolean handleDsTaskBill(Long tbId, String fillMemo, List<BsFillingDetailEntity> fillingDetailList, List<Long> deleteIds) {
DsTaskBillEntity dsTaskBill = taskBillMapper.selectById(tbId);
dsTaskBill.setFillMemo(fillMemo);
dsTaskBill.setTbStatus(DsTaskBillEntity.TBSTATUS_END);
int update = taskBillMapper.updateById(dsTaskBill);
//存入上次处理时间
DsSpecialProEntity dsSpecialPro = specialProService.getById(dsTaskBill.getSpId());
dsSpecialPro.setLastDueTime(new Date());
boolean update1 = specialProService.updateById(dsSpecialPro);
if (fillingDetailList.size() > 0) {
for (BsFillingDetailEntity fillingDetail : fillingDetailList) {
fillingDetail.setBusId(tbId);
fillingDetail.setBusType(BsFillingDetailEntity.DS_TASK_BILL);
fillingDetailService.save(fillingDetail);
}
}
if (deleteIds.size() > 0) {
fillingDetailService.deleteLogic(deleteIds);
}
return true;
}
private String nextCode(int next) {
// 自增总长度
int len = 3;
// 自增值
int num = 0;
// 编码模式
String codePattern = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
// 当前模式下最大编码
String maxCode = taskBillMapper.findMaxByCodePattern(codePattern);
if (maxCode != null) {
num = Integer.parseInt(maxCode.substring(codePattern.length()));
}
num += next;
// 下个编码
String code = codePattern + String.format("%0" + len + "d", num);
String code1 = codePattern + Strings.padStart(String.valueOf(num), len, '0');
System.out.println(code);
System.out.println(code1);
return code;
}
}

@ -40,6 +40,7 @@ import org.springblade.desk.dashboard.mapper.DsTaskingMapper;
import org.springblade.desk.dashboard.service.*;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -106,6 +107,9 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
@Autowired
IBsProcessSetService processSetService;
@Autowired
IDsPartVersionService partVersionService;
@Override
@ -150,7 +154,8 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(taskId);
if(null != dsTaskingEntity){
String partCode = dsTaskingEntity.getPartCode();
DsPartEntity partEntity = partService.selectDsPartByPatCode(partCode);
String version = dsTaskingEntity.getVersion();
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(partCode,version);
if(null == partEntity){
throw new ServiceException("零件号不存在");
}
@ -195,7 +200,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(taskId);
//返工任务
if(dsTaskingEntity.getTaskType().equals(TaskingConstant.REWORK_PLAN_EDIT)){
DsPartEntity partEntity = partService.selectDsPartByPatCode(dsTaskingEntity.getPartCode());
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(dsTaskingEntity.getPartCode(),dsTaskingEntity.getVersion());
//返工单号 返工工艺
List<PrReworkProcessEntity> reworkProcessEntityList = reworkProcessService.selectPrReworkProcess(dsTaskingEntity.getReworkOrder(), partEntity.getPartCode(), dsTaskingEntity.getVersion());
if(CollectionUtils.isEmpty(reworkProcessEntityList)){
@ -215,15 +220,14 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
}
//1.判断零件和子件二级工艺/指定工艺级别下是否有工序
DsPartEntity partEntity = partService.selectDsPartByPatCode(dsTaskingEntity.getPartCode());
String rank = dsTaskingEntity.getRank();
//获取最新工艺版本号
String newestVersion = craftService.getNewestVersion(partEntity.getId());
//1.判断零件和子件二级工艺/指定工艺级别下是否有工序
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(dsTaskingEntity.getPartCode(),dsTaskingEntity.getVersion());
//查询零件和子件是否编制工序
//零件工艺
DsCraftEntity craft = craftService.getPartCraft(partEntity.getId(),rank,newestVersion);
DsCraftEntity craft = craftService.getPartCraft(partEntity.getId(),rank);
if(null == craft){
throw new ServiceException("零件工艺缺失");
}
@ -255,8 +259,8 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
throw new ServiceException("【零件号】工艺超期");
}
}
String zNewestVersion = craftService.getNewestVersion(zPartEntity.getId());
DsCraftEntity zCraft = craftService.getPartCraft(zPartEntity.getId(),rank,zNewestVersion);
DsCraftEntity zCraft = craftService.getPartCraft(zPartEntity.getId(),rank);
if(null == zCraft){
throw new ServiceException("子件工艺缺失");
}
@ -360,14 +364,43 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
if(!CollectionUtils.isEmpty(dsTaskingList)){
for (DsTaskingVO dsTaskingVO : dsTaskingList) {
String partCode = dsTaskingVO.getPartCode();
DsPartEntity partEntity = partService.selectDsPartByPatCode(partCode);
//查询子件信息
List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId());
//获取所有子件ID
List<Long> idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(idList)){
List<DsPartEntity> dsPartEntityList = partService.selectDsPartByIds(idList);
dsTaskingVO.setChildren(dsPartEntityList);
String version = dsTaskingVO.getVersion();
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(partCode,version);
if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){
//查询子件信息
List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId());
//获取所有子件ID
List<Long> idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList());
if(CollectionUtils.isEmpty(idList)){
continue;
}
//获取版本号 根据子件ID
List<DsPartVersionEntity> partVersionList = partVersionService.selectByPartIds(idList);
List<DsTaskingIsCompletedVO> list = new ArrayList<>();
for (DsPartVersionEntity dsPartVersionEntity : partVersionList) {
//根据零件编码 和 版本号查询数据
List<Integer> taskStatusList = new ArrayList<>(Arrays.asList(
TaskingConstant.TASK_STATUS_WAIT,
TaskingConstant.TASK_STATUS_ALREADY,
TaskingConstant.TASK_STATUS_UNDERWAY
));
List<DsTaskingEntity> dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList);
List<DsTaskingIsCompletedVO> collect = dsTaskingEntityList.stream()
.filter(entity -> entity.getCraftMan() != null)
.map(entity -> {
DsTaskingIsCompletedVO vo = new DsTaskingIsCompletedVO();
BeanUtils.copyProperties(entity, vo);
return vo;
})
.collect(Collectors.toList());
list.addAll(collect);
}
if(!CollectionUtils.isEmpty(list)){
dsTaskingVO.setChildren(list);
}
}
}
}
@ -380,7 +413,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
if(null == dsTasking.getPartCode()){
throw new ServiceException("零件号不存在");
}
DsPartEntity partEntity = partService.selectDsPartByPatCode(dsTasking.getPartCode());
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(dsTasking.getPartCode(),dsTasking.getVersion());
List<DsPartEntity> dsPartEntityList = null;
if(null != partEntity.getId()){
dsPartEntityList = partService.selectDsPartByParentID(partEntity.getId());
@ -398,7 +431,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
String partCode = dsTasking.getPartCode();
String version = dsTasking.getVersion();
DsPartEntity partEntity = partService.selectDsPartByPatCode(partCode);
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(partCode,version);
if(null == partEntity){
throw new ServiceException("零件号有误");
}
@ -424,10 +457,17 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
@Override
public boolean taskReception(Long taskId) {
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(taskId);
//判断当前接收人是否是工艺员
if(!AuthUtil.getUser().getUserName().equals(dsTaskingEntity.getCraftMan())){
throw new ServiceException("接收人错误,接收人应为: "+dsTaskingEntity.getCraftMan());
}
if(TaskingConstant.TASK_STATUS_ALREADY.equals(dsTaskingEntity.getTaskStatus())){
dsTaskingEntity.setTaskStatus(TaskingConstant.TASK_STATUS_UNDERWAY);
dsTaskingEntity.setReceptionTime(new Date());
taskingMapper.updateById(dsTaskingEntity);
int taskUpdate = taskingMapper.updateById(dsTaskingEntity);
if(taskUpdate <= 0){
throw new ServiceException("任务接收失败");
}
return true;
}
return false;
@ -452,14 +492,16 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
@Override
public DsPartSynthesisVO getPartDetail(Long taskId) {
public DsPartSynthesisVO getPartDetail(Long taskId, String version) {
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(taskId);
if(StringUtils.isEmpty(dsTaskingEntity.getPartCode())){
throw new ServiceException("任务处理: 任务处理零件有误");
}
//零件信息
DsPartEntity partEntity = partService.selectDsPartByPatCode(dsTaskingEntity.getPartCode());
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(dsTaskingEntity.getPartCode(),version);
DsPartSynthesisVO dsPartSynthesisVO = new DsPartSynthesisVO();
//查询子件信息
if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){
@ -472,29 +514,34 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
dsPartSynthesisVO.setDsPartEntities(dsPartEntityList);
}
}
dsPartSynthesisVO.setDsPartEntity(partEntity);
dsPartSynthesisVO.setPartVersion(dsTaskingEntity.getVersion());
//查询零件版本号
DsPartVersionEntity dsPartVersionEntity = partVersionService.selectByPartId(partEntity.getId());
dsPartSynthesisVO.setPartVersion(dsPartVersionEntity.getPartVersion());
return dsPartSynthesisVO;
}
@Override
public DsPartAuthorizedVO processAuthorized(Long taskId, String rank) {
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(taskId);
if (StringUtils.isEmpty(dsTaskingEntity.getPartCode())) {
public DsPartAuthorizedVO processAuthorized(Long taskId, String rank, String version) {
DsTaskingEntity dsTasking = taskingMapper.selectById(taskId);
if (StringUtils.isEmpty(dsTasking.getPartCode())) {
throw new ServiceException("任务处理: 任务处理零件有误");
}
// 零件信息
DsPartEntity partEntity = partService.selectDsPartByPatCode(dsTaskingEntity.getPartCode());
// 零件信息
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(dsTasking.getPartCode(),version);
//返工工艺
if(TaskingConstant.REWORK_PLAN_EDIT.equals(dsTaskingEntity.getTaskType())){
return authorizedReworkTask(partEntity,dsTaskingEntity);
if(TaskingConstant.REWORK_PLAN_EDIT.equals(dsTasking.getTaskType())){
return authorizedReworkTask(partEntity,dsTasking);
}
//正常工艺
String version = dsTaskingEntity.getVersion();
return authorizedTask(rank,partEntity,version);
DsPartAuthorizedVO partAuthorizedVO = authorizedTask(rank, partEntity, version);
return partAuthorizedVO;
}
private DsPartAuthorizedVO authorizedTask(String rank, DsPartEntity partEntity, String version) {
@ -508,7 +555,10 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
result.setCraftList(new ArrayList<>());
// 查询零件工艺信息
List<DsCraftVO> dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), version, rank);
List<DsCraftVO> dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), rank);
if(CollectionUtils.isEmpty(dsCraftVOList)){
throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息");
}
if (!CollectionUtils.isEmpty(dsCraftVOList)) {
for (DsCraftVO craftVO : dsCraftVOList) {
@ -733,8 +783,10 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
@Override
public DsPartAuthorizedVO craftDetail(Long partId, String partVersion, String rank) {
DsPartEntity partEntity = partService.getById(partId);
public DsPartAuthorizedVO craftDetail(String partCode, String partVersion, String rank) {
DsPartVersionEntity partVersionEntity = partVersionService.selectByPartCodeAndPartVersion(partCode, partVersion);
DsPartEntity partEntity = partService.getById(partVersionEntity.getPartId());
DsPartAuthorizedVO partAuthorizedVO = authorizedTask(rank, partEntity, partVersion);
return partAuthorizedVO;
}
@ -754,7 +806,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
private void processSingleTask(DsReworkTaskVO task) throws SQLException {
// 2. 检查零件是否存在
//先查询零件存不存在
DsPartEntity partEntity = partService.selectDsPartByPatCode(task.getPrtno());
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(task.getPrtno(),null);
if (null == partEntity) {
// 同步零件数据
SyncResult syncResult = syncPartData(task.getPrtno());
@ -767,7 +819,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
// 3. 获取零件工艺信息
DsPartEntity partInfo = partService.selectDsPartByPatCode(task.getPrtno());
DsPartEntity partInfo = partService.selectDsPartByPatCodeAndVersion(task.getPrtno(),null);
if (partInfo == null) {
log.debug("零件 " + task.getPrtno() + " 信息获取失败,跳过处理");
return;

@ -263,4 +263,33 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
}
}
/**
* 获取昨天的开始时间00:00:00
*/
public static LocalDateTime getYesterdayStart() {
return LocalDate.now().minusDays(1).atStartOfDay();
}
/**
* 获取昨天的结束时间23:59:59.999999999
*/
public static LocalDateTime getYesterdayEnd() {
return LocalDate.now().minusDays(1).atTime(LocalTime.MAX);
}
/**
* 获取昨天的开始时间Date格式
*/
public static Date getYesterdayStartDate() {
return Date.from(getYesterdayStart().atZone(ZoneId.systemDefault()).toInstant());
}
/**
* 获取昨天的结束时间Date格式
*/
public static Date getYesterdayEndDate() {
return Date.from(getYesterdayEnd().atZone(ZoneId.systemDefault()).toInstant());
}
}

@ -0,0 +1,48 @@
package org.springblade.desk.iot.controller;
import com.alibaba.fastjson2.JSONObject;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.extern.slf4j.Slf4j;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.hibernate.validator.internal.util.logging.Log;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity;
import org.springblade.desk.dashboard.pojo.vo.DsBatchPreservePlanVO;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.dashboard.wrapper.DsBatchPreservePlanWrapper;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.iot.setvice.IEpLineElectricService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/iot")
@Tag(name = "iot回调专用", description = "iot回调专用")
public class IotWebApiController {
@Autowired
IEpLineElectricService lineElectricService;
@Operation(summary = "产线电量信息调用接口")
@RequestMapping(value = "/saveDeviceAhm", method = RequestMethod.POST)
public R saveDeviceAhm(@RequestBody JSONObject data) throws Exception {
if (data == null || data.size() == 0) {
throw new ServiceException("参数传递异常!");
}
log.info("产线电量信息调用接口:" + data.getString("deviceId") + " 时间:" + data.getString("pushTm")
+ " 数据:" + data.getString("ahmItems") + "pushData" + data.toJSONString());
lineElectricService.saveDeviceAhm(data);
return R.success();
}
}

@ -0,0 +1,51 @@
/**
* 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.desk.iot.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity;
import org.springblade.desk.dashboard.pojo.entity.EpLineElectricEntity;
import java.util.Date;
import java.util.List;
/**
* 填报明细表 Mapper 接口
*
* @author BladeX
* @since 2025-11-12
*/
public interface EpLineElectricMapper extends BaseMapper<EpLineElectricEntity> {
DsBatchPreservePlanEntity getDataBySlot(@Param("batchNo")String batchNo,
@Param("deviceCode") String deviceCode,
@Param("startDate")Date startDate,
@Param("endDate") Date endDate);
}

@ -0,0 +1,48 @@
<?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.iot.mapper.EpLineElectricMapper">
<!-- 通用查询映射结果 -->
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.springblade.desk.dashboard.pojo.entity.EpLineElectricEntity">
<result column="ID" property="id"/>
<result column="DEVICE_ID" property="deviceId" />
<result column="WORK_SLOT" property="workSlot"/>
<result column="ELECTRIC" property="electric" />
<result column="CREATE_TIME" property="createTime" />
<result column="PUSH_DATA" property="pushData" />
<result column="CREATE_USER" property="createUser" />
<result column="CREATE_DEPT" property="createDept" />
<result column="CREATE_TIME" property="createTime" />
<result column="UPDATE_USER" property="updateUser" />
<result column="UPDATE_TIME" property="updateTime" />
<result column="STATUS" property="status" />
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
<select id="getDataBySlot"
resultType="org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity">
SELECT *
FROM (
SELECT
ID,
DEVICE_ID,
WORK_SLOT,
ELECTRIC,
CREATE_TIME,
PUSH_DATA
FROM EP_LINE_ELECTRIC
WHERE DEVICE_ID = #{deviceCode}
AND WORK_SLOT = #{batchNo}
AND CREATE_TIME BETWEEN TO_DATE(#{startDate}, 'YYYY-MM-DD')
AND TO_DATE(#{{endDate}}, 'YYYY-MM-DD')
AND ELECTRIC IS NOT NULL
ORDER BY TO_NUMBER(ELECTRIC) DESC
)
WHERE ROWNUM = 1;
</select>
</mapper>

@ -0,0 +1,66 @@
/**
* 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.desk.iot.setvice;
import com.alibaba.fastjson2.JSONObject;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity;
import org.springblade.desk.dashboard.pojo.entity.EpLineElectricEntity;
import java.util.Date;
import java.util.List;
/**
* 填报明细表 服务类
*
* @author BladeX
* @since 2025-11-12
*/
public interface IEpLineElectricService extends BaseService<EpLineElectricEntity> {
/**
* 保存推送的数据
* @param data
*/
void saveDeviceAhm(JSONObject data);
/**
* <p>方法描述: 根据槽号设备号时间查询数据 </p >
* <p>方法名: getDataBySlot </p >
*
* @param batchNo
* @param deviceCode
* @param startdate
* @param endDate
* @return
*/
DsBatchPreservePlanEntity getDataBySlot(String batchNo, String deviceCode, Date startdate, Date endDate);
}

@ -0,0 +1,85 @@
/**
* 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.desk.iot.setvice.impl;
import com.alibaba.fastjson2.JSONObject;
import org.checkerframework.checker.units.qual.A;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.mapper.BsFillingDetailMapper;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsBatchPreservePlanEntity;
import org.springblade.desk.dashboard.pojo.entity.EpLineElectricEntity;
import org.springblade.desk.dashboard.service.IBsFillingDetailService;
import org.springblade.desk.iot.mapper.EpLineElectricMapper;
import org.springblade.desk.iot.setvice.IEpLineElectricService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 填报明细表 服务实现类
*
* @author BladeX
* @since 2025-11-12
*/
@Service
public class EpLineElectricServiceImpl extends BaseServiceImpl<EpLineElectricMapper, EpLineElectricEntity> implements IEpLineElectricService {
@Autowired
EpLineElectricMapper lineElectricMapper;
@Override
public void saveDeviceAhm(JSONObject params) {
EpLineElectricEntity epLineElectric;
List<JSONObject> ahmItems = params.getJSONArray("ahmItems").toJavaList(JSONObject.class);
if (ahmItems != null && ahmItems.size() > 0) {
String deviceId = params.getString("deviceId");
Date pushTm = params.getDate("pushTm");
for (JSONObject ahmItem : ahmItems) {
epLineElectric = new EpLineElectricEntity();
epLineElectric.setDeviceId(deviceId);
epLineElectric.setWorkSlot(ahmItem.getString("WorkSlot"));
epLineElectric.setElectric(ahmItem.getString("AHM"));
epLineElectric.setCreateTime(pushTm);
epLineElectric.setPushData(params.toString());
boolean save = this.save(epLineElectric);
if(!save){
throw new ServiceException("保存推送的数据失败!");
}
}
}
}
@Override
public DsBatchPreservePlanEntity getDataBySlot(String batchNo, String deviceCode, Date startDate, Date endDate) {
return lineElectricMapper.getDataBySlot(batchNo,deviceCode,startDate,endDate);
}
}

@ -57,7 +57,7 @@ public class MoldPlanServiceImpl extends BaseServiceImpl<MoldPlanMapper, MoldPla
moldPlan.setStatus(MoldPlanEnum.MAF_STATUS_CREATE.getCode());
moldPlan.setSource(MoldPlanEnum.SOURCE_USER.getCode());
// 工装
DsPartEntity dsPart = dsPartService.selectDsPartByPatCode(moldPlan.getPartCode());
DsPartEntity dsPart = dsPartService.selectDsPartByPatCodeAndVersion(moldPlan.getPartCode(),null);
if (dsPart != null && "压饼模".equals(dsPart.getPartName())) {
moldPlan.setPlanTypeCode(MoldPlanEnum.PLAN_TYPE_CODE_Z.getName());
moldPlan.setPlanTypeName(MoldPlanEnum.PLAN_TYPE_CODE_D.getName());

@ -604,8 +604,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
continue;
}
DsPartEntity dsPart = dsPartService.selectDsPartByPatCode(dsPartSub.getPartCode());
//验证子件是否存在对应零件,不存在则提示异常
DsPartEntity dsPart = dsPartService.selectDsPartByPatCodeAndVersion(dsPartSub.getPartCode(),null);
//验证子件是否存在对应零件,不存在则提示异常
if (dsPart == null) {
String errMsg = MessageFormat.format("子件{0}未编制!", dsPartSub.getPartCode());
throw new BusinessException(errMsg);

Loading…
Cancel
Save