craftDetail(@RequestParam Long partId,
+ @RequestParam String partVersion,
+ @RequestParam String rank) {
+ DsPartAuthorizedVO detail = dsTaskingService.craftDetail(partId,partVersion,rank);
+ return R.data(detail);
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/PrReworkProcessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/PrReworkProcessController.java
new file mode 100644
index 0000000..3db7624
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/PrReworkProcessController.java
@@ -0,0 +1,161 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.controller;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import jakarta.validation.Valid;
+
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.annotation.IsAdmin;
+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.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+import org.springblade.desk.dashboard.excel.PrReworkProcessExcel;
+import org.springblade.desk.dashboard.wrapper.PrReworkProcessWrapper;
+import org.springblade.desk.dashboard.service.IPrReworkProcessService;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import java.util.Map;
+import java.util.List;
+import jakarta.servlet.http.HttpServletResponse;
+
+/**
+ * 返工任务表 控制器
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/prReworkProcess")
+@Tag(name = "返工任务表", description = "返工任务表接口")
+public class PrReworkProcessController extends BladeController {
+
+ private final IPrReworkProcessService prReworkProcessService;
+
+ /**
+ * 返工任务表 详情
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @Operation(summary = "详情", description = "传入prReworkProcess")
+ public R detail(PrReworkProcessEntity prReworkProcess) {
+ PrReworkProcessEntity detail = prReworkProcessService.getOne(Condition.getQueryWrapper(prReworkProcess));
+ return R.data(PrReworkProcessWrapper.build().entityVO(detail));
+ }
+ /**
+ * 返工任务表 分页
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @Operation(summary = "分页", description = "传入prReworkProcess")
+ public R> list(@Parameter(hidden = true) @RequestParam Map prReworkProcess, Query query) {
+ IPage pages = prReworkProcessService.page(Condition.getPage(query), Condition.getQueryWrapper(prReworkProcess, PrReworkProcessEntity.class));
+ return R.data(PrReworkProcessWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 返工任务表 自定义分页
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 3)
+ @Operation(summary = "分页", description = "传入prReworkProcess")
+ public R> page(PrReworkProcessVO prReworkProcess, Query query) {
+ IPage pages = prReworkProcessService.selectPrReworkProcessPage(Condition.getPage(query), prReworkProcess);
+ return R.data(pages);
+ }
+
+ /**
+ * 返工任务表 新增
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @Operation(summary = "新增", description = "传入prReworkProcess")
+ public R save(@Valid @RequestBody PrReworkProcessEntity prReworkProcess) {
+ return R.status(prReworkProcessService.save(prReworkProcess));
+ }
+
+ /**
+ * 返工任务表 修改
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @Operation(summary = "修改", description = "传入prReworkProcess")
+ public R update(@Valid @RequestBody PrReworkProcessEntity prReworkProcess) {
+ return R.status(prReworkProcessService.updateById(prReworkProcess));
+ }
+
+ /**
+ * 返工任务表 新增或修改
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @Operation(summary = "新增或修改", description = "传入prReworkProcess")
+ public R submit(@Valid @RequestBody PrReworkProcessEntity prReworkProcess) {
+ return R.status(prReworkProcessService.saveOrUpdate(prReworkProcess));
+ }
+
+ /**
+ * 返工任务表 删除
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @Operation(summary = "逻辑删除", description = "传入ids")
+ public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+ return R.status(prReworkProcessService.deleteLogic(Func.toLongList(ids)));
+ }
+
+
+ /**
+ * 导出数据
+ */
+ @IsAdmin
+ @GetMapping("/export-prReworkProcess")
+ @ApiOperationSupport(order = 9)
+ @Operation(summary = "导出数据", description = "传入prReworkProcess")
+ public void exportPrReworkProcess(@Parameter(hidden = true) @RequestParam Map prReworkProcess, BladeUser bladeUser, HttpServletResponse response) {
+ QueryWrapper queryWrapper = Condition.getQueryWrapper(prReworkProcess, PrReworkProcessEntity.class);
+ //if (!AuthUtil.isAdministrator()) {
+ // queryWrapper.lambda().eq(PrReworkProcess::getTenantId, bladeUser.getTenantId());
+ //}
+ //queryWrapper.lambda().eq(PrReworkProcessEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
+ List list = prReworkProcessService.exportPrReworkProcess(queryWrapper);
+ ExcelUtil.export(response, "返工任务表数据" + DateUtil.time(), "返工任务表数据表", list, PrReworkProcessExcel.class);
+ }
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/excel/PrReworkProcessExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/excel/PrReworkProcessExcel.java
new file mode 100644
index 0000000..bc246e7
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/excel/PrReworkProcessExcel.java
@@ -0,0 +1,171 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.excel;
+
+
+import lombok.Data;
+
+import java.util.Date;
+import java.math.BigDecimal;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import java.io.Serializable;
+import java.io.Serial;
+
+
+/**
+ * 返工任务表 Excel实体类
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class PrReworkProcessExcel implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 备注
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("备注")
+ private String remarks;
+ /**
+ *
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("")
+ private BigDecimal newColumn;
+ /**
+ * 主键ID
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("主键ID")
+ private BigDecimal id;
+ /**
+ * 返工单号
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("返工单号")
+ private String reworkCode;
+ /**
+ * 返工顺序
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("返工顺序")
+ private Long reworkNo;
+ /**
+ * C号(工艺号)
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("C号(工艺号)")
+ private String craftNo;
+ /**
+ * 序号
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("序号")
+ private String processNo;
+ /**
+ * 工序ID
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("工序ID")
+ private BigDecimal ppsId;
+ /**
+ * 工艺能力ID
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("工艺能力ID")
+ private BigDecimal caId;
+ /**
+ * 工序描述
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("工序描述")
+ private String makeMemo;
+ /**
+ * 工时定额
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("工时定额")
+ private BigDecimal hourQuota;
+ /**
+ * 计划开始时间
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("计划开始时间")
+ private Date startTime;
+ /**
+ * 计划结束时间
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("计划结束时间")
+ private Date endTime;
+ /**
+ * 加工班组ID
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("加工班组ID")
+ private BigDecimal makeTeam;
+ /**
+ * 外协商ID
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("外协商ID")
+ private BigDecimal ocId;
+ /**
+ * 操作人ID
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("操作人ID")
+ private BigDecimal makeUser;
+ /**
+ * 关键工序:0-否,1-是
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("关键工序:0-否,1-是")
+ private Short cruxProcess;
+ /**
+ * 零件号
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("零件号")
+ private String partCode;
+ /**
+ * 批次号
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("批次号")
+ private String batchNo;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsProcessSetMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsProcessSetMapper.java
index 1910d2a..26d450e 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsProcessSetMapper.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsProcessSetMapper.java
@@ -61,4 +61,5 @@ public interface BsProcessSetMapper extends BaseMapper {
*/
List exportBsProcessSet(@Param("ew") Wrapper queryWrapper);
+ BsProcessSetEntity selectBsProcessSetByProcessCode(@Param("processCode")String processCode);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsWorkCenterMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsWorkCenterMapper.java
index 5c659d3..563af84 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsWorkCenterMapper.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsWorkCenterMapper.java
@@ -60,4 +60,5 @@ public interface BsWorkCenterMapper extends BaseMapper {
*/
List exportBsWorkCenter(@Param("ew") Wrapper queryWrapper);
+ List getList();
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml
index 2b6e4d3..17b274b 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml
@@ -21,6 +21,8 @@
+
+
@@ -41,7 +43,7 @@
-
+
select * from DS_CRAFT where is_deleted = 0 and PART_ID = #{partId}
@@ -54,4 +56,18 @@
and RANK = #{rank}
+
+ select * from DS_CRAFT where is_deleted = 0
+ and PART_ID = #{partId}
+ and RANK = #{rank}
+ and PART_VERSIONS = #{newestVersion}
+
+
+
+ select * from DS_CRAFT where is_deleted = 0
+ and PART_ID = #{partId}
+ and REWORK_ORDER = #{changeNo}
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java
index 6a5bef1..5f7c391 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java
@@ -63,9 +63,14 @@ public interface DsCraftMapper extends BaseMapper {
List selectDsCraftByIds(@Param("craftIds")List craftIds);
- List selectDsCraftByPartId(@Param("partId")Long partId);
+ List selectDsCraftByPartId(@Param("partId")Long partId);
List selectCraftByPartId(@Param("partId")Long partId);
List selectCraft(@Param("partId")Long partId, @Param("version")String version,@Param("rank")String rank);
+
+ DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank, @Param("newestVersion")String newestVersion);
+
+ DsCraftEntity getReworkCraft(@Param("partId")Long partId,@Param("changeNo") String changeNo);
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProModelMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProModelMapper.java
index 168c0f7..34e9977 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProModelMapper.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProModelMapper.java
@@ -60,4 +60,5 @@ public interface DsProModelMapper extends BaseMapper {
*/
List exportDsProModel(@Param("ew") Wrapper queryWrapper);
+ List selectDsProModelAll();
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskingMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskingMapper.java
index 841ddb5..162614e 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskingMapper.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskingMapper.java
@@ -76,4 +76,15 @@ public interface DsTaskingMapper extends BaseMapper {
* @return
*/
List selectDisposeList(IPage page, @Param("dsTasking")DsTaskingVO dsTasking);
+
+ /**
+ * 根据零件号 版本号 任务状态查询
+ * @param partCode
+ * @param version
+ * @param taskStatusList
+ * @return
+ */
+ List selectDsTaskingByPartCodeAndVersion(@Param("partCode")String partCode,
+ @Param("version")String version,
+ @Param("taskStatusList")List taskStatusList);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
index f576d25..c2e1bf6 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
@@ -73,36 +73,55 @@
- select * from DS_PART where is_deleted = 0
+ SELECT p.*, c.CRAFT_STATUS
+ 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
+ )
- and PLATE = #{dsPart.plate}
+ and p.PLATE = #{dsPart.plate}
- and PART_CODE = #{dsPart.partCode}
+ and p.PART_CODE = #{dsPart.partCode}
- and SIN_TER_TYPE = #{dsPart.sinTerType}
+ and p.SIN_TER_TYPE = #{dsPart.sinTerType}
- and MATERIAL = #{dsPart.material}
+ and p.MATERIAL = #{dsPart.material}
- and POWDER_WEIGHT = #{dsPart.powderWeight}
+ and p.POWDER_WEIGHT = #{dsPart.powderWeight}
- and FORMING_THICKNESS = #{dsPart.formingThickness}
+ and p.FORMING_THICKNESS = #{dsPart.formingThickness}
- and NEXT_DUE BETWEEN TO_DATE(#{dsPart.startDate}, 'YYYY-MM-DD')
+ and p.NEXT_DUE BETWEEN TO_DATE(#{dsPart.startDate}, 'YYYY-MM-DD')
AND TO_DATE(#{dsPart.endDate}, 'YYYY-MM-DD')
- AND ID IN
+ AND p.ID IN
#{id}
- ORDER BY CREATE_TIME DESC
+ ORDER BY p.CREATE_TIME desc ;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java
new file mode 100644
index 0000000..75931ea
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java
@@ -0,0 +1,66 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.mapper;
+
+import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+import org.springblade.desk.dashboard.excel.PrReworkProcessExcel;
+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 java.util.List;
+
+/**
+ * 返工任务表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+public interface PrReworkProcessMapper extends BaseMapper {
+
+ /**
+ * 自定义分页
+ *
+ * @param page 分页参数
+ * @param prReworkProcess 查询参数
+ * @return List
+ */
+ List selectPrReworkProcessPage(IPage page, PrReworkProcessVO prReworkProcess);
+
+
+ /**
+ * 获取导出数据
+ *
+ * @param queryWrapper 查询条件
+ * @return List
+ */
+ List exportPrReworkProcess(@Param("ew") Wrapper queryWrapper);
+
+ List selectPrReworkProcess(@Param("reworkOrder")String reworkOrder,
+ @Param("partCode")String partCode,
+ @Param("batchNo")String batchNo);
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProModelMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProModelMapper.xml
index 1deae81..682fc63 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProModelMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProModelMapper.xml
@@ -47,5 +47,8 @@
SELECT * FROM DS_PRO_MODEL ${ew.customSqlSegment}
+
+ select * from DS_PRO_MODEL where is_deleted = 0
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml
index 371801b..c77830d 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml
@@ -22,6 +22,7 @@
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMeasuringToolMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMeasuringToolMapper.xml
index abfba9d..892e038 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMeasuringToolMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMeasuringToolMapper.xml
@@ -19,6 +19,7 @@
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMoldToolMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMoldToolMapper.xml
index 2b3ec1c..d763d06 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMoldToolMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMoldToolMapper.xml
@@ -19,6 +19,7 @@
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessProjectMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessProjectMapper.xml
index e978777..9403912 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessProjectMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessProjectMapper.xml
@@ -19,6 +19,7 @@
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessSetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessSetMapper.xml
index 63ef941..85a6859 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessSetMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessSetMapper.xml
@@ -26,6 +26,7 @@
+
@@ -38,4 +39,10 @@
SELECT * FROM BS_PROCESS_SET ${ew.customSqlSegment}
+
+ select * from BS_PROCESS_SET where is_deleted = 0
+ and CODE = #{processCode}
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml
new file mode 100644
index 0000000..26930f1
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select * from PR_REWORK_PROCESS where is_deleted = 0
+
+
+
+
+ SELECT * FROM PR_REWORK_PROCESS ${ew.customSqlSegment}
+
+
+
+ select * from PR_REWORK_PROCESS where is_deleted = 0
+ and REWORK_CODE = #{reworkOrder}
+ and PART_CODE = #{partCode}
+ and BATCH_NO = #{batchNo}
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml
index e229d02..b2dcce6 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml
@@ -19,6 +19,8 @@
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml
index f5055e1..8a90351 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml
@@ -32,6 +32,8 @@
+
+
@@ -78,4 +80,15 @@
+
+ select * from DS_TASKING where is_deleted = 0
+ and PART_CODE = #{partCode}
+ and VERSION = #{version}
+ and TASK_STATUS in
+
+ #{taskStatus}
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/WorkCenterMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/WorkCenterMapper.xml
index 9501af4..9d6f67c 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/WorkCenterMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/WorkCenterMapper.xml
@@ -43,4 +43,8 @@
SELECT * FROM BS_WORK_CENTER ${ew.customSqlSegment}
+
+ select * from BS_WORK_CENTER where is_deleted = 0
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/dto/BsTeamSetDTO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/dto/BsTeamSetDTO.java
index 0f0251e..aaeca4d 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/dto/BsTeamSetDTO.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/dto/BsTeamSetDTO.java
@@ -28,7 +28,10 @@ package org.springblade.desk.dashboard.pojo.dto;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import org.springframework.web.bind.annotation.RequestParam;
+
import java.io.Serial;
+import java.util.List;
/**
* 班组设置表 数据传输对象实体类
@@ -42,4 +45,6 @@ public class BsTeamSetDTO extends BsTeamSetEntity {
@Serial
private static final long serialVersionUID = 1L;
+ private List tsIdList;
+ private Long pid;
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/dto/PrReworkProcessDTO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/dto/PrReworkProcessDTO.java
new file mode 100644
index 0000000..1ad4334
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/dto/PrReworkProcessDTO.java
@@ -0,0 +1,45 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.pojo.dto;
+
+import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * 返工任务表 数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PrReworkProcessDTO extends PrReworkProcessEntity {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsProcessSetEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsProcessSetEntity.java
index 9ed764f..f71473d 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsProcessSetEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsProcessSetEntity.java
@@ -128,4 +128,10 @@ public class BsProcessSetEntity extends BaseEntity {
@Schema(description = "班组")
private String team;
+ /**
+ * 是否是检验工序
+ */
+ @Schema(description = "是否是检验工序")
+ private Integer isCheckout;
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java
index d99da1b..bc5443f 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java
@@ -95,4 +95,18 @@ public class DsCraftEntity extends BaseEntity {
*/
@Schema(description = "零件版本号")
private String partVersions;
+
+ /**
+ * 零件工艺状态
+ */
+ @Schema(description = "零件工艺状态")
+ private String craftStatus;
+
+ /**
+ * 返工单号
+ */
+ @Schema(description = "返工单号")
+ private String reworkOrder;
+
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessEntity.java
index e08bfe7..db6d357 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessEntity.java
@@ -106,4 +106,10 @@ public class DsProcessEntity extends BaseEntity {
@Schema(description = "准备工时(分钟)")
private Long setoutHours;
+ /**
+ * 实验编号
+ */
+ @Schema(description = "实验编号")
+ private String trialNo;
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMeasuringToolEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMeasuringToolEntity.java
index ca88f24..44d75d5 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMeasuringToolEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMeasuringToolEntity.java
@@ -85,4 +85,10 @@ public class DsProcessMeasuringToolEntity extends BaseEntity {
@Schema(description = "备注")
private String remarks;
+ /**
+ * 实验编号
+ */
+ @Schema(description = "实验编号")
+ private String trialNo;
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMoldToolEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMoldToolEntity.java
index 744c383..4103bf0 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMoldToolEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMoldToolEntity.java
@@ -84,5 +84,10 @@ public class DsProcessMoldToolEntity extends BaseEntity {
*/
@Schema(description = "备注")
private String remarks;
+ /**
+ * 实验编号
+ */
+ @Schema(description = "实验编号")
+ private String trialNo;
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessProjectEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessProjectEntity.java
index a40cf7a..b1a3c6a 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessProjectEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessProjectEntity.java
@@ -85,4 +85,11 @@ public class DsProcessProjectEntity extends BaseEntity {
@Schema(description = "备注")
private String remarks;
+
+ /**
+ * 实验编号
+ */
+ @Schema(description = "实验编号")
+ private String trialNo;
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java
index bc99031..5eb30cd 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java
@@ -90,4 +90,15 @@ public class DsSpecialProEntity extends TenantEntity {
@Schema(description = "备注")
private String remarks;
+ /**
+ * 外协Id
+ */
+ @Schema(description = "外协Id")
+ private String ocId;
+ /**
+ * 外协名称
+ */
+ @Schema(description = "外协名称")
+ private String ocName;
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java
index 4ec68ac..8857181 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java
@@ -159,4 +159,19 @@ public class DsTaskingEntity extends BaseEntity {
@Schema(description = "工艺完成时间")
private Date craftTime;
+ /**
+ * 工艺级别
+ */
+ @Schema(description = "工艺级别")
+ private String rank;
+
+
+ /**
+ * 返工单号
+ */
+ @Schema(description = "返工单号")
+ private String reworkOrder;
+
+
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/PrReworkProcessEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/PrReworkProcessEntity.java
new file mode 100644
index 0000000..4e3b62f
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/entity/PrReworkProcessEntity.java
@@ -0,0 +1,150 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.pojo.entity;
+
+import lombok.Data;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import java.math.BigDecimal;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springblade.core.tenant.mp.TenantEntity;
+import java.io.Serial;
+
+/**
+ * 返工任务表 实体类
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+@Data
+@TableName("PR_REWORK_PROCESS")
+@Schema(description = "PrReworkProcess对象")
+@EqualsAndHashCode(callSuper = true)
+public class PrReworkProcessEntity extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 备注
+ */
+ @Schema(description = "备注")
+ private String remarks;
+ /**
+ *
+ */
+ @Schema(description = "")
+ private BigDecimal newColumn;
+ /**
+ * 返工单号
+ */
+ @Schema(description = "返工单号")
+ private String reworkCode;
+ /**
+ * 返工顺序
+ */
+ @Schema(description = "返工顺序")
+ private Long reworkNo;
+ /**
+ * C号(工艺号)
+ */
+ @Schema(description = "C号(工艺号)")
+ private String craftNo;
+ /**
+ * 序号
+ */
+ @Schema(description = "序号")
+ private String processNo;
+ /**
+ * 工序ID
+ */
+ @Schema(description = "工序ID")
+ private BigDecimal ppsId;
+ /**
+ * 工艺能力ID
+ */
+ @Schema(description = "工艺能力ID")
+ private BigDecimal caId;
+ /**
+ * 工序描述
+ */
+ @Schema(description = "工序描述")
+ private String makeMemo;
+ /**
+ * 工时定额
+ */
+ @Schema(description = "工时定额")
+ private BigDecimal hourQuota;
+ /**
+ * 计划开始时间
+ */
+ @Schema(description = "计划开始时间")
+ private Date startTime;
+ /**
+ * 计划结束时间
+ */
+ @Schema(description = "计划结束时间")
+ private Date endTime;
+ /**
+ * 加工班组ID
+ */
+ @Schema(description = "加工班组ID")
+ private Long makeTeam;
+ /**
+ * 外协商ID
+ */
+ @Schema(description = "外协商ID")
+ private Long ocId;
+ /**
+ * 操作人ID
+ */
+ @Schema(description = "操作人ID")
+ private Long makeUser;
+ /**
+ * 关键工序:0-否,1-是
+ */
+ @Schema(description = "关键工序:0-否,1-是")
+ private Short cruxProcess;
+ /**
+ * 零件号
+ */
+ @Schema(description = "零件号")
+ private String partCode;
+ /**
+ * 批次号
+ */
+ @Schema(description = "批次号")
+ private String batchNo;
+
+ /**
+ * 实验编号
+ */
+ @Schema(description = "实验编号")
+ private String trialNo;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsCompilationCompletedVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsCompilationCompletedVO.java
index 86cbad0..847aff2 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsCompilationCompletedVO.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsCompilationCompletedVO.java
@@ -22,7 +22,7 @@ public class BsCompilationCompletedVO {
/**
* 子件集合
*/
- private List zPartList;
+ private List partList;
/**
* 工艺信息
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsWorkCenterVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsWorkCenterVO.java
index edb9679..3eaa4dd 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsWorkCenterVO.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsWorkCenterVO.java
@@ -25,21 +25,39 @@
*/
package org.springblade.desk.dashboard.pojo.vo;
-import org.springblade.desk.dashboard.pojo.entity.BsWorkCenterEntity;
+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.math.BigDecimal;
/**
- * 工作中心表 视图实体类
+ * 工作中心表 实体类
*
* @author BladeX
* @since 2025-11-22
*/
@Data
-@EqualsAndHashCode(callSuper = true)
-public class BsWorkCenterVO extends BsWorkCenterEntity {
- @Serial
- private static final long serialVersionUID = 1L;
+public class BsWorkCenterVO {
+
+ /**
+ * id
+ */
+ @Schema(description = "id")
+ private Long id;
+
+ /**
+ * 编码
+ */
+ @Schema(description = "编码")
+ private String wcCode;
+ /**
+ * 名称
+ */
+ @Schema(description = "名称")
+ private String wcName;
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsProcessVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsProcessVO.java
index 06c58eb..c150313 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsProcessVO.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsProcessVO.java
@@ -29,6 +29,7 @@ import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
+import java.util.List;
/**
* 零件工艺工序信息表 视图实体类
@@ -41,5 +42,4 @@ import java.io.Serial;
public class DsProcessVO extends DsProcessEntity {
@Serial
private static final long serialVersionUID = 1L;
-
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsReworkTaskVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsReworkTaskVO.java
new file mode 100644
index 0000000..163dfcd
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsReworkTaskVO.java
@@ -0,0 +1,92 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.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
+public class DsReworkTaskVO {
+// -- 数据源 erp
+// -- select a.redono, a.prtno, a.splcode, a.deptcode, a.detail
+// -- from dba_mgr.v_mes_rb_redo@erp_mes_link a
+// -- where a.rbmesroutstat is null;
+//
+// 主要变量
+// v_redono - 返工单号
+// v_prtno - 零件号
+// v_batch_no - 批次号(splcode)
+// v_dept_code - 部门代码
+// v_memo - 备注信息
+
+ /**
+ * 返工单号
+ */
+ @Schema(description = "返工单号")
+ private String redono;
+
+ /**
+ * 零件号
+ */
+ @Schema(description = "零件号")
+ private String prtno;
+
+
+ /**
+ * 批次号
+ */
+ @Schema(description = "批次号")
+ private String splcode;
+
+
+ /**
+ * 部门代码
+ */
+ @Schema(description = "deptcode")
+ private String deptcode;
+
+ /**
+ * 描述
+ */
+ @Schema(description = "detail")
+ private String detail;
+
+
+
+
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/PrReworkCompilationCompletedVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/PrReworkCompilationCompletedVO.java
new file mode 100644
index 0000000..a9434d0
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/PrReworkCompilationCompletedVO.java
@@ -0,0 +1,46 @@
+package org.springblade.desk.dashboard.pojo.vo;
+
+import lombok.Data;
+import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
+import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
+import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
+
+import java.util.List;
+
+/**
+ * @author: liweidong
+ * @create: 2025-11-26
+ */
+@Data
+public class PrReworkCompilationCompletedVO {
+
+ /**
+ * 工艺信息
+ */
+ private DsCraftEntity craft;
+ /**
+ * 工序集合
+ */
+ private List reworkProcessVOList;
+
+ /**
+ * 工序删除ID集合
+ */
+ private List reworkProcessDeleteIds;
+
+ /**
+ * 项目删除ID集合
+ */
+ private List processProjectDeleteIds;
+
+ /**
+ * 工序量具删除ID集合
+ */
+ private List processMeasuringToolDeleteIds;
+
+ /**
+ * 工序工装模具删除ID集合
+ */
+ private List processMoldToolDeleteIds;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/PrReworkProcessVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/PrReworkProcessVO.java
new file mode 100644
index 0000000..6deeb9f
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/PrReworkProcessVO.java
@@ -0,0 +1,53 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.pojo.vo;
+
+import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+import java.util.List;
+
+/**
+ * 返工任务表 视图实体类
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PrReworkProcessVO extends PrReworkProcessEntity {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+
+ private List processProjectVOList;
+
+ private List processMeasuringToolVOList;
+
+ private List processMoldToolVOList;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/SyncResult.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/SyncResult.java
new file mode 100644
index 0000000..be7d606
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/pojo/vo/SyncResult.java
@@ -0,0 +1,13 @@
+package org.springblade.desk.dashboard.pojo.vo;
+
+import lombok.Data;
+
+/**
+ * @author: liweidong
+ * @create: 2025-12-03
+ */
+@Data
+public class SyncResult {
+ private boolean success;
+ private String note;
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsProcessSetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsProcessSetService.java
index ce14643..745f8a1 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsProcessSetService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsProcessSetService.java
@@ -66,4 +66,11 @@ public interface IBsProcessSetService extends BaseService {
* @return
*/
boolean addOrUpdateTeam(Long pid, List tsIdList);
+
+ /**
+ * 根据工序编码查询
+ * @param processCode
+ * @return
+ */
+ BsProcessSetEntity selectBsProcessSetByProcessCode(String processCode);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsWorkCenterService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsWorkCenterService.java
index c0d6fba..dc97186 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsWorkCenterService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsWorkCenterService.java
@@ -58,4 +58,9 @@ public interface IBsWorkCenterService extends BaseService {
*/
List exportBsWorkCenter(Wrapper queryWrapper);
+ /**
+ * 作业中心
+ * @return
+ */
+ List getList();
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java
index 736d1bf..b547943 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java
@@ -83,7 +83,7 @@ public interface IDsCraftService extends BaseService {
* @param partId
* @return
*/
- List getVersion(Long partId);
+ List getVersion(Long partId);
/**
* 根据零件号查询工艺信息
@@ -107,4 +107,29 @@ public interface IDsCraftService extends BaseService {
* @return
*/
boolean addOrEdit(DsCraftEntity craft);
+
+ /**
+ * 根据零件号 获取最新工艺版本号
+ * @param partId
+ * @return
+ */
+ String getNewestVersion(Long partId);
+
+ /**
+ * 获取零件工艺
+ * @param partId 零件号
+ * @param rank 工艺等级
+ * @param newestVersion 最新版本号
+ * @return
+ */
+ DsCraftEntity getPartCraft(Long partId, String rank, String newestVersion);
+
+ /**
+ * 获取返工工艺
+ * @param partId
+ * @param changeNo
+ * @return
+ */
+ DsCraftEntity getReworkCraft(Long partId, String changeNo);
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
index f8c150f..8bf431f 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
@@ -165,7 +165,23 @@ public interface IDsPartService extends BaseService {
*/
boolean updateDsPart(DsPartEntity dsPart, List zPartList);
- /**
+ /**
+ * 同步零件
+ * @param partCode
+ * @return
+ */
+ Object syncPart(String partCode);
+
+ /**
+ * 零件详情
+ * @param partId
+ * @param partVersion
+ * @return
+ */
+ DsPartSynthesisVO detail(Long partId, String partVersion);
+
+
+ /**
* 烧结树形结构
* @param partCode
* @return
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProModelService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProModelService.java
index de770eb..ddec14c 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProModelService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProModelService.java
@@ -87,4 +87,10 @@ public interface IDsProModelService extends BaseService {
* @return
*/
boolean update(JSONObject data);
+
+ /**
+ * 获取所有工艺模版
+ * @return
+ */
+ List getModelList();
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessMeasuringToolService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessMeasuringToolService.java
index 2f59fc9..6b4999e 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessMeasuringToolService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessMeasuringToolService.java
@@ -32,6 +32,9 @@ import org.springblade.desk.dashboard.pojo.vo.DsProcessMeasuringToolVO;
import org.springblade.desk.dashboard.excel.DsProcessMeasuringToolExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+
import java.util.List;
/**
@@ -80,4 +83,12 @@ public interface IDsProcessMeasuringToolService extends BaseService processMeasuringToolEntities);
+
+ /**
+ * 返工新增修改
+ * @param prReworkProcess
+ * @param processMeasuringToolVOList
+ * @return
+ */
+ boolean saveReworkProcessMeasuringTool(PrReworkProcessVO prReworkProcess, List processMeasuringToolVOList);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessMoldToolService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessMoldToolService.java
index 161ec55..fc7dce7 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessMoldToolService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessMoldToolService.java
@@ -32,6 +32,8 @@ import org.springblade.desk.dashboard.pojo.vo.DsProcessMoldToolVO;
import org.springblade.desk.dashboard.excel.DsProcessMoldToolExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+
import java.util.List;
/**
@@ -80,4 +82,12 @@ public interface IDsProcessMoldToolService extends BaseService processMoldToolEntities);
+
+ /**
+ * 返工新增修改
+ * @param prReworkProcess
+ * @param processMoldToolVOList
+ * @return
+ */
+ boolean saveReworkProcessMoldTool(PrReworkProcessVO prReworkProcess, List processMoldToolVOList);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessProjectService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessProjectService.java
index b9aa92e..d0fdd96 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessProjectService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessProjectService.java
@@ -32,6 +32,8 @@ import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
import org.springblade.desk.dashboard.excel.DsProcessProjectExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+
import java.util.List;
/**
@@ -87,4 +89,12 @@ public interface IDsProcessProjectService extends BaseService processProjectEntityList);
+
+ /**
+ * 保存返工项目信息
+ * @param prReworkProcess
+ * @param processProjectVOList
+ * @return
+ */
+ boolean saveReworkProcessProjectSave(PrReworkProcessVO prReworkProcess, List processProjectVOList);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java
index 4ce35fb..36325df 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java
@@ -34,6 +34,8 @@ import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO;
import org.springblade.desk.dashboard.excel.DsTaskingExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+
import java.util.List;
/**
@@ -185,4 +187,31 @@ public interface IDsTaskingService extends BaseService {
* @return
*/
boolean saveProcessMoldTool(DsProcessEntity processEntity, List processMoldToolEntities, List deleteIds);
+
+ /**
+ * 返工任务同步
+ * @return
+ */
+ boolean reworkTask();
+
+ /**
+ * 返工任务保存
+ * @param craft
+ * @param reworkProcessVOList
+ * @param reworkProcessDeleteIds
+ * @param processProjectDeleteIds
+ * @param processMeasuringToolDeleteIds
+ * @param processMoldToolDeleteIds
+ * @return
+ */
+ boolean reworkAuthorizedAccomplish(DsCraftEntity craft, List reworkProcessVOList, List reworkProcessDeleteIds, List processProjectDeleteIds, List processMeasuringToolDeleteIds, List processMoldToolDeleteIds);
+
+ /**
+ * 零件详情 工艺
+ * @param partId
+ * @param partVersion
+ * @param rank
+ * @return
+ */
+ DsPartAuthorizedVO craftDetail(Long partId, String partVersion, String rank);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java
new file mode 100644
index 0000000..0f92fe0
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java
@@ -0,0 +1,69 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+import org.springblade.desk.dashboard.excel.PrReworkProcessExcel;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import java.util.List;
+
+/**
+ * 返工任务表 服务类
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+public interface IPrReworkProcessService extends BaseService {
+ /**
+ * 自定义分页
+ *
+ * @param page 分页参数
+ * @param prReworkProcess 查询参数
+ * @return IPage
+ */
+ IPage selectPrReworkProcessPage(IPage page, PrReworkProcessVO prReworkProcess);
+
+
+ /**
+ * 导出数据
+ *
+ * @param queryWrapper 查询条件
+ * @return List
+ */
+ List exportPrReworkProcess(Wrapper queryWrapper);
+
+ /**
+ * 获取返工工序
+ * @param reworkOrder
+ * @param partCode
+ * @param batchNo
+ * @return
+ */
+ List selectPrReworkProcess(String reworkOrder, String partCode, String batchNo);
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsProcessSetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsProcessSetServiceImpl.java
index 861f68d..250dd7c 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsProcessSetServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsProcessSetServiceImpl.java
@@ -130,4 +130,9 @@ public class BsProcessSetServiceImpl extends BaseServiceImpl implements IBsWorkCenterService {
+ @Autowired
+ BsWorkCenterMapper workCenterMapper;
+
@Override
public IPage selectBsWorkCenterPage(IPage page, BsWorkCenterVO bsWorkCenter) {
return page.setRecords(baseMapper.selectBsWorkCenterPage(page, bsWorkCenter));
@@ -60,4 +64,9 @@ public class BsWorkCenterServiceImpl extends BaseServiceImpl getList() {
+ return workCenterMapper.getList();
+ }
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java
index 1304001..59d72aa 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java
@@ -53,9 +53,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -139,7 +137,7 @@ public class DsCraftServiceImpl extends BaseServiceImpl getVersion(Long partId) {
+ public List getVersion(Long partId) {
return craftMapper.selectDsCraftByPartId(partId);
}
@@ -172,4 +170,29 @@ public class DsCraftServiceImpl extends BaseServiceImpl craftVOList = craftMapper.selectCraftByPartId(partId);
+ Optional latestVersion = craftVOList.stream()
+ .map(DsCraftVO::getPartVersions)
+ .max(Comparator.naturalOrder());
+ if (latestVersion.isPresent()) {
+ // 输出: 最新版本号
+ System.out.println("最新版本号: " + latestVersion.get());
+ return latestVersion.get();
+ }
+ return null;
+ }
+
+ @Override
+ public DsCraftEntity getPartCraft(Long partId, String rank, String newestVersion) {
+ return craftMapper.getPartCraft(partId,rank,newestVersion);
+ }
+
+ @Override
+ public DsCraftEntity getReworkCraft(Long partId, String changeNo) {
+ return craftMapper.getReworkCraft(partId,changeNo);
+ }
+
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
index 3013269..f26ddc9 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
@@ -351,6 +351,38 @@ public class DsPartServiceImpl extends BaseServiceImpl partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId());
+ List idList = partRelationEntityList.stream()
+ .map(DsPartRelationEntity::getChildPartId)
+ .collect(Collectors.toList());
+
+ List dsPartEntityList = dsPartMapper.selectDsPartByIds(idList);
+ dsPartSynthesisVO.setDsPartEntities(dsPartEntityList);
+ }
+
+ dsPartSynthesisVO.setDsPartEntity(partEntity);
+ return dsPartSynthesisVO;
+ }
+
public Date addDaysToCurrentDate(int days) {
LocalDateTime localDateTime = LocalDateTime.now().plusDays(days);
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProModelServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProModelServiceImpl.java
index ac64ee1..e77552e 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProModelServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProModelServiceImpl.java
@@ -156,4 +156,9 @@ public class DsProModelServiceImpl extends BaseServiceImpl getModelList() {
+ return proModelMapper.selectDsProModelAll();
+ }
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessMeasuringToolServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessMeasuringToolServiceImpl.java
index 144b84c..189e0e6 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessMeasuringToolServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessMeasuringToolServiceImpl.java
@@ -30,6 +30,8 @@ import org.springblade.desk.dashboard.pojo.entity.DsProcessMeasuringToolEntity;
import org.springblade.desk.dashboard.pojo.vo.DsProcessMeasuringToolVO;
import org.springblade.desk.dashboard.excel.DsProcessMeasuringToolExcel;
import org.springblade.desk.dashboard.mapper.DsProcessMeasuringToolMapper;
+import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
import org.springblade.desk.dashboard.service.IDsProcessMeasuringToolService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -93,4 +95,20 @@ public class DsProcessMeasuringToolServiceImpl extends BaseServiceImpl processMeasuringToolVOList) {
+ if(!CollectionUtils.isEmpty(processMeasuringToolVOList)){
+ for (DsProcessMeasuringToolVO dsProcessMeasuringToolVO : processMeasuringToolVOList) {
+ if (null != dsProcessMeasuringToolVO.getId()){
+ updateById(dsProcessMeasuringToolVO);
+ }else {
+ dsProcessMeasuringToolVO.setProcessId(prReworkProcess.getId());
+ save(dsProcessMeasuringToolVO);
+ }
+ }
+ }
+ return true;
+ }
+
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessMoldToolServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessMoldToolServiceImpl.java
index 7ad1441..1862537 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessMoldToolServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessMoldToolServiceImpl.java
@@ -30,6 +30,7 @@ import org.springblade.desk.dashboard.pojo.entity.DsProcessMoldToolEntity;
import org.springblade.desk.dashboard.pojo.vo.DsProcessMoldToolVO;
import org.springblade.desk.dashboard.excel.DsProcessMoldToolExcel;
import org.springblade.desk.dashboard.mapper.DsProcessMoldToolMapper;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
import org.springblade.desk.dashboard.service.IDsProcessMoldToolService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -92,4 +93,19 @@ public class DsProcessMoldToolServiceImpl extends BaseServiceImpl processMoldToolVOList) {
+ if(!CollectionUtils.isEmpty(processMoldToolVOList)){
+ for (DsProcessMoldToolVO dsProcessMoldToolVO : processMoldToolVOList) {
+ if(null != dsProcessMoldToolVO.getId()){
+ updateById(dsProcessMoldToolVO);
+ }else {
+ dsProcessMoldToolVO.setProcessId(prReworkProcess.getId());
+ save(dsProcessMoldToolVO);
+ }
+ }
+ }
+ return true;
+ }
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessProjectServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessProjectServiceImpl.java
index 9761946..ce0df61 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessProjectServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessProjectServiceImpl.java
@@ -30,6 +30,7 @@ import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity;
import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
import org.springblade.desk.dashboard.excel.DsProcessProjectExcel;
import org.springblade.desk.dashboard.mapper.DsProcessProjectMapper;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
import org.springblade.desk.dashboard.service.IDsProcessProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -97,4 +98,19 @@ public class DsProcessProjectServiceImpl extends BaseServiceImpl processProjectVOList) {
+ if(!CollectionUtils.isEmpty(processProjectVOList)){
+ for (DsProcessProjectVO dsProcessProjectVO : processProjectVOList) {
+ if(null != dsProcessProjectVO.getId()){
+ updateById(dsProcessProjectVO);
+ }else {
+ dsProcessProjectVO.setProcessId(prReworkProcess.getId());
+ save(dsProcessProjectVO);
+ }
+ }
+ }
+ return true;
+ }
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
index 54070e0..9de9218 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
@@ -26,6 +26,8 @@
package org.springblade.desk.dashboard.service.impl;
import com.alibaba.fastjson2.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.math3.random.ValueServer;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -48,6 +50,10 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
+import javax.xml.crypto.Data;
+import java.net.DatagramSocket;
+import java.sql.Connection;
+import java.sql.SQLException;
import java.util.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@@ -59,6 +65,7 @@ import java.util.stream.Collectors;
* @author BladeX
* @since 2025-11-12
*/
+@Slf4j
@Service
public class DsTaskingServiceImpl extends BaseServiceImpl implements IDsTaskingService {
@@ -90,6 +97,18 @@ public class DsTaskingServiceImpl extends BaseServiceImpl selectAssignList(IPage page, DsTaskingVO dsTasking) {
List dsTaskingVOS = baseMapper.selectDsTaskingPage(page, dsTasking);
@@ -169,14 +188,111 @@ public class DsTaskingServiceImpl extends BaseServiceImpl taskIds) {
- if (Objects.isNull(taskIds)) {
+ if (CollectionUtils.isEmpty(taskIds)) {
throw new ServiceException("任务ID为空");
}
for (Long taskId : taskIds) {
+
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(taskId);
+ //返工任务
+ if(dsTaskingEntity.getTaskType().equals(TaskingConstant.REWORK_PLAN_EDIT)){
+ DsPartEntity partEntity = partService.selectDsPartByPatCode(dsTaskingEntity.getPartCode());
+ //返工单号 返工工艺
+ List reworkProcessEntityList = reworkProcessService.selectPrReworkProcess(dsTaskingEntity.getReworkOrder(), partEntity.getPartCode(), dsTaskingEntity.getVersion());
+ if(CollectionUtils.isEmpty(reworkProcessEntityList)){
+ throw new ServiceException("返工工序缺失");
+ }
+ for (PrReworkProcessEntity prReworkProcessEntity : reworkProcessEntityList) {
+ if(null == prReworkProcessEntity.getMakeTeam() && null == prReworkProcessEntity.getOcId()){
+ throw new ServiceException("外协厂商或加工班组为空");
+ }
+ BsProcessSetEntity processSet = processSetService.selectBsProcessSetByProcessCode(prReworkProcessEntity.getProcessNo());
+ if(TaskingConstant.IS_CHECKOUT.equals(processSet.getIsCheckout()) ){
+ List processProjectEntities = processProjectService.selectDsProcessProjectByProcessId(prReworkProcessEntity.getId());
+ if(CollectionUtils.isEmpty(processProjectEntities)){
+ throw new ServiceException(":未编制检验项目");
+ }
+ }
+ }
+ }
+
+ //1.判断零件和子件二级工艺/指定工艺级别下是否有工序
+ DsPartEntity partEntity = partService.selectDsPartByPatCode(dsTaskingEntity.getPartCode());
+ String rank = dsTaskingEntity.getRank();
+
+ //获取最新工艺版本号
+ String newestVersion = craftService.getNewestVersion(partEntity.getId());
+ //查询零件和子件是否编制工序
+ //零件工艺
+ DsCraftEntity craft = craftService.getPartCraft(partEntity.getId(),rank,newestVersion);
+ if(null == craft){
+ throw new ServiceException("零件工艺缺失");
+ }
+ //零件工序
+ List processEntities = processService.selectDsProcessByCraftId(craft.getId());
+ if(CollectionUtils.isEmpty(processEntities)){
+ throw new ServiceException("【零件号】工艺未编制工序");
+ }
+ //判断工序下的检验项目
+ for (DsProcessEntity processEntity : processEntities) {
+ BsProcessSetEntity processSet = processSetService.selectBsProcessSetByProcessCode(processEntity.getProcessCode());
+ if(TaskingConstant.IS_CHECKOUT.equals(processSet.getIsCheckout()) ){
+ List processProjectEntities = processProjectService.selectDsProcessProjectByProcessId(processEntity.getId());
+ if(CollectionUtils.isEmpty(processProjectEntities)){
+ throw new ServiceException(processEntity.getProcessName()+":未编制检验项目");
+ }
+ }
+ }
+
+
+ //子件工艺
+ List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId());
+ for (DsPartRelationEntity dsPartRelationEntity : partRelationEntityList) {
+ DsPartEntity zPartEntity = partService.getById(dsPartRelationEntity.getChildPartId());
+ if(null != zPartEntity){
+ //检验子件超期
+ Date nextDue = zPartEntity.getNextDue();
+ if (nextDue.before(new Date())) {
+ throw new ServiceException("【零件号】工艺超期");
+ }
+ }
+ String zNewestVersion = craftService.getNewestVersion(zPartEntity.getId());
+ DsCraftEntity zCraft = craftService.getPartCraft(zPartEntity.getId(),rank,zNewestVersion);
+ if(null == zCraft){
+ throw new ServiceException("子件工艺缺失");
+ }
+ List zProcessEntities = processService.selectDsProcessByCraftId(zCraft.getId());
+ if(CollectionUtils.isEmpty(zProcessEntities)){
+ throw new ServiceException("【子件号】工艺未编制工序");
+ }
+
+ //判断工序下的检验项目
+ for (DsProcessEntity zProcessEntity : zProcessEntities) {
+ BsProcessSetEntity processSet = processSetService.selectBsProcessSetByProcessCode(zProcessEntity.getProcessCode());
+ if(TaskingConstant.IS_CHECKOUT.equals(processSet.getIsCheckout()) ){
+ List processProjectEntities = processProjectService.selectDsProcessProjectByProcessId(zProcessEntity.getId());
+ if(CollectionUtils.isEmpty(processProjectEntities)){
+ throw new ServiceException("子件"+zProcessEntity.getProcessName()+":未编制检验项目");
+ }
+ }
+ }
+
+
+ zCraft.setCraftStatus(TaskingConstant.IN_USE);
+ craftService.updateById(zCraft);
+ }
+
+ //3.工艺任务状态变更为已完成
dsTaskingEntity.setCraftTime(new Date());
dsTaskingEntity.setTaskStatus(TaskingConstant.TASK_STATUS_COMPLETED);
taskingMapper.updateById(dsTaskingEntity);
+
+ //4.更新零件、子件当前版本的工艺任务状态为【使用中】
+ craft.setCraftStatus(TaskingConstant.IN_USE);
+ craftService.updateById(craft);
+
+ //todo 5新图任务 - 磨具计划下发 对接坤哥
+
}
return true;
@@ -272,8 +388,30 @@ public class DsTaskingServiceImpl extends BaseServiceImpl taskStatusList = new ArrayList<>(Arrays.asList(
+ TaskingConstant.TASK_STATUS_WAIT,
+ TaskingConstant.TASK_STATUS_ALREADY,
+ TaskingConstant.TASK_STATUS_UNDERWAY
+ ));
+ //查询
+ List taskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(partCode,version,taskStatusList);
+ if(!CollectionUtils.isEmpty(taskingEntityList)){
+ throw new ServiceException("此版本任务已存在");
+ }else {
+ dsTasking.setRank("2");
+ save(dsTasking);
+ return true;
+ }
}
@Override
@@ -314,14 +452,18 @@ public class DsTaskingServiceImpl extends BaseServiceImpl dsPartEntityList = partService.selectDsPartByParentID(partEntity.getId());
+ if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){
+ List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId());
+ List idList = partRelationEntityList.stream()
+ .map(DsPartRelationEntity::getChildPartId)
+ .collect(Collectors.toList());
+ List dsPartEntityList = partService.selectDsPartByIds(idList);
+ dsPartSynthesisVO.setDsPartEntities(dsPartEntityList);
+ }
- DsPartSynthesisVO dsPartSynthesisVO = new DsPartSynthesisVO();
dsPartSynthesisVO.setDsPartEntity(partEntity);
- dsPartSynthesisVO.setDsPartEntities(dsPartEntityList);
-
return dsPartSynthesisVO;
}
@@ -335,6 +477,16 @@ public class DsTaskingServiceImpl extends BaseServiceImpl());
// 查询零件工艺信息
- List dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), dsTaskingEntity.getVersion(), rank);
+ List dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), version, rank);
if (!CollectionUtils.isEmpty(dsCraftVOList)) {
for (DsCraftVO craftVO : dsCraftVOList) {
@@ -380,6 +532,58 @@ public class DsTaskingServiceImpl extends BaseServiceImpl());
+
+ //查询返工工艺信息
+ DsCraftEntity craft = craftService.getReworkCraft(partEntity.getId(),dsTaskingEntity.getReworkOrder());
+
+ // 创建工艺节点
+ CraftTreeVO craftTree = new CraftTreeVO();
+ craftTree.setCraftInfo(JSONObject.from(craft));
+ craftTree.setProcessList(new ArrayList<>());
+
+ if(null != craft){
+ //查询返工工序
+ List reworkProcessEntityList = reworkProcessService.selectPrReworkProcess(dsTaskingEntity.getReworkOrder(),dsTaskingEntity.getPartCode(),dsTaskingEntity.getVersion());
+ if(!CollectionUtils.isEmpty(reworkProcessEntityList)){
+ List reworkProcessId = reworkProcessEntityList.stream()
+ .map(PrReworkProcessEntity::getId)
+ .collect(Collectors.toList());
+
+ // 批量查询关联数据
+ List processProjectEntityList = processProjectService.selectDsProcessProjectByProcessIds(reworkProcessId);
+ List processMeasuringToolEntityList = processMeasuringToolService.selectDsProcessMeasuringToolByProcessIds(reworkProcessId);
+ List processMoldToolEntityList = processMoldToolService.selectDsProcessMoldToolByProcessIds(reworkProcessId);
+
+ // 构建工序树
+ List processTree = reworkBuildProcessTree(reworkProcessEntityList, processProjectEntityList,
+ processMeasuringToolEntityList, processMoldToolEntityList);
+ craftTree.setProcessList(processTree);
+ }
+
+ result.getCraftList().add(craftTree);
+
+ }else{
+ // 没有返工工艺信息的情况
+ // 创建新的工艺实体并设置返工订单号
+ craft = new DsCraftEntity();
+ craft.setReworkOrder(dsTaskingEntity.getReworkOrder());
+ craft.setPartId(partEntity.getId());
+ craft.setPartVersions(dsTaskingEntity.getVersion());
+ // 创建工艺节点并设置craftInfo
+ craftTree.setCraftInfo(JSONObject.from(craft));
+ craftTree.setProcessList(new ArrayList<>());
+
+ result.getCraftList().add(craftTree);
+ }
+
+ return result;
+ }
+
@Override
public boolean authorizedAccomplish(DsPartEntity dsPart, List zPartList, DsCraftEntity craft, List processList, List deleteIds) {
@@ -414,6 +618,282 @@ public class DsTaskingServiceImpl extends BaseServiceImpl reworkTasks = null;
+
+ try {
+ // 1. 获取未处理的返工任务
+ reworkTasks = fetchUnprocessedReworkTasks();
+
+ // 开始事务
+ mesConn.setAutoCommit(false);
+
+ // 遍历处理每个返工任务
+ for (DsReworkTaskVO task : reworkTasks) {
+ processSingleTask(task);
+ }
+
+ // 提交事务
+ mesConn.commit();
+ log.info("返工任务自动分派完成,共处理" + reworkTasks.size() + "个任务");
+
+ } catch (SQLException e) {
+ // 异常处理 - 对应exception when NO_DATA_FOUND
+ try {
+ mesConn.rollback();
+ log.info("返工任务分派失败,事务已回滚: " + e.getMessage());
+ System.out.println("找不到数据,执行失败!"); // 对应dbms_output.put_line
+ } catch (SQLException ex) {
+ log.info("回滚失败: " + ex.getMessage());
+ }
+ }
+
+ List reworkTaskVOList = new ArrayList<>();
+ if(CollectionUtils.isEmpty(reworkTaskVOList)){
+ throw new ServiceException("无返工任务");
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean reworkAuthorizedAccomplish(DsCraftEntity craft, List reworkProcessVOList, List reworkProcessDeleteIds,
+ List processProjectDeleteIds, List processMeasuringToolDeleteIds, List processMoldToolDeleteIds) {
+ //保存工艺信息
+ if(null == craft.getId()){
+ craft.setPrority("3");
+ craft.setRank("2");
+ craftService.save(craft);
+ }else {
+ craftService.updateById(craft);
+ }
+
+ //保存返工工序
+ if(!CollectionUtils.isEmpty(reworkProcessVOList)){
+ for (PrReworkProcessVO prReworkProcess : reworkProcessVOList) {
+ if(null == prReworkProcess.getId()){
+ DsPartEntity partEntity = partService.getById(craft.getPartId());
+ prReworkProcess.setReworkCode(craft.getReworkOrder());
+ prReworkProcess.setPartCode(partEntity.getPartCode());
+ prReworkProcess.setBatchNo(craft.getPartVersions());
+ reworkProcessService.save(prReworkProcess);
+ }else {
+ reworkProcessService.updateById(prReworkProcess);
+ }
+ //项目 工装 量具
+ if(!CollectionUtils.isEmpty(prReworkProcess.getProcessProjectVOList())){
+ processProjectService.saveReworkProcessProjectSave(prReworkProcess,prReworkProcess.getProcessProjectVOList());
+ }
+ if(!CollectionUtils.isEmpty(prReworkProcess.getProcessMeasuringToolVOList())){
+ processMeasuringToolService.saveReworkProcessMeasuringTool(prReworkProcess,prReworkProcess.getProcessMeasuringToolVOList());
+ }
+ if(!CollectionUtils.isEmpty(prReworkProcess.getProcessMoldToolVOList())){
+ processMoldToolService.saveReworkProcessMoldTool(prReworkProcess,prReworkProcess.getProcessMoldToolVOList());
+ }
+ }
+ }
+
+ //删除返工工序
+ if(!CollectionUtils.isEmpty(reworkProcessDeleteIds)){
+ reworkProcessService.deleteLogic(reworkProcessDeleteIds);
+ }
+ //删除返工项目
+ if(!CollectionUtils.isEmpty(processProjectDeleteIds)){
+ reworkProcessService.deleteLogic(processProjectDeleteIds);
+ }
+ //删除返工量具
+ if(!CollectionUtils.isEmpty(processMeasuringToolDeleteIds)){
+ reworkProcessService.deleteLogic(processMeasuringToolDeleteIds);
+ }
+ //删除返工量具
+ if(!CollectionUtils.isEmpty(processMoldToolDeleteIds)){
+ reworkProcessService.deleteLogic(processMoldToolDeleteIds);
+ }
+
+ return true;
+ }
+
+ @Override
+ public DsPartAuthorizedVO craftDetail(Long partId, String partVersion, String rank) {
+ DsPartEntity partEntity = partService.getById(partId);
+ DsPartAuthorizedVO partAuthorizedVO = authorizedTask(rank, partEntity, partVersion);
+ return partAuthorizedVO;
+ }
+
+ /**
+ * 处理单个返工任务
+ * 对应: loop 循环内的处理逻辑
+ */
+ private void processSingleTask(DsReworkTaskVO task) throws SQLException {
+ // 2. 检查零件是否存在
+ //先查询零件存不存在
+ DsPartEntity partEntity = partService.selectDsPartByPatCode(task.getPrtno());
+ if (null == partEntity) {
+ // 同步零件数据
+ SyncResult syncResult = syncPartData(task.getPrtno());
+
+ if (!syncResult.isSuccess()) {
+ // 记录同步失败日志
+ logDockingFailure(task.getPrtno(), syncResult.getNote());
+ return;
+ }
+ }
+
+ // 3. 获取零件工艺信息
+ DsPartEntity partInfo = partService.selectDsPartByPatCode(task.getPrtno());
+ if (partInfo == null) {
+ log.debug("零件 " + task.getPrtno() + " 信息获取失败,跳过处理");
+ return;
+ }
+
+ // 4. 分配工艺员
+ String craftUserId = assignCraftUser(task, partInfo);
+
+ // 5. 创建工艺任务
+ createCraftTask(task, partInfo, craftUserId);
+
+ // 6. 标记ERP状态
+ markErpTaskProcessed(task.getRedono());
+
+ }
+
+ private void markErpTaskProcessed(String redono) {
+ //todo 更新erp状态
+ String sql = "{call pro_rbredoroutstat(?, ?, ?)}";
+// 标记erp的分配状态
+// dba_mgr.pro_rbredoroutstat@erp_mes_link(v_redono,v_excnote, v_excflag);
+ }
+
+ private void createCraftTask(DsReworkTaskVO task, DsPartEntity partInfo, String craftUserId) {
+
+ // 设置任务状态和时间
+ Date assignTime = null;
+ int taskStatus = 1;
+
+ if (craftUserId == null) {
+ taskStatus = 0;
+ } else {
+ assignTime = new Date();
+ }
+
+ DsTaskingEntity dsTaskingEntity = new DsTaskingEntity();
+ dsTaskingEntity.setReworkOrder(task.getRedono());
+ dsTaskingEntity.setPartId(partInfo.getId());
+ dsTaskingEntity.setPartCode(task.getPrtno());
+ dsTaskingEntity.setPartName(partInfo.getPartName());
+ dsTaskingEntity.setVersion(task.getSplcode());
+ dsTaskingEntity.setCreateTime(new Date());
+ dsTaskingEntity.setPdmWay(partInfo.getCraftWay());
+ dsTaskingEntity.setWayDetails(task.getDeptcode());
+ dsTaskingEntity.setTaskType("6");
+ dsTaskingEntity.setFinalPlating(partInfo.getPlate());
+ dsTaskingEntity.setCraftMan(craftUserId);
+ dsTaskingEntity.setAssignTime(assignTime);
+ dsTaskingEntity.setTaskStatus(taskStatus);
+ dsTaskingEntity.setSyncTime(new Date());
+ dsTaskingEntity.setOutFlag("1");
+ dsTaskingEntity.setInProduction("0");
+ dsTaskingEntity.setRemarks(task.getDetail());
+ dsTaskingEntity.setPlate(partInfo.getPlate());
+
+ save(dsTaskingEntity);
+ log.info("创建工艺任务成功: " + task.getPrtno());
+ }
+
+ private String assignCraftUser(DsReworkTaskVO task, DsPartEntity partInfo) {
+ String craftWay = partInfo.getCraftWay();
+ String craftUserId = "0";
+
+ // 检查是否是封接类零件
+ if (craftWay != null && craftWay.contains("封接")) {
+ // 获取烧结工艺员(按任务最少原则)
+ craftUserId = getSealingCraftUser();
+ } else {
+ // 其他零件类型
+ craftUserId = getPlatingCraftUser();
+
+ }
+
+ return "0".equals(craftUserId) ? null : craftUserId;
+ }
+
+ private String getPlatingCraftUser() {
+ String sql = "SELECT u.user_id FROM (" +
+ "SELECT c.user_id, MAX(COALESCE(t.assign_time, '1999-01-01 23:00:01')) as assign_time " +
+ "FROM bs_plating a " +
+ "JOIN bs_basic_class b ON a.bc_id = b.bc_id " +
+ "JOIN bs_user_right c ON b.bc_id = c.the_id " +
+ "LEFT JOIN ds_tasking t ON c.user_id = t.craft_man " +
+ "WHERE b.type = 5 AND b.deleted = 0 AND a.config_no = ? " +
+ "GROUP BY c.user_id " +
+ "ORDER BY assign_time ASC " +
+ ") u LIMIT 1";
+
+ return null;
+ }
+
+
+ private String getSealingCraftUser() {
+ String sql = "SELECT u.user_id FROM (" +
+ "SELECT c.user_id, MAX(COALESCE(t.assign_time, '1999-01-01 23:00:01')) as assign_time " +
+ "FROM bs_basic_class b " +
+ "JOIN bs_user_right c ON b.bc_id = c.the_id " +
+ "LEFT JOIN ds_tasking t ON c.user_id = t.craft_man " +
+ "WHERE b.code = 'I类' AND b.type = 5 AND b.deleted = 0 " +
+ "GROUP BY c.user_id " +
+ "ORDER BY assign_time ASC " +
+ ") u LIMIT 1";
+
+ return null;
+ }
+
+ private SyncResult syncPartData(String prtno) {
+ SyncResult result = new SyncResult();
+
+ try {
+ // 模拟同步过程
+ boolean syncSuccess = callPartSyncService(prtno);
+
+ if (syncSuccess) {
+ result.setSuccess(true);
+ result.setNote("同步成功");
+ } else {
+ result.setSuccess(false);
+ result.setNote("同步失败");
+ }
+ } catch (Exception e) {
+ result.setSuccess(false);
+ result.setNote("同步异常: " + e.getMessage());
+ }
+
+ return result;
+ }
+
+ private boolean callPartSyncService(String prtno) {
+ //todo 同步零件信息
+ return true;
+ }
+
+ private List fetchUnprocessedReworkTasks() {
+ // -- 数据源 erp
+// -- select a.redono, a.prtno, a.splcode, a.deptcode, a.detail
+// -- from dba_mgr.v_mes_rb_redo@erp_mes_link a
+// -- where a.rbmesroutstat is null;
+ return new ArrayList<>();
+ }
+
+ /**
+ * 记录同步失败日志
+ */
+ private void logDockingFailure(String partNo, String note) throws SQLException {
+ String sql = "INSERT INTO sy_docking_log(dl_id, read_type, read_result, create_time) " +
+ "VALUES(?, partNo, note, new Date())";
+ }
+
/**
* 构建工序树
@@ -468,4 +948,58 @@ public class DsTaskingServiceImpl extends BaseServiceImpl reworkBuildProcessTree(List processEntities,
+ List projectEntities,
+ List measuringToolEntities,
+ List moldToolEntities) {
+
+ // 按工序ID分组
+ Map> projectMap = projectEntities.stream()
+ .collect(Collectors.groupingBy(DsProcessProjectEntity::getProcessId));
+
+ Map> measuringToolMap = measuringToolEntities.stream()
+ .collect(Collectors.groupingBy(DsProcessMeasuringToolEntity::getProcessId));
+
+ Map> moldToolMap = moldToolEntities.stream()
+ .collect(Collectors.groupingBy(DsProcessMoldToolEntity::getProcessId));
+
+ List processTree = new ArrayList<>();
+
+
+ for (PrReworkProcessEntity process : processEntities) {
+ ProcessTreeVO processNode = new ProcessTreeVO();
+
+ // 设置工序基本信息
+ processNode.setProcessInfo(JSONObject.from(process));
+
+ Long processId = process.getId();
+
+ // 设置工装模具列表
+ List molds = moldToolMap.get(processId);
+ processNode.setMoldToolList(molds != null ?
+ molds.stream().map(JSONObject::from).collect(Collectors.toList()) :
+ new ArrayList<>());
+
+ // 设置尺寸量具列表
+ List tools = measuringToolMap.get(processId);
+ processNode.setMeasuringToolList(tools != null ?
+ tools.stream().map(JSONObject::from).collect(Collectors.toList()) :
+ new ArrayList<>());
+
+ // 设置工序项目列表
+ List projects = projectMap.get(processId);
+ processNode.setProjectList(projects != null ?
+ projects.stream().map(JSONObject::from).collect(Collectors.toList()) :
+ new ArrayList<>());
+
+ processTree.add(processNode);
+ }
+
+ return processTree;
+ }
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/PrReworkProcessServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/PrReworkProcessServiceImpl.java
new file mode 100644
index 0000000..a98bcac
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/PrReworkProcessServiceImpl.java
@@ -0,0 +1,73 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.service.impl;
+
+import org.checkerframework.checker.units.qual.A;
+import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+import org.springblade.desk.dashboard.excel.PrReworkProcessExcel;
+import org.springblade.desk.dashboard.mapper.PrReworkProcessMapper;
+import org.springblade.desk.dashboard.service.IPrReworkProcessService;
+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 java.util.List;
+
+/**
+ * 返工任务表 服务实现类
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+@Service
+public class PrReworkProcessServiceImpl extends BaseServiceImpl implements IPrReworkProcessService {
+
+ @Autowired
+ PrReworkProcessMapper reworkProcessMapper;
+
+ @Override
+ public IPage selectPrReworkProcessPage(IPage page, PrReworkProcessVO prReworkProcess) {
+ return page.setRecords(baseMapper.selectPrReworkProcessPage(page, prReworkProcess));
+ }
+
+
+ @Override
+ public List exportPrReworkProcess(Wrapper queryWrapper) {
+ List prReworkProcessList = baseMapper.exportPrReworkProcess(queryWrapper);
+ //prReworkProcessList.forEach(prReworkProcess -> {
+ // prReworkProcess.setTypeName(DictCache.getValue(DictEnum.YES_NO, PrReworkProcess.getType()));
+ //});
+ return prReworkProcessList;
+ }
+
+ @Override
+ public List selectPrReworkProcess(String reworkOrder, String partCode, String batchNo) {
+ return reworkProcessMapper.selectPrReworkProcess(reworkOrder,partCode,batchNo);
+ }
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/wrapper/PrReworkProcessWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/wrapper/PrReworkProcessWrapper.java
new file mode 100644
index 0000000..8828078
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/wrapper/PrReworkProcessWrapper.java
@@ -0,0 +1,59 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.dashboard.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
+import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
+import java.util.Objects;
+
+/**
+ * 返工任务表 包装类,返回视图层所需的字段
+ *
+ * @author BladeX
+ * @since 2025-12-03
+ */
+public class PrReworkProcessWrapper extends BaseEntityWrapper {
+
+ public static PrReworkProcessWrapper build() {
+ return new PrReworkProcessWrapper();
+ }
+
+ @Override
+ public PrReworkProcessVO entityVO(PrReworkProcessEntity prReworkProcess) {
+ PrReworkProcessVO prReworkProcessVO = Objects.requireNonNull(BeanUtil.copyProperties(prReworkProcess, PrReworkProcessVO.class));
+
+ //User createUser = UserCache.getUser(prReworkProcess.getCreateUser());
+ //User updateUser = UserCache.getUser(prReworkProcess.getUpdateUser());
+ //prReworkProcessVO.setCreateUserName(createUser.getName());
+ //prReworkProcessVO.setUpdateUserName(updateUser.getName());
+
+ return prReworkProcessVO;
+ }
+
+
+}