From ae76e79f0ba3b0a4b753e4bb3ca383744ef9b9bb Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Mon, 16 Mar 2026 15:27:36 +0800 Subject: [PATCH 01/38] =?UTF-8?q?=E7=94=B5=E5=AD=90=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=EF=BC=8C=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality/pojo/vo/InspectionTaskListVO.java | 12 ++ .../controller/BasicClazzController.java | 6 + .../basic/controller/BatConfigController.java | 5 + .../basic/controller/BsAssignController.java | 4 + .../CoatingThicknessController.java | 4 + .../controller/CraftAbilityController.java | 4 + .../basic/controller/FormulaController.java | 4 + .../LocallyPlatedPartController.java | 4 + .../controller/MaterialQuotaController.java | 4 + .../desk/basic/controller/OemController.java | 4 + .../controller/PlanAssignSteerController.java | 4 + .../basic/controller/PlatingController.java | 4 + .../controller/PlatingSmallController.java | 4 + .../controller/ProcessAbilityController.java | 4 + .../basic/controller/ProdMarkController.java | 4 + .../controller/RelTeamSetUserController.java | 4 + .../basic/controller/ShiftsController.java | 4 + .../basic/controller/TeamSetController.java | 4 + .../controller/WorkCenterController.java | 4 + .../basic/controller/WorkTankController.java | 4 + .../controller/InspectionTaskController.java | 46 ++++++-- .../controller/ProReTemplateController.java | 23 +++- .../quality/mapper/InspectionTaskMapper.java | 3 +- .../quality/mapper/InspectionTaskMapper.xml | 104 ++++++++++++++++++ .../service/IInspectionTaskService.java | 4 +- .../impl/InspectionTaskServiceImpl.java | 14 +++ .../service/impl/ReviewSheetServiceImpl.java | 31 +++++- .../desk/quality/util/RestTemplateConfig.java | 18 +++ 28 files changed, 322 insertions(+), 12 deletions(-) create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/RestTemplateConfig.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java index 3242f7d4..3db55df9 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java @@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode; import org.springblade.desk.quality.pojo.entity.InspectionTask; import java.io.Serial; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -111,4 +112,15 @@ public class InspectionTaskListVO extends InspectionTask { private String partVersion; //工单id private Long yoId; + //完成时间 + private LocalDate finishDate; + + private String currentProcessCode; + + private Long ppsId; + + private String ppsCode; + + private String ppsName; + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java index 0c612ff5..29e010b8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.CommonConstant; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; @@ -184,6 +185,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("新增基础分类") @Operation(summary = "新增一条", description = "传入BasicClazz Obj") public R save(@Valid @RequestBody BasicClazz addOne) { addOne.setId(null); @@ -195,6 +197,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/saveBat") @ApiOperationSupport(order = 31) + @ApiLog("新增基础分类") @Operation(summary = "新增批量", description = "传入BasicClazz List") public R saveBat(@Valid @RequestBody List addList) { addList.forEach(one -> { @@ -208,6 +211,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("修改基础分类") @Operation(summary = "修改一条", description = "传入BasicClazz Obj") public R update(@Valid @RequestBody BasicClazz updateOne) { return R.status(service.updateById(updateOne)); @@ -218,6 +222,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/updateBat") @ApiOperationSupport(order = 41) + @ApiLog("修改基础分类") @Operation(summary = "修改批量", description = "传入BasicClazz List") public R updateBat(@Valid @RequestBody List updateList) { return R.status(service.updateBatchById(updateList)); @@ -248,6 +253,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("删除基础分类") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BatConfigController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BatConfigController.java index 1a021cd2..4fce8693 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BatConfigController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BatConfigController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -121,6 +122,7 @@ public class BatConfigController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("新增批量配置") @Operation(summary = "新增一条", description = "传入BatConfig Obj") public R save(@Valid @RequestBody BatConfig addOne) { addOne.setId(null); @@ -145,6 +147,7 @@ public class BatConfigController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("批量配置修改") @Operation(summary = "修改一条", description = "传入BatConfig Obj") public R update(@Valid @RequestBody BatConfig updateOne) { return R.status(service.updateById(updateOne)); @@ -155,6 +158,7 @@ public class BatConfigController extends BladeController { */ @PostMapping("/updateBat") @ApiOperationSupport(order = 41) + @ApiLog("批量配置修改批量") @Operation(summary = "修改批量", description = "传入BatConfig List") public R updateBat(@Valid @RequestBody List updateList) { return R.status(service.updateBatchById(updateList)); @@ -185,6 +189,7 @@ public class BatConfigController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("批量配置逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java index a306c130..0c22152d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java @@ -39,6 +39,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -141,6 +142,7 @@ public class BsAssignController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 4) + @ApiLog("分派规则维护新增") @Operation(summary = "新增", description = "传入bsAssign") public R save(@Valid @RequestBody BsAssignEntity bsAssign) { return R.status(bsAssignService.save(bsAssign)); @@ -164,6 +166,7 @@ public class BsAssignController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 5) + @ApiLog("分派规则维护修改") @Operation(summary = "修改", description = "传入bsAssign") public R update(@Valid @RequestBody BsAssignEntity bsAssign) { @@ -282,6 +285,7 @@ public class BsAssignController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 7) + @ApiLog("分派规则维护删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(bsAssignService.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java index 4e478666..c7ed19ce 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -124,6 +125,7 @@ public class CoatingThicknessController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("镀层厚度新增") @Operation(summary = "新增一条", description = "传入CoatingThickness Obj") public R save(@Valid @RequestBody CoatingThickness addOne) { addOne.setId(null); @@ -148,6 +150,7 @@ public class CoatingThicknessController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("镀层厚度修改") @Operation(summary = "修改一条", description = "传入CoatingThickness Obj") public R update(@Valid @RequestBody CoatingThickness updateOne) { return R.status(service.updateById(updateOne)); @@ -206,6 +209,7 @@ public class CoatingThicknessController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("镀层厚度逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java index cc25241f..5f628d03 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java @@ -36,6 +36,7 @@ import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -168,6 +169,7 @@ public class CraftAbilityController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 4) + @ApiLog("工艺能力新增") @Operation(summary = "新增", description = "传入CraftAbility") public R save(@Valid @RequestBody CraftAbilityEntity craftAbility) { return R.status(craftAbilityService.save(craftAbility)); @@ -178,6 +180,7 @@ public class CraftAbilityController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 5) + @ApiLog("工艺能力修改") @Operation(summary = "修改", description = "传入CraftAbility") public R update(@Valid @RequestBody CraftAbilityEntity craftAbility) { return R.status(craftAbilityService.updateById(craftAbility)); @@ -198,6 +201,7 @@ public class CraftAbilityController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 7) + @ApiLog("工艺能力删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(craftAbilityService.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/FormulaController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/FormulaController.java index 971d9f5e..dd3972c5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/FormulaController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/FormulaController.java @@ -19,6 +19,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -118,6 +119,7 @@ public class FormulaController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("计算公式新增") @Operation(summary = "新增一条", description = "传入Formula Obj") public R save(@Valid @RequestBody Formula addOne) { addOne.setId(null); @@ -142,6 +144,7 @@ public class FormulaController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("计算公式修改") @Operation(summary = "修改一条", description = "传入Formula Obj") public R update(@Valid @RequestBody Formula updateOne) { return R.status(service.updateById(updateOne)); @@ -182,6 +185,7 @@ public class FormulaController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("计算公式删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java index 19da83f6..edfe2c75 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -124,6 +125,7 @@ public class LocallyPlatedPartController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "局部镀零件新增") @Operation(summary = "新增一条", description = "传入LocallyPlatedPart Obj") public R save(@Valid @RequestBody LocallyPlatedPart addOne) { addOne.setId(null); @@ -148,6 +150,7 @@ public class LocallyPlatedPartController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "局部镀零件修改") @Operation(summary = "修改一条", description = "传入LocallyPlatedPart Obj") public R update(@Valid @RequestBody LocallyPlatedPart updateOne) { return R.status(service.updateById(updateOne)); @@ -188,6 +191,7 @@ public class LocallyPlatedPartController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "局部镀零件逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java index 950f2826..4f51b4b5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java @@ -20,6 +20,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -134,6 +135,7 @@ public class MaterialQuotaController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "物料定额新增") @Operation(summary = "新增一条", description = "传入MaterialQuota Obj") public R save(@Valid @RequestBody MaterialQuota addOne) { addOne.setId(null); @@ -158,6 +160,7 @@ public class MaterialQuotaController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "物料定额修改") @Operation(summary = "修改一条", description = "传入MaterialQuota Obj") public R update(@Valid @RequestBody MaterialQuota updateOne) { return R.status(service.updateById(updateOne)); @@ -198,6 +201,7 @@ public class MaterialQuotaController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "物料定额逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java index f6246100..bad46d12 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -254,6 +255,7 @@ public class OemController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("新增外协厂家") @Operation(summary = "新增一条", description = "传入Oem Obj") public R save(@Valid @RequestBody Oem addOne) { addOne.setId(null); @@ -278,6 +280,7 @@ public class OemController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("修改外协厂家") @Operation(summary = "修改一条", description = "传入Oem Obj") public R update(@Valid @RequestBody Oem updateOne) { return R.status(service.updateById(updateOne)); @@ -318,6 +321,7 @@ public class OemController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("逻辑删除外协厂家") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java index c2f8736f..fd5346b0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -139,6 +140,7 @@ public class PlanAssignSteerController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "外协分派新增") @Operation(summary = "新增一条", description = "传入PlanAssignSteer Obj") public R save(@Valid @RequestBody PlanAssignSteer addOne) { addOne.setId(null); @@ -163,6 +165,7 @@ public class PlanAssignSteerController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "外协分派修改") @Operation(summary = "修改一条", description = "传入PlanAssignSteer Obj") public R update(@Valid @RequestBody PlanAssignSteer updateOne) { return R.status(service.updateById(updateOne)); @@ -203,6 +206,7 @@ public class PlanAssignSteerController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "外协分派逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java index e06f53e3..06cb365e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.CommonConstant; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -156,6 +157,7 @@ public class PlatingController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("[镀种] 新增") @Operation(summary = "新增一条", description = "传入Plating Obj") public R save(@Valid @RequestBody Plating addOne) { @@ -187,6 +189,7 @@ public class PlatingController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("[镀种] 修改") @Operation(summary = "修改一条", description = "传入Plating Obj") public R update(@Valid @RequestBody Plating updateOne) { @@ -237,6 +240,7 @@ public class PlatingController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("[镀种] 逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java index a167dc21..44ded6ad 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -136,6 +137,7 @@ public class PlatingSmallController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("镀种小类新增") @Operation(summary = "新增一条", description = "传入PlatingSmall Obj") public R save(@Valid @RequestBody PlatingSmall addOne) { addOne.setId(null); @@ -160,6 +162,7 @@ public class PlatingSmallController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("镀种小类修改") @Operation(summary = "修改一条", description = "传入PlatingSmall Obj") public R update(@Valid @RequestBody PlatingSmall updateOne) { return R.status(service.updateById(updateOne)); @@ -200,6 +203,7 @@ public class PlatingSmallController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("镀种小类逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProcessAbilityController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProcessAbilityController.java index 233e8d10..7a79dc8e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProcessAbilityController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProcessAbilityController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -120,6 +121,7 @@ public class ProcessAbilityController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("工艺能力新增") @Operation(summary = "新增一条", description = "传入ProcessAbility Obj") public R save(@Valid @RequestBody ProcessAbility addOne) { addOne.setId(null); @@ -144,6 +146,7 @@ public class ProcessAbilityController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("工艺能力修改") @Operation(summary = "修改一条", description = "传入ProcessAbility Obj") public R update(@Valid @RequestBody ProcessAbility updateOne) { return R.status(service.updateById(updateOne)); @@ -184,6 +187,7 @@ public class ProcessAbilityController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("工艺能力逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java index f4750d5e..e65cef9c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -145,6 +146,7 @@ public class ProdMarkController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "生产标识新增") @Operation(summary = "新增一条", description = "传入ProdMark Obj") public R save(@Valid @RequestBody ProdMark addOne) { addOne.setId(null); @@ -169,6 +171,7 @@ public class ProdMarkController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "生产标识修改") @Operation(summary = "修改一条", description = "传入ProdMark Obj") public R update(@Valid @RequestBody ProdMark updateOne) { return R.status(service.updateById(updateOne)); @@ -209,6 +212,7 @@ public class ProdMarkController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "生产标识逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java index e89a38ca..25268d76 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -121,6 +122,7 @@ public class RelTeamSetUserController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("班组用户关联新增") @Operation(summary = "新增一条", description = "传入RelTeamSetUser Obj") public R save(@Valid @RequestBody RelTeamSetUser addOne) { addOne.setId(null); @@ -145,6 +147,7 @@ public class RelTeamSetUserController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("班组用户关联修改") @Operation(summary = "修改一条", description = "传入RelTeamSetUser Obj") public R update(@Valid @RequestBody RelTeamSetUser updateOne) { return R.status(service.updateById(updateOne)); @@ -185,6 +188,7 @@ public class RelTeamSetUserController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("班组用户关联逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ShiftsController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ShiftsController.java index 4e9c9883..e67509fb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ShiftsController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ShiftsController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -124,6 +125,7 @@ public class ShiftsController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "班次新增一条") @Operation(summary = "新增一条", description = "传入Shifts Obj") public R save(@Valid @RequestBody Shifts addOne) { addOne.setId(null); @@ -148,6 +150,7 @@ public class ShiftsController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "班次修改一条") @Operation(summary = "修改一条", description = "传入Shifts Obj") public R update(@Valid @RequestBody Shifts updateOne) { return R.status(service.updateById(updateOne)); @@ -188,6 +191,7 @@ public class ShiftsController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "班次逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java index 6296b9de..aafbfbc0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -354,6 +355,7 @@ public class TeamSetController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("班组新增") @Operation(summary = "新增一条", description = "传入TeamSet Obj") public R save(@Valid @RequestBody TeamSet addOne) { addOne.setId(null); @@ -382,6 +384,7 @@ public class TeamSetController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("班组修改") @Operation(summary = "修改一条", description = "传入TeamSet Obj") public R update(@Valid @RequestBody TeamSet updateOne) { R user= iUserClient.userInfoById(updateOne.getDispatcher()); @@ -429,6 +432,7 @@ public class TeamSetController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("班组逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java index 7ddcc65a..7e18319e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -155,6 +156,7 @@ public class WorkCenterController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("作业中心新增") @Operation(summary = "新增一条", description = "传入WorkCenter Obj") public R save(@Valid @RequestBody WorkCenter addOne) { addOne.setId(null); @@ -349,6 +351,7 @@ public class WorkCenterController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("作业中心修改") @Operation(summary = "修改一条", description = "传入WorkCenter Obj") public R update(@Valid @RequestBody WorkCenter updateOne) { return R.status(service.updateById(updateOne)); @@ -389,6 +392,7 @@ public class WorkCenterController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("作业中心逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java index bf6d3cf3..ee607a8f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -143,6 +144,7 @@ public class WorkTankController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("作业槽新增") @Operation(summary = "新增一条", description = "传入WorkTank Obj") public R save(@Valid @RequestBody WorkTank addOne) { @@ -175,6 +177,7 @@ public class WorkTankController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("作业槽修改") @Operation(summary = "修改一条", description = "传入WorkTank Obj") public R update(@Valid @RequestBody WorkTank updateOne) { @@ -227,6 +230,7 @@ public class WorkTankController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("作业槽逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java index 8c4fe767..43139168 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java @@ -87,6 +87,14 @@ public class InspectionTaskController extends BladeController { private IWorkPlanService workPlanService; @Resource private IMacToolUseService macToolUseService; + @Resource + IDsPartRelationService dsPartRelationService; + @Resource + IDsPartVersionService dsPartVersionService; + @Resource + IDsPartService dsPartService; + @Resource + private IYieldOrderService yieldOrderService; /** * [检验任务] 详情 */ @@ -150,6 +158,35 @@ public class InspectionTaskController extends BladeController { return R.data(pagesVO); } + @GetMapping("/queryWorkOrder") + @ApiOperationSupport(order = 2) + @Operation(summary = "分页", description = "传入inspectionTask") + public R> queryWorkOrder(InspectionTaskSearch search,Query query) { + log.info("search = {}", search); + log.info("query = {}", query); + log.info("getUserRole = {}", AuthUtil.getUserRole()); + // 热表 烧结 检验员 数据区分。 + if (RoleUtil.hasRole(roleConfig.getRbCheckerAlias())) { + search.setFromType(InspectionTaskConst.FROM_TYPE_RB); + } + if (RoleUtil.hasRole(roleConfig.getSjCheckerAlias())) { + search.setFromType(InspectionTaskConst.FROM_TYPE_SJ); + } + if (RoleUtil.hasAllRole(roleConfig.getRbCheckerAlias(), roleConfig.getSjCheckerAlias())) { + search.setFromType(null); + } + IPage pagesVO = service.queryWorkOrder(Condition.getPage(query), search); + return R.data(pagesVO); + } + + @GetMapping("/correspondingProcess") + @ApiOperationSupport(order = 2) + @Operation(summary = "分页", description = "传入inspectionTask") + public R> correspondingProcess(Long woId) { + List pagesVO = service.correspondingProcess(woId); + return R.data(pagesVO); + } + /** * [检验任务] 自定义分页 */ @@ -358,14 +395,7 @@ public class InspectionTaskController extends BladeController { return R.data(list); } - @Resource - IDsPartRelationService dsPartRelationService; - @Resource - IDsPartVersionService dsPartVersionService; - @Resource - IDsPartService dsPartService; - @Resource - private IYieldOrderService yieldOrderService; + @GetMapping("/toQaRecord") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java index a9c53265..76afca89 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java @@ -124,8 +124,18 @@ public class ProReTemplateController extends BladeController { @ApiOperationSupport(order = 30) @Operation(summary = "新增一条", description = "传入ProReTemplate Obj") public R save(@Valid @RequestBody ProReTemplate addOne) { + + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("WC_ID",addOne.getWcId()); + qw.eq("PPS_ID",addOne.getPpsId()); + qw.eq("APPROVAL_STATUS",2); + List list = service.list(qw); + if(null != list && list.size() > 0){ + return R.fail("存在对应作业中心-工序配置"); + } + addOne.setStatus(ProReTemplateConst.STATUS_NEW); - addOne.setApprovalStatus(ProReTemplateConst.APPROVAL_STATUS_1); +// addOne.setApprovalStatus(ProReTemplateConst.APPROVAL_STATUS_1); addOne.setId(null); return R.status(service.save(addOne)); } @@ -152,6 +162,17 @@ public class ProReTemplateController extends BladeController { @ApiOperationSupport(order = 40) @Operation(summary = "修改一条", description = "传入ProReTemplate Obj") public R update(@Valid @RequestBody ProReTemplate updateOne) { + + + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("WC_ID",updateOne.getWcId()); + qw.eq("PPS_ID",updateOne.getPpsId()); + qw.eq("APPROVAL_STATUS",2); + qw.ne("ID",updateOne.getId()); + List list = service.list(qw); + if(null != list && list.size() > 0){ + return R.fail("存在对应作业中心-工序配置"); + } return R.status(service.updateById(updateOne)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.java index caf7a273..7f5b5e9d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.java @@ -39,6 +39,7 @@ public interface InspectionTaskMapper extends BaseMapper { * @return List */ List exportInspectionTask(@Param("ew") Wrapper queryWrapper); - + List queryWorkOrder(IPage page, @Param("q") InspectionTaskSearch search); + List correspondingProcess(@Param("woId") Long woId); List listSearch(IPage page, @Param("q") InspectionTaskSearch search); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml index 1408a1d9..b78a14be 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml @@ -235,4 +235,108 @@ -- oem ORDER BY t.ID DESC + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java index 67b642db..710dd274 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java @@ -7,6 +7,7 @@ package org.springblade.desk.quality.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Parameter; +import org.apache.ibatis.annotations.Param; import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; @@ -112,7 +113,8 @@ public interface IInspectionTaskService extends BaseService { public R fill(InspectionTaskDetailVO detailVO); IPage listSearch(IPage page, InspectionTaskSearch search); - + IPage queryWorkOrder(IPage page, InspectionTaskSearch search); + List correspondingProcess(Long woId); R getSamePlace(Long id); R sameResultCopy(Long sourceId, Long targetId); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java index b71a668d..071eb737 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java @@ -337,6 +337,20 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl queryWorkOrder(IPage page, InspectionTaskSearch search) { + List listVO = baseMapper.queryWorkOrder(page, search); + for (InspectionTaskListVO oneVO : listVO) { + setListVOValue(oneVO); + } + return page.setRecords(listVO); + } + + @Override + public List correspondingProcess(Long woId) { + return baseMapper.correspondingProcess(woId); + } + @Override public R getSamePlace(Long id) { // LambdaQueryWrapper qw = Wrappers.lambdaQuery(); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java index f8d61b80..446d78ae 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java @@ -50,12 +50,16 @@ import org.springblade.system.feign.IDictClient; import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.UserInfo; +import org.springframework.http.HttpEntity; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; - +import org.springframework.web.client.RestTemplate; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; /** * [生产处置单] 服务实现类 * @@ -83,6 +87,8 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl selectReviewSheetPage(IPage page, ReviewSheetDetailVO reviewSheet) { @@ -372,6 +378,29 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl entity = new HttpEntity<>(obj, headers); +// ResponseEntity responseEntity; +// JSONObject responseBody; +// try { +// responseEntity = httpClientTemplate.postForEntity("http://192.168.119.68:10113" + +// "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class); +// JSONObject result = responseEntity.getBody(); +// +// responseBody = result.getJSONObject("responseBody"); +// if (responseBody == null) { +// throw new BusinessException("审理单,接口返回值null"); +// } +// } catch (Exception e) { +// throw new RuntimeException("审理单,接口返回值null"); +// } +// } return R.success("成功"); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/RestTemplateConfig.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/RestTemplateConfig.java new file mode 100644 index 00000000..105c36f5 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/RestTemplateConfig.java @@ -0,0 +1,18 @@ +package org.springblade.desk.quality.util; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + /** + * 声明 RestTemplate Bean,供其他类注入使用 + * @return RestTemplate 实例 + */ + @Bean("httpClientTemplate") // Bean 名称和你注入的名称保持一致(httpClientTemplate) + public RestTemplate restTemplate() { + // 创建并返回 RestTemplate 实例 + return new RestTemplate(); + } +} From 08af3ccff69148f7ea34479e7e038cd9a0378a8c Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Mon, 16 Mar 2026 17:48:49 +0800 Subject: [PATCH 02/38] =?UTF-8?q?=E7=94=B5=E5=AD=90=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=EF=BC=8C=E7=83=AD=E8=A1=A8=E6=89=93=E5=8D=B0=E6=9C=AA=E5=86=99?= =?UTF-8?q?=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/pojo/entity/WorkPlan.java | 5 + .../pojo/vo/ProduceMonitorSlotListVO.java | 1 + .../desk/produce/mapper/WorkPlanMapper.java | 11 ++ .../desk/produce/mapper/WorkPlanMapper.xml | 64 +++++++++ .../controller/InspectionTaskController.java | 13 ++ .../service/IInspectionTaskService.java | 3 +- .../impl/InspectionTaskServiceImpl.java | 128 ++++++++++++++++++ 7 files changed, 224 insertions(+), 1 deletion(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java index fc12a2b6..779d4113 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.entity.WorkPlanItem; @@ -289,5 +290,9 @@ public class WorkPlan extends BaseEntity { @Schema(description = "返工工艺Id") @TableField(exist = false) public Long rpId; + @TableField(exist = false) + private List slotList; + @TableField(exist = false) + private List prList; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java index 4541235e..6e725a2c 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java @@ -28,6 +28,7 @@ public class ProduceMonitorSlotListVO { @Schema(description = "数量") private String qua; private String poQty; + private String workQty; @Schema(description = "生产标识") private String prodIdent; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java index b044cdbe..9bad4fab 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java @@ -2,7 +2,10 @@ package org.springblade.desk.produce.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.springblade.desk.produce.pojo.entity.MacToolUse; +import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; import org.springblade.desk.produce.pojo.entity.WorkPlan; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO; import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO; import org.springblade.scheduling.pojo.entity.WorkPlanEntity; @@ -33,4 +36,12 @@ public interface WorkPlanMapper extends BaseMapper { WorkPlan findMaxHostWorkUnitByWoId(Long id, int i); List afterPlaReceive(String cardNo); + + List listPrByWpId(Long wpId); + + MesQcProduceRunEntity getBoxInfo(Long wpId); + + List listSlotInfoGr (Long wpId, Boolean aTrue); + List listSlotInfo (Long wpId,Boolean aTrue); + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml index 68077afa..ab11ce2b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml @@ -57,6 +57,70 @@ where is_deleted = 0 + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml index 8ae13313..df6619f2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml @@ -9,7 +9,7 @@ WC_ID, GOODS_CODE, GOODS_DEMAND, SILVER_POTASSIUM, COEFFICIENT, APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, DECLARED_QUOTA, DECLARED_SILVER, DECLARED_STATUS, GOODS_BO_ID, COEFFICIENT_BO_ID, PGR_CODE, SURPLUS, SILVER_POTASSIUM_RESIDUE, DEMAND_CODE, INVOLVING_RECORD_CODE, - NOT_ADD_VAL, DETAIL_ORDER_NUM + NOT_ADD_VAL SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED, - YO_ID, CRAFT_NO, PROCESS_NO, PPS_ID, MAKE_MEMO, HOUR_QUOTA, PID, START_TIME, END_TIME, MAKE_TEAM, OC_ID, - CA_ID, RP_ID, WORK_CENTER_ID + YO_ID, CRAFT_NO, PROCESS_NO, PPS_ID, MAKE_MEMO, HOUR_QUOTA, PID, START_TIME, END_TIME, MAKE_TEAM, + OC_ID, CA_ID, RP_ID, WORK_CENTER_ID, IS_OUTSOURCE, PROCESS_CODE, PROCESS_NAME FROM MES_YIELD_ORDER_CRAFT WHERE IS_DELETED = 0 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java index 0629c0d4..d2febd8d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.order.pojo.entity.MoldApply; +import java.util.Date; import java.util.List; /** @@ -46,4 +47,28 @@ public interface IMoldApplyService extends BaseService { * @return */ boolean saveBatchByPage(List applyList); + + /** + * 下达模具计划 + * + * @param partCode + * @param moCode + * @param planType + * @param quantity + * @param needDate + * @param level + * @param keeper + * @param createMan + * @param memo + * @return + */ + String createMoldPlan(String partCode, + String moCode, + String planType, + Integer quantity, + Date needDate, + String level, + String keeper, + String createMan, + String memo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java index fe589c31..c0476702 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.validation.constraints.NotEmpty; import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.pojo.entity.YieldPlan; import java.util.List; @@ -54,6 +56,15 @@ public interface IYieldOrderService extends BaseService { */ IPage pageMaterialApply(IPage page, Long wcId, Integer materialType, Integer overHalfMon); + /** + * 查询是否存在玻璃饼生产订单 + * + * @param partCode + * @param memo + * @return + */ + List findByPartCodeAndMemo(String partCode, String memo); + /** * 数据校验 * @@ -212,7 +223,26 @@ public interface IYieldOrderService extends BaseService { * @param cardNo 旧单号 * @return java.lang.String */ - String getNewCardNo(String cardNo); + String getNewCardNo(String cardNo); + + Long getWcId(Long orderId); + + /** + * 下达玻璃饼生产订单 + * + * @param yieldPlan + * @param dsPart + */ + void saveGlassCake(YieldPlan yieldPlan, DsPartEntity dsPart); - Long getWcId(Long orderId); + /** + * 下达玻璃饼生产订单 - 调用ERP存储过程 + * + * @param yoCode + * @param cardNo + * @param batchNo + * @param po + * @param dsPartSub + */ + void saveGlassCake(String yoCode, String cardNo, String batchNo, YieldPlan po, DsPartEntity dsPartSub); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java index f35808bc..6c50e32e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java @@ -48,6 +48,22 @@ public interface IYieldPlanService extends BaseService { */ List getFirstProcess(String partCode); + /** + * 保存生产计划 + * + * @param yieldPlan + * @return + */ + Boolean saveYieldPlan(YieldPlan yieldPlan); + + /** + * 根据生产计划生成玻璃饼订单 + * + * @param yieldPlan + * @return + */ + Boolean saveGlassCake(YieldPlan yieldPlan); + /** * 根据生产计划ID生成玻璃饼订单 * diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java index 66de4376..bfb8b891 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java @@ -11,6 +11,7 @@ import org.springblade.desk.order.pojo.enums.MoldApplyEnum; import org.springblade.desk.order.service.IMoldApplyService; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; /** @@ -51,4 +52,38 @@ public class MoldApplyServiceImpl extends BaseServiceImpl findByPartCodeAndMemo(String partCode, String memo) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(YieldOrder.class) + .eq(YieldOrder::getIsDeleted, CommonConstant.DELETE_FALSE) + .eq(YieldOrder::getPartCode, partCode) + .eq(YieldOrder::getMemo, memo); + List yieldOrderList = baseMapper.selectList(queryWrapper); + return yieldOrderList; + } + @Override public String dataVerify(List ids) { // 先根据ID查询订单列表 @@ -725,6 +739,20 @@ public class YieldOrderServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getCardNo, codePattern); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(YieldOrder.class) + .eq(YieldOrder::getCardNo, codePattern); YieldOrder yieldOrder = baseMapper.selectOne(wrapper); if (yieldOrder != null && yieldOrder.getId() != null) { @@ -865,23 +894,54 @@ public class YieldOrderServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaQuery(YieldOrder.class) + .likeRight(YieldOrder::getBatchNo, codePattern) + .orderBy(true, false, YieldOrder::getYoCode); + YieldOrder yieldOrder = baseMapper.selectOne(wrapper); + + if (yieldOrder != null) { + num = Integer.parseInt(yieldOrder.getBatchNo().substring(codePattern.length(), codePattern.length() + len)); + } + num++; + return num; + } private String nextBatchNo() { // 自增总长度 int len = 3; - // 自增值 - int num = 0; // 编码模式 String codePattern = "R" + DateUtil.today(); + int num = this.getMaxCodeByPattern(codePattern, len); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(YieldOrder.class).likeRight(YieldOrder::getBatchNo, codePattern).orderBy(true, false, YieldOrder::getYoCode); - YieldOrder yieldOrder = baseMapper.selectOne(wrapper); + // 下个编码 + return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len); + } - if (yieldOrder != null) { - num = Integer.parseInt(yieldOrder.getBatchNo().substring(codePattern.length(), codePattern.length() + len)); + /** + * @param codeType 0:订单号、1:流程卡号;2、批次号 + * @return String + * @Description: 用于给玻璃饼产生对应的订单号、 流程卡号、批次号 + * @Author dxl + * @CreateTime 2023/10/12 16:03 + */ + private String nextBlbCode(int codeType) { + // 自增总长度 + int len = 5; + if (codeType == 2) { + len = 3; } - num++; + + // 编码模式 + String codePattern = "RB" + DateUtil.today(); + int num = this.getMaxCodeByPattern(codePattern, len); + // 下个编码 + if (codeType == 0) { + codePattern = "WO-B" + DateUtil.today(); + } return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java index 5238b84f..03ae5cef 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java @@ -11,7 +11,9 @@ import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.ResultCode; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.desk.dashboard.constant.DsPartConst; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.service.IDsPartService; import org.springblade.desk.order.mapper.YieldPlanMapper; @@ -100,25 +102,43 @@ public class YieldPlanServiceImpl extends BaseServiceImpl glassCakePartList = dsPartService.selectDsPartByPatCode(yieldPlan.getPartCode(), DsPartConst.SIN_TER_TYPE_BLB); + if (glassCakePartList != null && glassCakePartList.size() > 0) { + for (DsPartEntity dsPart : glassCakePartList) { + //不包含玻璃字样的代表维护错误,跳过 + if (StringUtils.isBlank(dsPart.getPartCode()) || StringUtils.isBlank(dsPart.getPartName()) || !dsPart.getPartName().contains("玻璃")) { + continue; + } + List glassCakeOrderList = yieldOrderService.findByPartCodeAndMemo(dsPart.getPartCode(), yieldPlan.getYpCode()); + if (glassCakeOrderList == null || glassCakeOrderList.size() == 0) { + yieldOrderService.saveGlassCake(yieldPlan, dsPart); + } + } + } + return true; + } + @Override public Boolean saveGlassCake(String yieldPlanId) { // 根据ID查询生产计划信息 YieldPlan yieldPlan = baseMapper.selectById(yieldPlanId); - //TODO 调用生产订单服务类中方法,生成玻璃饼订单并保存 -// List blbSubList = dsPartSubService.listByPartCode(yieldPlan.getPartCode(), DsPartSub.SIN_TER_TYPE_BLB); -// if (blbSubList != null && blbSubList.size() > 0) { -// List blbList = null; -// for (DsPartSub dps : blbSubList) { -// //不包含玻璃字样的代表维护错误,跳过 -// if (StringUtils.isBlank(dps.getSubCode()) || StringUtils.isBlank(dps.getSubName()) || !dps.getSubName().contains("玻璃")) { -// continue; -// } -// blbList = pjYieldOrderService.findByPartCodeAndMemo(dps.getSubCode(), yieldPlan.getYpCode()); -// if (blbList == null || blbList.size() == 0) { -// pjYieldOrderService.saveBlbOrder(po, dps); -// } -// } -// } + + this.saveGlassCake(yieldPlan); return true; } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java new file mode 100644 index 00000000..7a08f72d --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java @@ -0,0 +1,31 @@ +package org.springblade.erpdata.feign; + + +import io.swagger.v3.oas.annotations.Hidden; +import lombok.AllArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.erpdata.service.IErpYieldOrderService; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + + +/** + * 外协相关erp操作Feign实现类 + * + * @author qyl + * @serial 2026年2月27日 + */ +@NonDS +@Hidden +@RestController +@AllArgsConstructor +public class ErpYieldOrderClientImpl implements IErpYieldOrderClient { + + private final IErpYieldOrderService erpYieldOrderService; + + @Override + public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, String planUser, String ypCode, Long poQty, String partCode, Double quota) { + erpYieldOrderService.saveGlassCake(yoCode, cardNo, batchNo, prodIdent, demandDate, planUser, ypCode, poQty, partCode, quota); + } +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java new file mode 100644 index 00000000..f95b3b93 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java @@ -0,0 +1,21 @@ +package org.springblade.erpdata.mapper; + +import com.baomidou.mybatisplus.core.mapper.Mapper; + +import java.util.Map; + +/** + * Mapper 接口 + * + * @author qyl + */ +public interface ErpYieldOrderMapper extends Mapper { + + /** + * 生成玻璃饼订单 + * + * @param params + */ + void saveGlassCake(Map params); + +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml new file mode 100644 index 00000000..b7dd5a24 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java new file mode 100644 index 00000000..9f64dc76 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java @@ -0,0 +1,29 @@ +package org.springblade.erpdata.service; + +import java.util.Date; + +/** + * 外协相关erp操作service + * + * @author qyl + * @serial 2026年2月27日 + */ +public interface IErpYieldOrderService { + + /** + * 生成玻璃饼订单 + * + * @param yoCode + * @param cardNo + * @param batchNo + * @param prodIdent + * @param demandDate + * @param planUser + * @param ypCode + * @param poQty + * @param partCode + * @param quota + */ + void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, + String planUser, String ypCode, Long poQty, String partCode, Double quota); +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java new file mode 100644 index 00000000..720c1572 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java @@ -0,0 +1,58 @@ +package org.springblade.erpdata.service.impl; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.erpdata.mapper.ErpYieldOrderMapper; +import org.springblade.erpdata.service.IErpYieldOrderService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + + +/** + * 外协相关erp操作service实现类 + * + * @author qtl + * @serial 2026年2月27日 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class ErpYieldOrderServiceImpl implements IErpYieldOrderService { + + private final ErpYieldOrderMapper yieldOrderMapper; + + + @Override + public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, + String planUser, String ypCode, Long poQty, String partCode, Double quota) { + Map paramMap = new HashMap<>(); + // 1. 赋值静态入参 + paramMap.put("v_work_roam", ""); + paramMap.put("v_next_roam", ""); + paramMap.put("v_po_code", ""); + paramMap.put("v_use_dept", "热表分厂"); + paramMap.put("v_release_date", new Date()); + paramMap.put("v_yield_type", (short) 3); + paramMap.put("v_warctlr", ""); + paramMap.put("v_entrust_dept", "热表分厂"); + paramMap.put("v_recseqno", ""); + paramMap.put("v_manual_increase", Short.valueOf("1")); + paramMap.put("v_lev_flag", "0"); + paramMap.put("v_use_deptcode", ""); + + // 2. 赋值动态入参 + paramMap.put("v_yo_code", yoCode); + paramMap.put("v_part_code", partCode); + paramMap.put("v_prod_ident", prodIdent); + paramMap.put("v_demand_date", demandDate); + paramMap.put("v_plan_user", planUser); + paramMap.put("v_memo", ypCode); + paramMap.put("v_card_no", cardNo); + paramMap.put("v_batch_no", batchNo); + paramMap.put("v_yo_qty", quota * poQty); + yieldOrderMapper.saveGlassCake(paramMap); + } +} diff --git a/doc/sql/mes/increase-20690312.sql b/doc/sql/mes/increase-20690312.sql new file mode 100644 index 00000000..29aaaca2 --- /dev/null +++ b/doc/sql/mes/increase-20690312.sql @@ -0,0 +1,122 @@ +ALTER TABLE mes_yield_order_craft + ADD process_code NVARCHAR2(255) NULL; +COMMENT ON COLUMN mes_yield_order_craft.process_code IS '工序编码- 工序冗余字段'; +ALTER TABLE mes_yield_order_craft + ADD process_name NVARCHAR2(255) NULL; +COMMENT ON COLUMN mes_yield_order_craft.process_name IS '工序名称- 工序冗余字段'; +COMMENT ON COLUMN mes_yield_order_craft.process_no IS '工序排序序号- 工序冗余字段'; + +DROP TABLE "MES_PLATE_GOODS_APPLY_DETAIL"; +CREATE TABLE "MES_PLATE_GOODS_APPLY_DETAIL" +( + "ID" NUMBER(20, 0) NOT NULL, + "TENANT_ID" NVARCHAR2(12), + "CREATE_USER" NUMBER(20, 0), + "CREATE_TIME" DATE, + "CREATE_DEPT" NUMBER(20, 0), + "UPDATE_USER" NUMBER(20, 0), + "UPDATE_TIME" DATE, + "STATUS" NUMBER(11, 0) NOT NULL, + "IS_DELETED" NUMBER(11, 0), + "PGA_ID" NUMBER(20, 0), + "PGR_ID" NUMBER(20, 0) +) LOGGING NOCOMPRESS PCTFREE 10 INITRANS 1 STORAGE +( + BUFFER_POOL DEFAULT +) PARALLEL 1 NOCACHE DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."ID" IS '主键'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."CREATE_USER" IS '创建人'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."CREATE_DEPT" IS '创建部门'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."UPDATE_USER" IS '更新人'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."STATUS" IS '状态'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."IS_DELETED" IS '删除标记'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."PGA_ID" IS '添加量申报ID'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."PGR_ID" IS '镀层物料需求ID'; +COMMENT ON TABLE "MES_PLATE_GOODS_APPLY_DETAIL" IS '烧结模具计划-申报'; + +-- ---------------------------- +-- Checks structure for table MES_PLATE_GOODS_APPLY_DETAIL +-- ---------------------------- +ALTER TABLE "MES_PLATE_GOODS_APPLY_DETAIL" + ADD CONSTRAINT "SYS_C0021890" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MES_PLATE_GOODS_APPLY_DETAIL" + ADD CONSTRAINT "SYS_C0021891" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +DROP TABLE "MES_PLATE_GOODS_APPLY"; +CREATE TABLE "MES_PLATE_GOODS_APPLY" +( + "ID" NUMBER(20, 0) NOT NULL, + "TENANT_ID" NVARCHAR2(12), + "CREATE_USER" NUMBER(20, 0), + "CREATE_TIME" DATE, + "CREATE_DEPT" NUMBER(20, 0), + "UPDATE_USER" NUMBER(20, 0), + "UPDATE_TIME" DATE, + "STATUS" NUMBER(11, 0) NOT NULL, + "IS_DELETED" NUMBER(11, 0) DEFAULT 0, + "APPROVAL_MAN" NUMBER(20, 0), + "APPROVAL_TIME" DATE, + "APPROVAL_STATUS" NUMBER(20, 0), + "APPROVAL_MEMO" NVARCHAR2(255), + "WC_ID" NUMBER(20, 0) NOT NULL, + "GOODS_CODE" NVARCHAR2(255) NOT NULL, + "GOODS_DEMAND" NUMBER(20, 10) DEFAULT 0 NOT NULL, + "GOODS_NAME" VARCHAR2(100 BYTE), + "GOODS_ADD_TOTAL" NUMBER(20, 10), + "GOODS_DEMAND_TOTAL" NUMBER(20, 10), + "DECLARED_QUOTA_TOTAL" NUMBER(20, 10), + "APPLY_CODE" VARCHAR2(100 BYTE) +) LOGGING NOCOMPRESS PCTFREE 10 INITRANS 1 STORAGE +( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) PARALLEL 1 NOCACHE DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."ID" IS '主键'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."TENANT_ID" IS '租户ID'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."CREATE_USER" IS '创建人'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."CREATE_DEPT" IS '创建部门'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."UPDATE_USER" IS '修改人'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."UPDATE_TIME" IS '修改时间'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."STATUS" IS '状态'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."IS_DELETED" IS '是否已删除'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPROVAL_MAN" IS '审批人'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPROVAL_TIME" IS '审批时间'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPROVAL_STATUS" IS '审批状态'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPROVAL_MEMO" IS '审批结果'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."WC_ID" IS '作业中心'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_CODE" IS '镀层物料'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_DEMAND" IS '物料需求定额'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_NAME" IS '镀层物料名称'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_ADD_TOTAL" IS '本次申报添加量'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_DEMAND_TOTAL" IS '本次申报物料需求单总物料需求剩余量'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."DECLARED_QUOTA_TOTAL" IS '本次申报物料需求单已申报定额总量'; +COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPLY_CODE" IS '申报单号'; +COMMENT ON TABLE "MES_PLATE_GOODS_APPLY" IS '镀层物料申报添加量'; + +-- ---------------------------- +-- Primary Key structure for table MES_PLATE_GOODS_APPLY +-- ---------------------------- +ALTER TABLE "MES_PLATE_GOODS_APPLY" + ADD CONSTRAINT "SYS_C0021902" PRIMARY KEY ("ID"); + +-- ---------------------------- +-- Checks structure for table MES_PLATE_GOODS_APPLY +-- ---------------------------- +ALTER TABLE "MES_PLATE_GOODS_APPLY" + ADD CONSTRAINT "SYS_C0021892" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MES_PLATE_GOODS_APPLY" + ADD CONSTRAINT "SYS_C0021893" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MES_PLATE_GOODS_APPLY" + ADD CONSTRAINT "SYS_C0021894" CHECK ("WC_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MES_PLATE_GOODS_APPLY" + ADD CONSTRAINT "SYS_C0021895" CHECK ("GOODS_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MES_PLATE_GOODS_APPLY" + ADD CONSTRAINT "SYS_C0021896" CHECK ("GOODS_DEMAND" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; diff --git a/doc/sql/mes/increase-260120.sql b/doc/sql/mes/increase-260120.sql index a681acb9..59456872 100644 --- a/doc/sql/mes/increase-260120.sql +++ b/doc/sql/mes/increase-260120.sql @@ -56,13 +56,6 @@ ALTER TABLE mes_plate_goods_record ALTER TABLE mes_plate_goods_record_detail MODIFY pgrd_id NUMBER(20, 0); -ALTER TABLE mes_plate_goods_record - ADD involving_record_code VARCHAR2(255) NULL; -COMMENT ON COLUMN mes_plate_goods_record.involving_record_code IS '本次添加涉及单号'; -ALTER TABLE mes_plate_goods_record - ADD detail_order_num NUMBER(8, 0) NULL; -COMMENT ON COLUMN mes_plate_goods_record.detail_order_num IS '本次关联订单数量'; - ALTER TABLE mes_assay_content_detail ADD add_val NUMBER(20, 10) NULL; COMMENT ON COLUMN mes_assay_content_detail.add_val IS '添加量值'; @@ -350,9 +343,6 @@ COMMENT ON COLUMN mes_plate_goods_apply.coefficient_bo_id IS '银钾采购id'; COMMENT ON COLUMN mes_plate_goods_apply.surplus IS '剩余量'; COMMENT ON COLUMN mes_plate_goods_apply.silver_potassium_residue IS '上报银钾剩余量'; COMMENT ON COLUMN mes_plate_goods_apply.demand_code IS '需求单号'; -COMMENT ON COLUMN mes_plate_goods_apply.involving_record_code IS '本次添加涉及单号'; -COMMENT ON COLUMN mes_plate_goods_apply.not_add_val IS '本次剩余单号余量'; -COMMENT ON COLUMN mes_plate_goods_apply.detail_order_num IS '本次关联订单数量'; ALTER TABLE MES_PLATE_GOODS_APPLY ADD GOODS_NAME VARCHAR2(100) NULL; COMMENT ON COLUMN MES_PLATE_GOODS_APPLY.GOODS_NAME IS '镀层物料名称'; From 49c93b1da24e0f4d4a77fd8a3e6cc95375596417 Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Tue, 17 Mar 2026 09:42:50 +0800 Subject: [PATCH 05/38] =?UTF-8?q?desk=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/mapper/WorkPlanMapper.java | 1 + .../impl/InspectionTaskServiceImpl.java | 25 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java index 9bad4fab..4835b9c3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java @@ -43,5 +43,6 @@ public interface WorkPlanMapper extends BaseMapper { List listSlotInfoGr (Long wpId, Boolean aTrue); List listSlotInfo (Long wpId,Boolean aTrue); + List listMacToolUse(Long wpId,Boolean aTrue); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java index 6d94ea2f..7d2db8ff 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java @@ -35,6 +35,7 @@ import org.springblade.desk.dashboard.service.IDsPartService; import org.springblade.desk.order.mapper.YieldOrderMapper; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.service.IYieldOrderService; +import org.springblade.desk.produce.mapper.WorkOrderMapper; import org.springblade.desk.produce.mapper.WorkPlanMapper; import org.springblade.desk.produce.pojo.entity.MacToolUse; import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; @@ -104,8 +105,11 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl qwpart = new QueryWrapper<>(); qwpart.eq("PART_CODE", pjYieldOrder.getPartCode()); @@ -446,7 +451,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl wpList, JSONObject jsonObj, List modelFlag) { @@ -498,7 +503,19 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl mtuList = workPlanMapper.listMacToolUse(workPlan.getWpId(), Boolean.FALSE); +// if (mtuList.size() > 0) { +// // 设备编号 +// String gj = StringUtils.join(mtuList.stream().filter(i -> i.getBsRackSet() != null).map(i -> i.getBsRackSet().getRsCode()).collect(Collectors.toList()), "'、'"); +// String fb = StringUtils.join(mtuList.stream().filter(i -> i.getBsFeiBaSet() != null).map(i -> i.getBsFeiBaSet().getFsCode()).collect(Collectors.toList()), "、"); +// String eq = StringUtils.join(mtuList.stream().filter(i -> i.getEquipmentCard() != null).map(i -> i.getEquipmentCard().getDeviceCode()).collect(Collectors.toList()), "、"); +// workPlan.setGjCode(gj); +// workPlan.setFbCode(fb); +// //zxh 20250107 电子档案工序设备编号不再拼接烘箱,eq中已存在烘箱 +//// workPlan.setDeviceCode(box != null && box.getDeviceId() != null ? eq + "、" + box.getDeviceId() : eq); +// workPlan.setDeviceCode(eq); +// } } From 7c60798dc85cdc4f63e6ff782df8e307438af13f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=ABUmbrella?= <2539020564@qq.com> Date: Tue, 17 Mar 2026 10:18:28 +0800 Subject: [PATCH 06/38] =?UTF-8?q?=E4=BF=AE=E6=94=B9powerjob?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logistics/OrderBoxRefinement.java | 11 +++++-- .../desk/dashboard/feign/IOrderBoxClient.java | 32 +++++++++++++++++++ .../desk/dashboard/feign/OrderBoxClient.java | 28 ++++++++++++++++ .../controller/OrderBindController.java | 11 +++++++ .../impl/StorageMonitoringServiceImpl.java | 2 +- .../order/service/IYieldOrderService.java | 3 ++ .../service/impl/YieldOrderServiceImpl.java | 14 ++++++++ 7 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IOrderBoxClient.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/OrderBoxClient.java diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java index 69c4975d..ef6cd710 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java @@ -1,7 +1,10 @@ package org.springblade.job.processor.logistics; +import jakarta.annotation.Resource; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.dashboard.feign.IOrderBoxClient; +import org.springblade.desk.dashboard.feign.IPartClient; import org.springframework.stereotype.Component; import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.TaskContext; @@ -14,10 +17,12 @@ import tech.powerjob.worker.core.processor.sdk.BasicProcessor; @Data @Slf4j public class OrderBoxRefinement implements BasicProcessor { + @Resource + private IOrderBoxClient client; + @Override - public ProcessResult process(TaskContext taskContext) throws Exception { - System.out.println("hello world"); - log.info("hello world"); + public ProcessResult process(TaskContext context) throws Exception { + client.monitoringStation(); return new ProcessResult(true); } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IOrderBoxClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IOrderBoxClient.java new file mode 100644 index 00000000..27485cd1 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IOrderBoxClient.java @@ -0,0 +1,32 @@ +package org.springblade.desk.dashboard.feign; + +import org.springblade.core.launch.constant.AppConstant; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * 零件服务Feign客户端 + * 修正点:所有GET请求参数添加@RequestParam注解,解决Feign多Body参数异常 + * @author liweidong + */ +@FeignClient( + value = AppConstant.APPLICATION_DESK_NAME +) +public interface IOrderBoxClient { + + String API_PREFIX = "/feign/client/order-box"; + + String MONITORING_STATION = API_PREFIX + "/monitoring-station"; + + + /** + * 零件同步 + */ + @GetMapping(MONITORING_STATION) + void monitoringStation(); +} \ No newline at end of file diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/OrderBoxClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/OrderBoxClient.java new file mode 100644 index 00000000..32c87b00 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/OrderBoxClient.java @@ -0,0 +1,28 @@ +package org.springblade.desk.dashboard.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.annotation.Resource; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; +import org.springblade.desk.dashboard.service.IDsPartRelationService; +import org.springblade.desk.dashboard.service.IDsPartService; +import org.springblade.desk.dashboard.service.IDsTaskingService; +import org.springblade.desk.logistics.service.IStorageMonitoringService; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@Hidden() +public class OrderBoxClient implements IOrderBoxClient { + + @Resource + private IStorageMonitoringService storageMonitoringService; + + + @Override + public void monitoringStation() { + storageMonitoringService.monitoringStation(); + } +} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java index cf491320..dc54338a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java @@ -20,6 +20,7 @@ import org.springblade.desk.logistics.pojo.vo.OrderBindVO; import org.springblade.desk.logistics.pojo.vo.TaskVO; import org.springblade.desk.logistics.service.IOrderBindService; import org.springblade.desk.logistics.service.IOrderBoxService; +import org.springblade.desk.order.service.IYieldOrderService; import org.springframework.web.bind.annotation.*; /** @@ -35,6 +36,7 @@ import org.springframework.web.bind.annotation.*; public class OrderBindController { private final IOrderBindService iOrderBindService; private final IOrderBoxService iOrderBoxService; + private final IYieldOrderService iYieldOrderService; @PostMapping("/box-binding") @ApiOperationSupport(order = 1) @@ -82,6 +84,15 @@ public class OrderBindController { return iOrderBindService.getBoxcodelist(); } + @GetMapping("/card-no") + @ApiOperationSupport(order = 5) + @Operation( + summary = "根据流程卡号查询", + description = "根据流程卡号查询" + ) + public R getCardNo(String cardNo) throws BusinessException { + return iYieldOrderService.getCardNo(cardNo); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java index 19aa9e01..89c9edac 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java @@ -90,7 +90,7 @@ public class StorageMonitoringServiceImpl implements IStorageMonitoringService { * - 库位ID/任务/库位信息空值校验,跳过异常数据 * - 状态未变化时跳过更新,减少数据库IO */ - @Scheduled(cron = "0 0/5 * * * ?") +// @Scheduled(cron = "0 0/5 * * * ?") @Override // 实现IStorageMonitoringService接口的抽象方法 public void monitoringStation() { // ========== 步骤1:查询所有空闲状态的站点 ========== diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java index fe589c31..b1b73668 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.validation.constraints.NotEmpty; import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseService; +import org.springblade.core.tool.api.R; import org.springblade.desk.order.pojo.entity.YieldOrder; import java.util.List; @@ -215,4 +216,6 @@ public interface IYieldOrderService extends BaseService { String getNewCardNo(String cardNo); Long getWcId(Long orderId); + + R getCardNo(String cardNo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index 289e1344..f23f2a6d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -16,6 +16,7 @@ import org.springblade.common.utils.StringPrefixUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.ObjectUtil; @@ -725,6 +726,19 @@ public class YieldOrderServiceImpl extends BaseServiceImpl list = list(new LambdaQueryWrapper().eq(YieldOrder::getCardNo, cardNo)); + if (list==null||list.size()==0) { + return R.fail("路线卡号未查询到详情"); + } + + return R.data(list.get(0)); + } + /** * 验证零件子件信息 * From 2ef051473dd58f8976fdbe20eede5f87e248f2ad Mon Sep 17 00:00:00 2001 From: qinyulong Date: Tue, 17 Mar 2026 10:42:33 +0800 Subject: [PATCH 07/38] =?UTF-8?q?=E5=A4=96=E5=8D=8F=EF=BC=9A=E5=BC=82?= =?UTF-8?q?=E6=AD=A5=E6=89=B9=E9=87=8F=E5=AE=A1=E6=89=B9=E3=80=81=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E7=BB=93=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oem/controller/OemOrderController.java | 14 +- .../service/impl/OemStatementServiceImpl.java | 443 ++++++++++-------- .../produce/service/IWorkOrderRunService.java | 5 +- .../service/impl/WorkOrderRunServiceImpl.java | 31 +- .../service/impl/WorkOrderServiceImpl.java | 1 + 5 files changed, 290 insertions(+), 204 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java index ff8ac5a4..2461af9d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java @@ -104,15 +104,14 @@ public class OemOrderController extends BladeController { IPage pages = workOrderRunService.queryOemApproval(Condition.getPage(query), approvalQuery); return R.data(pages); } - /** - * 审批 + * 批量审批 */ - @PostMapping("/approval") + @PostMapping("/batchApproval") @ApiOperationSupport(order = 4) - @Operation(summary = "审批", description = "") - public R approval(@Valid @RequestBody OemApproval oemApproval) throws Exception { - return workOrderRunService.approval(oemApproval); + @Operation(summary = "批量审批", description = "") + public R batchApproval(@Valid @RequestBody List oemApprovals) throws Exception { + return workOrderRunService.batchApproval(oemApprovals); } /** @@ -121,13 +120,14 @@ public class OemOrderController extends BladeController { @GetMapping("/prepareOemBatches") @ApiOperationSupport(order = 5) @Operation(summary = "外协分批准备数据", description = "worId") - public R detail(@PathVariable Long worId) { + public R prepareOemBatches(@Parameter(description = "车间订单运行记录主键ID", required = true) @RequestParam Long worId) { WorkOrderRun oldWorkOrderRun = workOrderRunService.getById(worId); WorkOrder oldWorkOrder = workOrderService.getById(oldWorkOrderRun.getWoId()); YieldOrder yieldOrder = yieldOrderService.getById(oldWorkOrder.getYoId()); // 创建新的分批订单对象 WorkOrder newWorkOrder = new WorkOrder(); // 复制原订单基本信息 + newWorkOrder.setId(oldWorkOrder.getId()); newWorkOrder.setYoId(oldWorkOrder.getYoId()); newWorkOrder.setWoCode(workOrderService.nextCode(yieldOrder.getYpCode())); newWorkOrder.setCardNo(workOrderService.nextCardNo(yieldOrder.getYpCode(), oldWorkOrder.getCardNo())); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java index b102137c..64579f2f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java @@ -33,6 +33,7 @@ import org.springblade.core.mp.base.BaseServiceImpl; import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -73,7 +74,31 @@ public class OemStatementServiceImpl extends BaseServiceImpl Map> oemAndStatementMap = statementVOS.stream().collect(Collectors.groupingBy(StatementVO::getOcName)); + // 创建CompletableFuture列表 + List> futures = new ArrayList<>(); for (Map.Entry> listEntry : oemAndStatementMap.entrySet()) { + CompletableFuture future = CompletableFuture.runAsync(() -> { + try { + processOemStatements(listEntry.getKey(), listEntry.getValue(), price, putStoreDate, + countSuccess, countError); + } catch (Exception e) { + log.error(String.format("处理外协厂商{}的结算单时发生异常", listEntry.getKey()), e); + } + }); + futures.add(future); + } + // 等待所有任务完成 + try { + CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); + } catch (Exception e) { + log.error("异步处理结算单时发生异常", e); + } + + return R.data(Map.of( + "success", countSuccess.get(), + "error", countError.get() + )); + /*for (Map.Entry> listEntry : oemAndStatementMap.entrySet()) { //外协厂商下全部需要结算的结算单 List statementVOList = listEntry.getValue(); @@ -81,71 +106,6 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetAllList = getPriceSheets(oemName, putStoreDate); - //假数据测试用 -// List priceSheetAllList = new ArrayList<>(); -// PriceSheetVO priceSheet1 = new PriceSheetVO(); -// priceSheet1.setPrice("60"); -// priceSheet1.setSplyname(oemName); -// priceSheet1.setPrtum("件"); -// priceSheet1.setWono("WO-N2510424439-R002"); -// priceSheet1.setSeqid("GXJG-20250228018"); -// priceSheet1.setGxinfo("玻璃封接电化学抛光"); -// priceSheetAllList.add(priceSheet1); -// PriceSheetVO priceSheet2 = new PriceSheetVO(); -// priceSheet2.setPrice("26"); -// priceSheet2.setSplyname(oemName); -// priceSheet2.setPrtum("件"); -// priceSheet2.setSeqid("GXJG-20250228012"); -// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet2.setPrtlotno("JI和JHT"); -// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); -// priceSheet2.setLower("5"); -// priceSheet2.setUpper("0"); -// priceSheet2.setPrtno("21E6-575-10724-%螺母"); -// priceSheetAllList.add(priceSheet2); -// PriceSheetVO priceSheet3 = new PriceSheetVO(); -// priceSheet3.setPrice("34"); -// priceSheet3.setSplyname(oemName); -// priceSheet3.setPrtum("件"); -// priceSheet3.setSeqid("GXJG-20250228012"); -// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet3.setPrtlotno("JI和JHT"); -// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); -// priceSheet3.setLower("10"); -// priceSheet3.setUpper("5.00001"); -// priceSheet3.setPrtno("21E6-575-10724-%螺母"); -// priceSheetAllList.add(priceSheet3); -// PriceSheetVO priceSheet4 = new PriceSheetVO(); -// priceSheet4.setPrice("15"); -// priceSheet4.setSplyname(oemName); -// priceSheet4.setPrtum("件"); -// priceSheet4.setSeqid("GXJG-20250228012"); -// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet4.setPrtlotno("JHT"); -// priceSheet4.setStairflag("非阶梯价"); -// priceSheet4.setPrtno("21E6-575-10724-%螺母"); -// priceSheetAllList.add(priceSheet4); -// PriceSheetVO priceSheet5 = new PriceSheetVO(); -// priceSheet5.setPrice("99"); -// priceSheet5.setSplyname(oemName); -// priceSheet5.setPrtum("件"); -// priceSheet5.setSeqid("GXJG-20250228012"); -// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet5.setStairflag("非阶梯价"); -// priceSheet5.setPrtno("21E6-575-10724-%螺母"); -// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); -// priceSheetAllList.add(priceSheet5); -// PriceSheetVO priceSheet6 = new PriceSheetVO(); -// priceSheet6.setPrice("200"); -// priceSheet6.setSplyname(oemName); -// priceSheet6.setPrtum("件"); -// priceSheet6.setSeqid("GXJG-20250228012"); -// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet6.setStairflag("非阶梯价"); -// priceSheet6.setPrtno("21E6-575-10724-%螺母"); -// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); -// priceSheetAllList.add(priceSheet6); - if (priceSheetAllList.isEmpty()) { //【结算异常】 statementVOList.forEach(statementVO -> { @@ -155,43 +115,43 @@ public class OemStatementServiceImpl extends BaseServiceImpl Map> priceSheetMap = priceSheetAllList.stream().collect(Collectors.groupingBy(PriceSheetVO::getGxinfo)); - /*statementVOList.forEach(statementVO -> { - List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); - if (matchedPriceSheets.isEmpty()) { - return; - } - statementVO.setPriceSheetList(matchedPriceSheets); - });*/ //3.为每个结算单匹配报价集合 statementVOList.forEach(statementVO -> { - List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); - if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { - return; - } - statementVO.setPriceSheetList(matchedPriceSheets); - //4.匹配规则,过滤出唯一报价 - //①.匹配车间订单号 - if (ruleWoNo(statementVO, true)) { - return; - } - //②.匹配物料名称和质量等级 - if (rulePartNameAndProdIdent(statementVO)) { - return; - } - //③.匹配金价银价 - if (ruleGoldAndSilverPrices(statementVO, price)) { - return; - } - //④.涂色标、涂色带、涂箭头 - if (ruleColor(statementVO, true)) { - return; - } - //⑤.物料号匹配 - if (ruleGoods(statementVO)) { - return; - } - //⑥.阶梯价匹配 - if (ruleTieredPricing(statementVO, true)) { + try { + List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); + if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { + return; + } + statementVO.setPriceSheetList(matchedPriceSheets); + //4.匹配规则,过滤出唯一报价 + //①.匹配车间订单号 + if (ruleWoNo(statementVO, true)) { + return; + } + //②.匹配物料名称和质量等级 + if (rulePartNameAndProdIdent(statementVO)) { + return; + } + //③.匹配金价银价 + if (ruleGoldAndSilverPrices(statementVO, price)) { + return; + } + //④.涂色标、涂色带、涂箭头 + if (ruleColor(statementVO, true)) { + return; + } + //⑤.物料号匹配 + if (ruleGoods(statementVO)) { + return; + } + //⑥.阶梯价匹配 + if (ruleTieredPricing(statementVO, true)) { + return; + } + }catch (Exception e){ + log.error("结算单处理异常", e); + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo("结算处理异常: " + e.getMessage()); return; } }); @@ -217,7 +177,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetAllList = getPriceSheets(oemName); - //假数据测试用 -// List priceSheetAllList = new ArrayList<>(); -// PriceSheetVO priceSheet1 = new PriceSheetVO(); -// priceSheet1.setPrice("60"); -// priceSheet1.setSplyname(oemName); -// priceSheet1.setPrtum("件"); -// priceSheet1.setWono("WO-N2510424439-R002"); -// priceSheet1.setSeqid("GXJG-20250228018"); -// priceSheet1.setGxinfo("玻璃封接电化学抛光"); -// priceSheet1.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet1); -// PriceSheetVO priceSheet2 = new PriceSheetVO(); -// priceSheet2.setPrice("26"); -// priceSheet2.setSplyname(oemName); -// priceSheet2.setPrtum("件"); -// priceSheet2.setSeqid("GXJG-20250228012"); -// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet2.setPrtlotno("JI和JHT"); -// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); -// priceSheet2.setLower("5"); -// priceSheet2.setUpper("0"); -// priceSheet2.setPrtno("21E6-575-10724-%螺母"); -// priceSheet2.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet2); -// PriceSheetVO priceSheet3 = new PriceSheetVO(); -// priceSheet3.setPrice("34"); -// priceSheet3.setSplyname(oemName); -// priceSheet3.setPrtum("件"); -// priceSheet3.setSeqid("GXJG-20250228012"); -// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet3.setPrtlotno("JI和JHT"); -// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); -// priceSheet3.setLower("10"); -// priceSheet3.setUpper("5.00001"); -// priceSheet3.setPrtno("21E6-575-10724-%螺母"); -// priceSheet3.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet3); -// PriceSheetVO priceSheet4 = new PriceSheetVO(); -// priceSheet4.setPrice("15"); -// priceSheet4.setSplyname(oemName); -// priceSheet4.setPrtum("件"); -// priceSheet4.setSeqid("GXJG-20250228012"); -// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet4.setPrtlotno("JHT"); -// priceSheet4.setStairflag("非阶梯价"); -// priceSheet4.setPrtno("21E6-575-10724-%螺母"); -// priceSheet4.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet4); -// PriceSheetVO priceSheet5 = new PriceSheetVO(); -// priceSheet5.setPrice("99"); -// priceSheet5.setSplyname(oemName); -// priceSheet5.setPrtum("件"); -// priceSheet5.setSeqid("GXJG-20250228012"); -// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet5.setStairflag("非阶梯价"); -// priceSheet5.setPrtno("21E6-575-10724-%螺母"); -// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); -// priceSheet5.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet5); -// PriceSheetVO priceSheet6 = new PriceSheetVO(); -// priceSheet6.setPrice("200"); -// priceSheet6.setSplyname(oemName); -// priceSheet6.setPrtum("件"); -// priceSheet6.setSeqid("GXJG-20250228012"); -// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet6.setStairflag("非阶梯价"); -// priceSheet6.setPrtno("21E6-575-10724-%螺母"); -// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); -// priceSheet6.setStartdat("2026-01-16"); -// priceSheetAllList.add(priceSheet6); if (priceSheetAllList.isEmpty()) { //【结算异常】 statementVOList.forEach(statementVO -> { @@ -345,40 +235,202 @@ public class OemStatementServiceImpl extends BaseServiceImpl { + try { + List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); + if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { + return; + } + statementVO.setPriceSheetList(matchedPriceSheets); + //4.匹配规则,过滤出唯一报价 + //①.匹配车间订单号 + if (ruleWoNo(statementVO, false)) { + return; + } + //②.匹配物料名称和质量等级 + if (rulePartNameAndProdIdent(statementVO)) { + return; + } + //③.匹配金价银价 + if (ruleGoldAndSilverPrices(statementVO, price)) { + return; + } + //④.涂色标、涂色带、涂箭头 + if (ruleColor(statementVO, false)) { + return; + } + //⑤.物料号匹配 + if (ruleGoods(statementVO)) { + return; + } + //⑥.阶梯价匹配 + if (ruleTieredPricing(statementVO, false)) { + return; + } + } catch (Exception e) { + log.error("结算单处理异常", e); + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo("结算处理异常: " + e.getMessage()); + return; + } + }); + } + } + return statementVOS; + } + + /** + * 以外协厂商分组结算 + * + * @param oemName + * @param statementVOList + * @param price + * @param putStoreDate + * @param countSuccess + * @param countError + */ + private void processOemStatements(String oemName, List statementVOList, + BigDecimal price, LocalDate putStoreDate, + AtomicInteger countSuccess, AtomicInteger countError) { + // 1. 查询报价单 + List priceSheetAllList = getPriceSheets(oemName, putStoreDate); + //假数据测试用 +// List priceSheetAllList = new ArrayList<>(); +// PriceSheetVO priceSheet1 = new PriceSheetVO(); +// priceSheet1.setPrice("60"); +// priceSheet1.setSplyname(oemName); +// priceSheet1.setPrtum("件"); +// priceSheet1.setWono("WO-N2510424439-R002"); +// priceSheet1.setSeqid("GXJG-20250228018"); +// priceSheet1.setGxinfo("玻璃封接电化学抛光"); +// priceSheetAllList.add(priceSheet1); +// PriceSheetVO priceSheet2 = new PriceSheetVO(); +// priceSheet2.setPrice("26"); +// priceSheet2.setSplyname(oemName); +// priceSheet2.setPrtum("件"); +// priceSheet2.setSeqid("GXJG-20250228012"); +// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet2.setPrtlotno("JI和JHT"); +// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); +// priceSheet2.setLower("5"); +// priceSheet2.setUpper("0"); +// priceSheet2.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet2); +// PriceSheetVO priceSheet3 = new PriceSheetVO(); +// priceSheet3.setPrice("34"); +// priceSheet3.setSplyname(oemName); +// priceSheet3.setPrtum("件"); +// priceSheet3.setSeqid("GXJG-20250228012"); +// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet3.setPrtlotno("JI和JHT"); +// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); +// priceSheet3.setLower("10"); +// priceSheet3.setUpper("5.00001"); +// priceSheet3.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet3); +// PriceSheetVO priceSheet4 = new PriceSheetVO(); +// priceSheet4.setPrice("15"); +// priceSheet4.setSplyname(oemName); +// priceSheet4.setPrtum("件"); +// priceSheet4.setSeqid("GXJG-20250228012"); +// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet4.setPrtlotno("JHT"); +// priceSheet4.setStairflag("非阶梯价"); +// priceSheet4.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet4); +// PriceSheetVO priceSheet5 = new PriceSheetVO(); +// priceSheet5.setPrice("99"); +// priceSheet5.setSplyname(oemName); +// priceSheet5.setPrtum("件"); +// priceSheet5.setSeqid("GXJG-20250228012"); +// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet5.setStairflag("非阶梯价"); +// priceSheet5.setPrtno("21E6-575-10724-%螺母"); +// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); +// priceSheetAllList.add(priceSheet5); +// PriceSheetVO priceSheet6 = new PriceSheetVO(); +// priceSheet6.setPrice("200"); +// priceSheet6.setSplyname(oemName); +// priceSheet6.setPrtum("件"); +// priceSheet6.setSeqid("GXJG-20250228012"); +// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet6.setStairflag("非阶梯价"); +// priceSheet6.setPrtno("21E6-575-10724-%螺母"); +// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); +// priceSheetAllList.add(priceSheet6); + if (priceSheetAllList.isEmpty()) { + // 【结算异常】 + statementVOList.forEach(statementVO -> { + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); + }); + } else { + // 2. 工序分组Map<工序, 报价列表> + Map> priceSheetMap = priceSheetAllList.stream() + .collect(Collectors.groupingBy(PriceSheetVO::getGxinfo)); + + // 3. 为每个结算单匹配报价集合 + statementVOList.forEach(statementVO -> { + try { List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { return; } statementVO.setPriceSheetList(matchedPriceSheets); - //4.匹配规则,过滤出唯一报价 - //①.匹配车间订单号 - if (ruleWoNo(statementVO, false)) { + + // 4. 匹配规则,过滤出唯一报价 + // ①. 匹配车间订单号 + if (ruleWoNo(statementVO, true)) { return; } - //②.匹配物料名称和质量等级 + // ②. 匹配物料名称和质量等级 if (rulePartNameAndProdIdent(statementVO)) { return; } - //③.匹配金价银价 + // ③. 匹配金价银价 if (ruleGoldAndSilverPrices(statementVO, price)) { return; } - //④.涂色标、涂色带、涂箭头 - if (ruleColor(statementVO, false)) { + // ④. 涂色标、涂色带、涂箭头 + if (ruleColor(statementVO, true)) { return; } - //⑤.物料号匹配 + // ⑤. 物料号匹配 if (ruleGoods(statementVO)) { return; } - //⑥.阶梯价匹配 - if (ruleTieredPricing(statementVO, false)) { + // ⑥. 阶梯价匹配 + if (ruleTieredPricing(statementVO, true)) { return; } - }); - } + } catch (Exception e) { + log.error("结算单处理异常", e); + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo("结算处理异常: " + e.getMessage()); + } + }); + } + + // 5. 批量保存 + List saves = statementVOList.stream() + .map(statementVO -> { + // 统计数量 + if (Objects.equals(OemStatementEntity.IN_SETTLEMENT, statementVO.getRosStatus())) { + countSuccess.incrementAndGet(); + } else if (Objects.equals(OemStatementEntity.ERR_SETTLEMENT, statementVO.getRosStatus())) { + countError.incrementAndGet(); + } + OemStatementEntity entity = new OemStatementEntity(); + BeanUtils.copyProperties(statementVO, entity); + entity.setUpdateTime(new Date()); + entity.setIsDeleted(0); + return entity; + }) + .collect(Collectors.toList()); + + // 批量插入或更新 + if (!saves.isEmpty()) { + baseMapper.insertOrUpdate(saves); } - return statementVOS; } @Override @@ -468,17 +520,22 @@ public class OemStatementServiceImpl extends BaseServiceImpl getPriceSheets(String oemName, LocalDate putStoreDate) { - PriceSheetQuery query = new PriceSheetQuery(); - query.setOcName(oemName); - query.setInDateStart(putStoreDate); - query.setInDateEnd(putStoreDate); + try { + PriceSheetQuery query = new PriceSheetQuery(); + query.setOcName(oemName); + query.setInDateStart(putStoreDate); + query.setInDateEnd(putStoreDate); - R> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ - setSize(99999); - }}); + R> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ + setSize(99999); + }}); - if (pageR != null && pageR.getData() != null) { - return pageR.getData().getRecords(); + if (pageR != null && pageR.getData() != null) { + return pageR.getData().getRecords(); + } + } catch (Exception e) { + log.error("获取报价单失败,失败原因:{}", e); + return Collections.emptyList(); } return Collections.emptyList(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java index be38760c..d476e8ec 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java @@ -10,6 +10,7 @@ import org.springblade.desk.oem.pojo.vo.OemApprovalVO; import org.springblade.desk.oem.pojo.vo.OemOrderVO; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; +import java.util.List; import java.util.Map; /** @@ -48,10 +49,10 @@ public interface IWorkOrderRunService extends BaseService { /** * 外协审批 * - * @param oemApproval + * @param oemApprovals * @return */ - R approval(OemApproval oemApproval) throws Exception; + R batchApproval(List oemApprovals) throws Exception; /** * 转外协厂家 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java index 7e40aa38..cf405e92 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java @@ -46,6 +46,7 @@ import org.springblade.system.pojo.entity.User; import org.springblade.system.pojo.enums.DictEnum; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.imageio.ImageIO; @@ -144,9 +145,35 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl approvals) { + + for (int i = 0; i < approvals.size(); i++) { + OemApproval approval = approvals.get(i); + + try { + R r = singleApprovalInNewTransaction(approval); + } catch (Exception e) { + log.error(String.format("审批失败,单据ID: {}", approval.getWorkOrderRunId()), e); + } + } + + return R.success("操作完成"); + } + + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + public R singleApprovalInNewTransaction(OemApproval oemApproval) throws Exception { + return approval(oemApproval); + } + + /** + * 审批 + * + * @param oemApproval + * @return + * @throws Exception + */ + private R approval(OemApproval oemApproval) throws Exception { WorkOrderRun workOrderRun = workOrderRunMapper.selectById(oemApproval.getWorkOrderRunId()); WorkOrder wo = workOrderMapper.selectById(workOrderRun.getWoId()); YieldOrder yo = yieldOrderMapper.selectById(wo.getYoId()); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index bc8feb94..eb6bdd6e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -1733,6 +1733,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl Date: Tue, 17 Mar 2026 10:43:00 +0800 Subject: [PATCH 08/38] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=A4=84=E7=BD=AE?= =?UTF-8?q?=E5=8D=95=E6=8F=90=E4=BA=A4erp=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/quality/pojo/dto/ReviewDutyDTO.java | 43 +++++++++ .../desk/quality/pojo/dto/ReviewFaultDTO.java | 39 ++++++++ .../desk/quality/pojo/dto/ReviewSheetDTO.java | 93 +++++++++++++++++++ .../desk/quality/pojo/entity/ReviewSheet.java | 2 + .../service/impl/ReviewSheetServiceImpl.java | 85 ++++++++++++----- 5 files changed, 239 insertions(+), 23 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java index 07966acf..70b0d707 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java @@ -20,5 +20,48 @@ import java.io.Serial; public class ReviewDutyDTO extends ReviewDuty { @Serial private static final long serialVersionUID = 1L; + /** + * 审理单Id + */ + private String trialId; + /** + * 序号 + */ + private String trialSeq; + + /** + * 物料号 + */ + private String mdsItemCode; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 相关物料号 + */ + private String corrMdsItemCode; + + /** + * 相关批次号 + */ + private String corrBatchNo; + + /** + * 备注 + */ + private String note; + + /** + * 数量 + */ + private Short reqQty; + + /** + * 单位 + */ + private String unit; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java index c321096d..4529ce19 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java @@ -20,5 +20,44 @@ import java.io.Serial; public class ReviewFaultDTO extends ReviewFault { @Serial private static final long serialVersionUID = 1L; + /** + * 审理单Id + */ + private String trialId; + + /** + * 序号 + */ + private String trialSeq; + + /** + * 故障类别 + */ + private String faultType; + + /** + * 问题大类 + */ + private String questClass; + + /** + * 问题小类 + */ + private String questSubclass; + + /** + * 比例 + */ + private Double proportion; + + /** + * 数量 + */ + private Long faultQty; + + /** + * 描述 + */ + private String describe; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java index 8524efe0..d5d1860a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java @@ -21,4 +21,97 @@ public class ReviewSheetDTO extends ReviewSheet { @Serial private static final long serialVersionUID = 1L; + /** + * 批次号 + */ + private String batchNo; + + /** + * 车间订单号/外协交件号.业务号 + */ + private String businessNo; + + /** + * 检验员编码 + */ + private String checkUserCode; + + /** + * 物料编码 + */ + private String mdsItemCode; + + /** + * 物料名称 + */ + private String mdsItemName; + + /** + * 质量等级 + */ + private String levels; + + /** + * 发现部门 + */ + private String findWorkShop; + + /** + * 是否质量问题 + */ + private Boolean qualityquestion; + + /** + * 审理单状态 + */ + private String trialStatus = "21"; + + /** + * 总数量 + */ + private Double needQty; + + /** + * 上级编号 + */ + private String preCode; + + /** + * 比例 + */ + private Double proporTion; + + /** + * 不合格数量 + */ + private Double subQty; + + /** + * 简单原因 + */ + private String easyReason; + + /** + * 处置单类型(1-零件模式/2-装配模式/5-售后模式) + */ + private String trialType; + + /** + * 工序号 + */ + private String seqNo; + /** + * 工序名称 + */ + private String seqName; + + /** + * 发现人 + */ + private String findUserCode; + /** + * 处置单类型(1-提交质保/2-提交工艺/3-提交设计) + */ + private String hearDis; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java index 66ce4176..ec66f6d3 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java @@ -423,4 +423,6 @@ public class ReviewSheet extends BaseEntity { //当前工序id private Long ppsId; + + private Integer submitType; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java index 446d78ae..11ff02c1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java @@ -33,6 +33,9 @@ import org.springblade.desk.quality.constant.InspectionTaskConst; import org.springblade.desk.quality.constant.ReviewSheetConst; import org.springblade.desk.quality.excel.ReviewSheetExcel; import org.springblade.desk.quality.mapper.ReviewSheetMapper; +import org.springblade.desk.quality.pojo.dto.ReviewDutyDTO; +import org.springblade.desk.quality.pojo.dto.ReviewFaultDTO; +import org.springblade.desk.quality.pojo.dto.ReviewSheetDTO; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.entity.ReviewDuty; import org.springblade.desk.quality.pojo.entity.ReviewFault; @@ -378,29 +381,65 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl entity = new HttpEntity<>(obj, headers); -// ResponseEntity responseEntity; -// JSONObject responseBody; -// try { -// responseEntity = httpClientTemplate.postForEntity("http://192.168.119.68:10113" + -// "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class); -// JSONObject result = responseEntity.getBody(); -// -// responseBody = result.getJSONObject("responseBody"); -// if (responseBody == null) { -// throw new BusinessException("审理单,接口返回值null"); -// } -// } catch (Exception e) { -// throw new RuntimeException("审理单,接口返回值null"); -// } -// } + if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + ReviewSheetDTO dto = new ReviewSheetDTO(); + dto.setBusinessNo(rs.getWoCode()); + dto.setMdsItemCode(dto.getPreCode()); + dto.setTrialStatus(rs.getReviewStatus().toString()); + dto.setHearDis(rs.getSubmitType().toString()); + dto.setTrialType(rs.getReviewOrderMode()+""); + dto.setPreCode(rs.getUpCode()); + dto.setProporTion(rs.getScale()); + dto.setSubQty(rs.getUnqualifiedQty()); + + List vods = new ArrayList<>(); + + for(ReviewDuty vod : listD){ + ReviewDutyDTO vodDTO = new ReviewDutyDTO(); + vodDTO.setTrialId(vod.getReviewSheetId()+""); + vodDTO.setReqQty(vod.getQty()); + vodDTO.setUnit(vod.getUnit()); + vodDTO.setCorrBatchNo(vod.getRelevantBatch()); + vods.add(vodDTO); + } + + + List vofs = new ArrayList<>(); + for(ReviewFault vof : listF){ + ReviewFaultDTO vofDTO = new ReviewFaultDTO(); + vofDTO.setTrialId(vof.getReviewSheetId()+""); + vofDTO.setFaultType(vof.getNgType2Id()+""); + vofDTO.setQuestClass(vof.getNgType3Id()+""); + vofDTO.setQuestSubclass(vof.getNgType4Id()+""); + vofDTO.setProportion(vof.getScale()); + vofDTO.setFaultQty(vof.getQty()); + vofDTO.setDescribe(vof.getMemo()); + vofs.add(vofDTO); + } + + JSONObject obj = new JSONObject(); + obj.put("qmsRepairApplyDTO", dto); + obj.put("qmsRepairPartList", vods); + obj.put("qmsRepairMalfList", vofs); + HttpEntity entity = new HttpEntity<>(obj, headers); + ResponseEntity responseEntity; + JSONObject responseBody; + try { + responseEntity = httpClientTemplate.postForEntity("http://192.168.119.68:10113" + + "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class); + JSONObject result = responseEntity.getBody(); + + responseBody = result.getJSONObject("responseBody"); + if (responseBody == null) { + throw new BusinessException("审理单,接口返回值null"); + } + } catch (Exception e) { + throw new RuntimeException("审理单,接口返回值null"); + } + } return R.success("成功"); } From 641bae348a808b2d45383287476edf7cff8197dc Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Tue, 17 Mar 2026 13:51:54 +0800 Subject: [PATCH 09/38] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=85=B3=E8=81=94=E4=BA=BA=E5=91=98=EF=BC=8C=E7=8F=AD=E7=BB=84?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/basic/pojo/entity/CenterTeam.java | 48 ++++++++ .../desk/basic/pojo/entity/TeamSet.java | 2 + .../desk/basic/pojo/vo/CenterTeamVO.java | 26 +++++ .../basic/controller/TeamSetController.java | 76 +++++++++---- .../controller/WorkCenterController.java | 105 ++++++++++++------ .../desk/basic/feign/WorkCenterClient.java | 23 +++- .../desk/basic/mapper/CenterTeamMapper.java | 25 +++++ .../desk/basic/mapper/CenterTeamMapper.xml | 21 ++++ .../basic/service/ICenterTeamService.java | 26 +++++ .../service/impl/CenterTeamServiceImpl.java | 46 ++++++++ .../desk/basic/wrapper/CenterTeamWrapper.java | 38 +++++++ .../system/controller/UserController.java | 6 +- .../system/service/impl/DeptServiceImpl.java | 3 +- 13 files changed, 382 insertions(+), 63 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/CenterTeam.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/CenterTeamVO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.xml create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/CenterTeamWrapper.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/CenterTeam.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/CenterTeam.java new file mode 100644 index 00000000..fe482fae --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/CenterTeam.java @@ -0,0 +1,48 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.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 Tom Shuo + * @since 2026-01-13 + */ +@Data +@TableName("BS_CENTER_TEAM") +@Schema(description = "RelTeamSetUser Entity对象") +@EqualsAndHashCode(callSuper = true) +public class CenterTeam extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 作业中心id + */ + public static final String COL_TEAM_SET_ID = "WC_ID"; + /** + *班组 + */ + public static final String COL_USER_ID = "TS_ID"; + + /** + * [班组]id + */ + @Schema(description = "[班组]id") + private Long tsId; + /** + * 作业中心id + */ + @Schema(description = "作业中心id") + private Long wcId; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java index f2b56904..42486725 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java @@ -180,5 +180,7 @@ public class TeamSet extends BaseEntity { @TableField(exist = false) private Long deptId; + @TableField(exist = false) + private String teamId; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/CenterTeamVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/CenterTeamVO.java new file mode 100644 index 00000000..bdc6c4e0 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/CenterTeamVO.java @@ -0,0 +1,26 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.TeamSet; + +import java.io.Serial; + +/** + * [班组] 视图实体类 + * + * @author Tom Shuo + * @since 2025-12-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class CenterTeamVO extends CenterTeam { + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java index aafbfbc0..ff708f05 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java @@ -30,6 +30,7 @@ import org.springblade.desk.basic.excel.PlatingSmallExcel; import org.springblade.desk.basic.excel.TeamSetExcel; import org.springblade.desk.basic.pojo.entity.*; import org.springblade.desk.basic.pojo.vo.TeamSetVO; +import org.springblade.desk.basic.service.IRelTeamSetUserService; import org.springblade.desk.basic.service.IShiftsService; import org.springblade.desk.basic.service.ITeamSetService; import org.springblade.desk.basic.service.ITeamTimeService; @@ -73,6 +74,9 @@ public class TeamSetController extends BladeController { @Resource private IShiftsService shiftService; + @Resource + private IRelTeamSetUserService relTeamSetUserService; + /** * [班组] 详情 */ @@ -93,14 +97,25 @@ public class TeamSetController extends BladeController { List teams = new ArrayList<>(); QueryWrapper qw = Condition.getQueryWrapper(teamSet); TeamSet detail = service.getOne(qw); - if(detail != null){ - String teamId = detail.getTeamMemberId(); - if(null != teamId && !"".equals(teamId)){ - teams = iUserClient.userUNListByIds(teamId); - }else{ - teams = iUserClient.userUNListByIds(""); - } + + QueryWrapper qwuser = new QueryWrapper<>(); + qwuser.eq("TEAM_SET_ID", detail.getId()); + List users = relTeamSetUserService.list(qwuser); + if(null != users && users.size() > 0){ + List userIds = users.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList()); + String userId = Func.toStr(userIds); + teams = iUserClient.userUNListByIds(userId); + }else{ + teams = iUserClient.userUNListByIds(""); } +// if(detail != null){ +// String teamId = detail.getTeamMemberId(); +// if(null != teamId && !"".equals(teamId)){ +// teams = iUserClient.userUNListByIds(teamId); +// }else{ +// teams = iUserClient.userUNListByIds(""); +// } +// } return R.data(teams); } @@ -111,12 +126,22 @@ public class TeamSetController extends BladeController { List teams = new ArrayList<>(); QueryWrapper qw = Condition.getQueryWrapper(teamSet); TeamSet detail = service.getOne(qw); - if(detail != null){ - String teamId = detail.getTeamMemberId(); - if(null != teamId && !"".equals(teamId)){ - teams = iUserClient.userListByIds(teamId); - } + + QueryWrapper qwuser = new QueryWrapper<>(); + qwuser.eq("TEAM_SET_ID", detail.getId()); + List users = relTeamSetUserService.list(qwuser); + if(null != users && users.size() > 0){ + List userIds = users.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList()); + String userId = Func.toStr(userIds); + teams = iUserClient.userListByIds(userId); } + +// if(detail != null){ +// String teamId = detail.getTeamMemberId(); +// if(null != teamId && !"".equals(teamId)){ +// teams = iUserClient.userListByIds(teamId); +// } +// } return R.data(teams); } @@ -156,6 +181,7 @@ public class TeamSetController extends BladeController { } + @PostMapping("/updateUserId") @ApiOperationSupport(order = 31) @Operation(summary = "设置人员Id保存", description = "传入WorkCenter List") @@ -167,16 +193,22 @@ public class TeamSetController extends BladeController { String result = null; String team = null; if(null != teamIds){ - result = teamIds.stream() - .map(Object::toString) // 或者直接使用String::valueOf,效果相同 - .collect(Collectors.joining(",")); - - - List teams = iUserClient.userListByIds(result); - - team= teams.stream() - .map(user -> String.valueOf(user.getRealName())) - .collect(Collectors.joining(",")); + for(Long teamId:teamIds){ + RelTeamSetUser relTeamSetUser = new RelTeamSetUser(); + relTeamSetUser.setTeamSetId(detail.getId()); + relTeamSetUser.setUserId(teamId); + relTeamSetUserService.save(relTeamSetUser); + } +// result = teamIds.stream() +// .map(Object::toString) // 或者直接使用String::valueOf,效果相同 +// .collect(Collectors.joining(",")); +// +// +// List teams = iUserClient.userListByIds(result); +// +// team= teams.stream() +// .map(user -> String.valueOf(user.getRealName())) +// .collect(Collectors.joining(",")); } detail.setTeamMemberId(result); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java index 7e18319e..17d52fb2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java @@ -26,15 +26,9 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.constant.BAModuleConst; import org.springblade.desk.basic.excel.WorkCenterExcel; -import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity; -import org.springblade.desk.basic.pojo.entity.PlatingSmall; -import org.springblade.desk.basic.pojo.entity.TeamSet; -import org.springblade.desk.basic.pojo.entity.WorkCenter; +import org.springblade.desk.basic.pojo.entity.*; import org.springblade.desk.basic.pojo.vo.WorkCenterVO; -import org.springblade.desk.basic.service.ICraftAbilityService; -import org.springblade.desk.basic.service.IOemCraftAbilityService; -import org.springblade.desk.basic.service.ITeamSetService; -import org.springblade.desk.basic.service.IWorkCenterService; +import org.springblade.desk.basic.service.*; import org.springblade.desk.basic.util.ExcelExtUtil; import org.springblade.desk.basic.wrapper.WorkCenterWrapper; import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; @@ -76,6 +70,8 @@ public class WorkCenterController extends BladeController { private IOemCraftAbilityService oemCraftAbilityService; @Resource private IUserClient iUserClient; + @Resource + private ICenterTeamService teamCenterService; /** * [作业中心] 详情 */ @@ -183,19 +179,35 @@ public class WorkCenterController extends BladeController { List teams = new ArrayList<>(); QueryWrapper qw = Condition.getQueryWrapper(workCenter); WorkCenter detail = service.getOne(qw); - if(detail != null){ - String teamId = detail.getTeamId(); - if(null != teamId && !"".equals(teamId)){ - List ids = Func.toLongList(teamId); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.notIn("id",ids); - teams = teamService.list(queryWrapper); - }else{ - QueryWrapper queryWrapper = new QueryWrapper<>(); - teams = teamService.list(queryWrapper); - } + QueryWrapper qwteam = new QueryWrapper<>(); + qwteam.eq("WC_ID",detail.getId()); + List teamList = teamCenterService.list(qwteam); + List ids = new ArrayList<>(); + if(null != teamList && teamList.size() > 0){ + ids = teamList.stream().map(CenterTeam::getTsId).collect(Collectors.toList()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.notIn("id",ids); + teams = teamService.list(queryWrapper); + }else{ + QueryWrapper queryWrapper = new QueryWrapper<>(); + teams = teamService.list(queryWrapper); } + + +// if(detail != null){ +// String teamId = detail.getTeamId(); +// if(null != teamId && !"".equals(teamId)){ +// List ids = Func.toLongList(teamId); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.notIn("id",ids); +// teams = teamService.list(queryWrapper); +// }else{ +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// teams = teamService.list(queryWrapper); +// } +// +// } return R.data(teams); } @@ -206,15 +218,27 @@ public class WorkCenterController extends BladeController { List teams = new ArrayList<>(); QueryWrapper qw = Condition.getQueryWrapper(workCenter); WorkCenter detail = service.getOne(qw); - if(detail != null){ - String teamId = detail.getTeamId(); - if(null != teamId && !"".equals(teamId)){ - List ids = Func.toLongList(teamId); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",ids); - teams = teamService.list(queryWrapper); - } + + QueryWrapper qwteam = new QueryWrapper<>(); + qwteam.eq("WC_ID",detail.getId()); + List teamList = teamCenterService.list(qwteam); + List ids = new ArrayList<>(); + if(null != teamList && teamList.size() > 0){ + ids = teamList.stream().map(CenterTeam::getTsId).collect(Collectors.toList()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id",ids); + teams = teamService.list(queryWrapper); } + +// if(detail != null){ +// String teamId = detail.getTeamId(); +// if(null != teamId && !"".equals(teamId)){ +// List ids = Func.toLongList(teamId); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.in("id",ids); +// teams = teamService.list(queryWrapper); +// } +// } return R.data(teams); } @@ -251,7 +275,6 @@ public class WorkCenterController extends BladeController { return R.data(teams); } - @PostMapping("/updateTeamId") @ApiOperationSupport(order = 31) @Operation(summary = "设置班组Id保存", description = "传入WorkCenter List") @@ -263,17 +286,25 @@ public class WorkCenterController extends BladeController { String result = null; String team = null; if(null != teamIds){ - result = teamIds.stream() - .map(Object::toString) // 或者直接使用String::valueOf,效果相同 - .collect(Collectors.joining(",")); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",teamIds); - List teams = teamService.list(queryWrapper); + for(Long teamId:teamIds){ + CenterTeam centerteam = new CenterTeam(); + centerteam.setWcId(detail.getId()); + centerteam.setTsId(teamId); + teamCenterService.save(centerteam); + } - team= teams.stream() - .map(user -> String.valueOf(user.getTsName())) - .collect(Collectors.joining(",")); +// result = teamIds.stream() +// .map(Object::toString) // 或者直接使用String::valueOf,效果相同 +// .collect(Collectors.joining(",")); +// +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.in("id",teamIds); +// List teams = teamService.list(queryWrapper); +// +// team= teams.stream() +// .map(user -> String.valueOf(user.getTsName())) +// .collect(Collectors.joining(",")); } detail.setTeamId(result); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java index 84a5ae73..a8e2e1ad 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java @@ -1,19 +1,25 @@ package org.springblade.desk.basic.feign; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.v3.oas.annotations.Hidden; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.desk.basic.pojo.entity.BasicClazz; +import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; import org.springblade.desk.basic.pojo.entity.TeamSet; import org.springblade.desk.basic.pojo.entity.WorkCenter; import org.springblade.desk.basic.service.IBasicClazzService; +import org.springblade.desk.basic.service.IRelTeamSetUserService; import org.springblade.desk.basic.service.ITeamSetService; import org.springblade.desk.basic.service.IWorkCenterService; import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.stream.Collectors; + /** * 作业中心 Feign接口类 * @@ -30,6 +36,8 @@ public class WorkCenterClient implements IWorkCenterClient { private ITeamSetService service; @Resource private IBasicClazzService clazzService; + @Resource + private IRelTeamSetUserService relTeamSetUserService; @Override public R getById(Long workCenterId) { WorkCenter workCenter = workCenterService.getById(workCenterId); @@ -38,7 +46,20 @@ public class WorkCenterClient implements IWorkCenterClient { @Override public R getTeamSetById(Long id) { - return R.data(service.getById(id)); + TeamSet teamSet =service.getById(id); + QueryWrapper qwuser = new QueryWrapper<>(); + qwuser.eq("TEAM_SET_ID", id); + List users = relTeamSetUserService.list(qwuser); + if(null != users && users.size() > 0){ + String userIds = users.stream() + .map(RelTeamSetUser::getUserId) + .map(Object::toString) // 或者直接使用String::valueOf,效果相同 + .collect(Collectors.joining(",")); + teamSet.setTeamId(userIds); + } + + + return R.data(teamSet); } @Override diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.java new file mode 100644 index 00000000..b2d3dc25 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.java @@ -0,0 +1,25 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.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.basic.excel.TeamSetExcel; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.vo.TeamSetVO; + +import java.util.List; + +/** + * + * + * @author Tom Shuo + * @since 2025-12-16 + */ +public interface CenterTeamMapper extends BaseMapper { + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.xml new file mode 100644 index 00000000..b66c4a77 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java new file mode 100644 index 00000000..b5181377 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java @@ -0,0 +1,26 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.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.core.tool.api.R; +import org.springblade.desk.basic.excel.TeamSetExcel; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.vo.TeamSetVO; +import org.springblade.system.pojo.entity.User; + +import java.util.List; + +/** + * + * + * @author Tom Shuo + * @since 2025-12-16 + */ +public interface ICenterTeamService extends BaseService { + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java new file mode 100644 index 00000000..2614f4d2 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java @@ -0,0 +1,46 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.api.R; +import org.springblade.desk.basic.excel.TeamSetExcel; +import org.springblade.desk.basic.mapper.CenterTeamMapper; +import org.springblade.desk.basic.mapper.TeamSetMapper; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.vo.TeamSetVO; +import org.springblade.desk.basic.service.ICenterTeamService; +import org.springblade.desk.basic.service.IRelTeamSetUserService; +import org.springblade.desk.basic.service.ITeamSetService; +import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.User; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * + * + * @author Tom Shuo + * @since 2025-12-16 + */ +@Service +@Data +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class CenterTeamServiceImpl extends BaseServiceImpl implements ICenterTeamService { + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/CenterTeamWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/CenterTeamWrapper.java new file mode 100644 index 00000000..23879920 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/CenterTeamWrapper.java @@ -0,0 +1,38 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.wrapper; + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.vo.CenterTeamVO; +import org.springblade.desk.basic.pojo.vo.TeamSetVO; + +import java.util.Objects; + +/** + * [班组] 包装类,返回视图层所需的字段 + * + * @author Tom Shuo + * @since 2025-12-16 + */ +public class CenterTeamWrapper extends BaseEntityWrapper { + + public static CenterTeamWrapper build() { + return new CenterTeamWrapper(); + } + + @Override + public CenterTeamVO entityVO(CenterTeam teamSet) { + CenterTeamVO VO = Objects.requireNonNull(BeanUtil.copyProperties(teamSet, CenterTeamVO.class)); + + //User createUser = UserCache.getUser(teamSet.getCreateUser()); + //User updateUser = UserCache.getUser(teamSet.getUpdateUser()); + //teamSetVO.setCreateUserName(createUser.getName()); + //teamSetVO.setUpdateUserName(updateUser.getName()); + + return VO; + } +} diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java index cdaeb5d1..4540b217 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java @@ -112,7 +112,8 @@ public class UserController { TeamSet detail = workCenterClient.getTeamSetById(teamSet.getId()).getData(); if(detail != null){ - String teamId = detail.getTeamMemberId(); +// String teamId = detail.getTeamMemberId(); + String teamId = detail.getTeamId(); if(null != teamId && !"".equals(teamId)){ List ids = Func.toLongList(teamId); @@ -148,7 +149,8 @@ public class UserController { List teams = new ArrayList<>(); TeamSet detail = workCenterClient.getTeamSetById(teamSet.getId()).getData(); if(detail != null){ - String teamId = detail.getTeamMemberId(); +// String teamId = detail.getTeamMemberId(); + String teamId = detail.getTeamId(); if(null != teamId && !"".equals(teamId)){ List ids = Func.toLongList(teamId); QueryWrapper queryWrapper = new QueryWrapper<>(); diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java index c9707d11..464f3f9f 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java @@ -126,7 +126,8 @@ public class DeptServiceImpl extends ServiceImpl implements ID TeamSet detail = workCenterClient.getTeamSetById(teamSetId).getData(); if(detail != null){ - String teamId = detail.getTeamMemberId(); +// String teamId = detail.getTeamMemberId(); + String teamId = detail.getTeamId(); if(null != teamId && !"".equals(teamId)){ List ids = Func.toLongList(teamId); QueryWrapper queryWrapper = new QueryWrapper<>(); From e318154b149f6607977552e66a682ccb0023c312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Tue, 17 Mar 2026 14:02:46 +0800 Subject: [PATCH 10/38] =?UTF-8?q?=E8=BD=A6=E9=97=B4=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/basic/service/IUserRightService.java | 7 ++ .../service/impl/UserRightServiceImpl.java | 12 +++ .../desk/device/service/IRackSetService.java | 8 ++ .../service/impl/RackSetServiceImpl.java | 10 ++ .../produce/controller/PdaLoadController.java | 11 ++- .../produce/controller/PdaSaveController.java | 66 +++++++------ .../desk/produce/mapper/MakeRecMapper.xml | 2 +- .../desk/produce/service/IPdaLoadService.java | 6 +- .../desk/produce/service/IPdaSaveService.java | 1 - .../service/impl/MakeRecServiceImpl.java | 19 ++-- .../service/impl/PdaLoadServiceImpl.java | 99 +++++++++++++------ .../service/impl/PdaSaveServiceImpl.java | 59 +++++------ 12 files changed, 196 insertions(+), 104 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java index 046cf4b1..e404ecbf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java @@ -41,4 +41,11 @@ public interface IUserRightService extends BaseService { * @param vo */ void setVOValue(UserRightVO vo); + + /** + * 获取团队id + * @param userId + * @return + */ + List getTeamId(Long userId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java index 527080ae..a909b929 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java @@ -5,6 +5,8 @@ package org.springblade.desk.basic.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 jakarta.annotation.Resource; import lombok.AllArgsConstructor; import lombok.Data; @@ -12,6 +14,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; +import org.springblade.desk.basic.constant.UserRightConst; import org.springblade.desk.basic.excel.UserRightExcel; import org.springblade.desk.basic.mapper.UserRightMapper; import org.springblade.desk.basic.pojo.entity.UserRight; @@ -66,4 +69,13 @@ public class UserRightServiceImpl extends BaseServiceImpl getTeamId(Long userId) { + List bsTeamSet = this.list(Wrappers.lambdaQuery(UserRight.class).eq(UserRight::getUserId, userId).eq(UserRight::getUrType, UserRightConst.UR_TYPE_TEAM_SET)); + if (CollectionUtils.isEmpty(bsTeamSet)) { + return null; + } + return bsTeamSet.stream().map(UserRight::getTheId).toList(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java index 2c2f7aef..a16851b4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java @@ -67,4 +67,12 @@ public interface IRackSetService extends BaseService { * @return */ Boolean bind(@NotEmpty List ids, Integer deviceId); + + /** + * 根据挂具编号查询挂具信息 + * + * @param rsCode + * @return + */ + RackSetEntity getBsRackSetByCode(String rsCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java index 6d197291..da245702 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java @@ -26,6 +26,7 @@ package org.springblade.desk.device.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springblade.desk.device.mapper.RackSetMapper; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; @@ -91,4 +92,13 @@ public class RackSetServiceImpl extends BaseServiceImpl rackSets = this.list(Wrappers.lambdaQuery(RackSetEntity.class).eq(RackSetEntity::getRsCode, rsCode)); + if (CollectionUtils.isEmpty(rackSets)) { + return null; + } + return rackSets.get(0); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java index a7b29947..3fb0671e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java @@ -11,6 +11,7 @@ import org.springblade.desk.device.pojo.entity.RackSetEntity; import org.springblade.desk.device.pojo.vo.RackSetVO; import org.springblade.desk.device.wrapper.RackSetWrapper; import org.springblade.desk.produce.pojo.dto.TurnTypeDTO; +import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO; import org.springblade.desk.produce.service.IPdaLoadService; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springframework.web.bind.annotation.*; @@ -30,18 +31,21 @@ import org.springframework.web.bind.annotation.*; public class PdaLoadController { private final IPdaLoadService pdaLoadService; + @GetMapping(value = "/loadBindData/{cardNo}") @ApiOperationSupport(order = 1) @Operation(summary = "加载绑定需要的流程卡数据", description = "传入cardNo") public R loadBindData(@PathVariable String cardNo) { - return R.data(pdaLoadService.loadBindData(AuthUtil.getUser(), cardNo)); + return R.data(pdaLoadService.loadBindData(AuthUtil.getUserId(), cardNo)); } + @GetMapping(value = "getBsFeiBaSetByCode/{rsCode}") @ApiOperationSupport(order = 2) @Operation(summary = "根据挂具编码查询数据", description = "传入rsCode") public R getBsFeiBaSetByCode(@PathVariable String rsCode) { return R.data(pdaLoadService.getBsRackSetByCode(rsCode)); } + @GetMapping(value = "/getBsFeiBaSetByCodeUn/{fsCode}") @ApiOperationSupport(order = 3) @Operation(summary = "根据挂具编码查询数据(解绑)", description = "传入fsCode") @@ -55,16 +59,18 @@ public class PdaLoadController { public R getEcByDeviceCode(@PathVariable String deviceCode) { return R.data(pdaLoadService.getEcByCode(deviceCode)); } + @GetMapping(value = "/loadSubOrder/{cardNo}") @ApiOperationSupport(order = 5) @Operation(summary = "加载子件订单入库数据", description = "传入cardNo") public R loadSubOrder(@PathVariable String cardNo) { return R.data(pdaLoadService.loadSubOrder(cardNo)); } + @GetMapping(value = "/loadProTest/{cardNo}") @ApiOperationSupport(order = 6) @Operation(summary = "加载当前工序检验数据", description = "传入cardNo") - public R loadProTest(@PathVariable String cardNo) { + public R loadProTest(@PathVariable String cardNo) { return R.data(pdaLoadService.loadProTestWorkPlan(cardNo)); } @@ -74,6 +80,7 @@ public class PdaLoadController { public R loadPrMacToolUseByMtnCode(@PathVariable String mtnCode) { return R.data(pdaLoadService.loadPrMacToolUseByMtnCode(mtnCode)); } + @GetMapping(value = "/deletedProduceRun/{mtnCode}") @ApiOperationSupport(order = 8) @Operation(summary = "根据同槽号删除信息", description = "传入mtnCode") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java index 49b0d514..440d0fce 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java @@ -32,84 +32,94 @@ public class PdaSaveController { private final IPdaSaveService pdaSaveService; private final IBasicClazzService basicClazzService; + @Operation(summary = "流程卡与挂具绑定") @PostMapping("/gjBindingCrad") - public R gjBindingCrad(@RequestParam(value = "rsId") Long rsId,@RequestParam(value = "planListIds") String planListIds) { + public R gjBindingCrad(@RequestParam(value = "rsId") Long rsId, @RequestParam(value = "planListIds") String planListIds) { pdaSaveService.bindingCard(rsId, null, null, planListIds); - return R.success() ; + return R.success(); } + @Operation(summary = "挂具与飞靶绑定") @PostMapping("/gjBindingFb") - public R gjBindingFb(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "rsListIds") String rsListIds) { - pdaSaveService.binding(fsId, null, null,null, rsListIds); - return R.success() ; + public R gjBindingFb(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "rsListIds") String rsListIds) { + pdaSaveService.binding(fsId, null, null, null, rsListIds); + return R.success(); } + @Operation(summary = "飞靶与设备绑定") @PostMapping("/fbBindingEc") - public R fbBindingEc(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "ecId") Long ecId, - @RequestParam(value = "hangNum") Long hangNum,@RequestParam(value = "unFsBool") Boolean unFsBool) { + public R fbBindingEc(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "ecId") Long ecId, + @RequestParam(value = "hangNum") Long hangNum, @RequestParam(value = "unFsBool") Boolean unFsBool) { String hangNumName = ""; BasicClazz bsBasicClass = null; - if(hangNum != null&&hangNum != -1){ + if (hangNum != null && hangNum != -1) { bsBasicClass = basicClazzService.getById(hangNum); - if(bsBasicClass != null){ + if (bsBasicClass != null) { hangNumName = bsBasicClass.getName(); } - }else if(hangNum == -1){ + } else if (hangNum == -1) { hangNumName = "-1"; } - pdaSaveService.binding(fsId, ecId, unFsBool, hangNumName,null); + pdaSaveService.binding(fsId, ecId, unFsBool, hangNumName, null); // 删除产线设备对应的挂次号之前的数据 - if(bsBasicClass!= null){ + if (bsBasicClass != null) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(BasicClazz::getCode,bsBasicClass.getCode()); - wrapper.eq(BasicClazz::getBizType,"6"); - wrapper.lt(BasicClazz::getUpdateTime,bsBasicClass.getUpdateTime()); - wrapper.set(BasicClazz::getIsDeleted,1); + wrapper.eq(BasicClazz::getCode, bsBasicClass.getCode()); + wrapper.eq(BasicClazz::getBizType, "6"); + wrapper.lt(BasicClazz::getUpdateTime, bsBasicClass.getUpdateTime()); + wrapper.set(BasicClazz::getIsDeleted, 1); basicClazzService.update(null, wrapper); } - return R.success() ; + return R.success(); } + @Operation(summary = "流程卡与飞靶绑定") @PostMapping("/fbBindingCrad") - public R fbBindingCrad(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "planListIds") String planListIds) { + public R fbBindingCrad(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "planListIds") String planListIds) { pdaSaveService.bindingCard(null, fsId, null, planListIds); - return R.success() ; + return R.success(); } + @Operation(summary = "流程卡与设备绑定") @PostMapping("/ecBindingCrad") - public R ecBindingCrad(@RequestParam(value = "ecId") Long ecId,@RequestParam(value = "planListIds") String planListIds) { + public R ecBindingCrad(@RequestParam(value = "ecId") Long ecId, @RequestParam(value = "planListIds") String planListIds) { pdaSaveService.bindingCard(null, null, ecId, planListIds); - return R.success() ; + return R.success(); } + @Operation(summary = "挂具与设备绑定") @PostMapping("/gjBindingEc") - public R gjBindingEc(@RequestParam(value = "ecId") Long ecId,@RequestParam(value = "rsListIds") String rsListIds) { - pdaSaveService.binding(null, ecId, null,null, rsListIds); - return R.success() ; + public R gjBindingEc(@RequestParam(value = "ecId") Long ecId, @RequestParam(value = "rsListIds") String rsListIds) { + pdaSaveService.binding(null, ecId, null, null, rsListIds); + return R.success(); } + @Operation(summary = "烧结流程卡与设备绑定") @PostMapping("/sjEcBindingCard") public R sjEcBindingCard(@RequestBody SjEcBingCardVo sjEcBingCardVo) { pdaSaveService.sjBindingCard(sjEcBingCardVo); - return R.success() ; + return R.success(); } + @Operation(summary = "解绑") @PostMapping("/unBind") public R unBind(@RequestBody UnBingVo unBingVo) { pdaSaveService.unBind(unBingVo); - return R.success() ; + return R.success(); } + @Operation(summary = "获取烧结未解绑的绑定记录") @PostMapping("/getUnbindByCard") public R getUnbindByCard(@RequestParam(value = "cardNo") String cardNo) { - return R.data(pdaSaveService.getUnbindByCard(cardNo)) ; + return R.data(pdaSaveService.getUnbindByCard(cardNo)); } + @Operation(summary = "烧结设备解绑解绑") @PostMapping("/sjDeviceUnBind") public R sjDeviceUnBind(@RequestBody UnBingDeviceVo unBingDeviceVo) { pdaSaveService.sjDeviceUnBind(unBingDeviceVo); - return R.success() ; + return R.success(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml index 44bf291a..a5f7c4d7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml @@ -58,7 +58,7 @@ LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID - mr.IS_DELETED = 0 and a.worker = #{mesMakeRec.worker} + mr.IS_DELETED = 0 and mr.worker = #{mesMakeRec.worker} AND wo.WO_CODE LIKE concat(concat('%', #{mesMakeRec.worker}),'%') diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java index 9ede8993..67de301c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java @@ -24,11 +24,11 @@ public interface IPdaLoadService extends BaseService { *

方法名: loadBindData

*

方法描述: 加载绑定数据

* - * @param user 用户 + * @param userId 用户id * @param cardNo 卡号 * @return org.springblade.desk.produce.pojo.entity.WorkPlan */ - WorkPlan loadBindData(BladeUser user, String cardNo); + WorkPlan loadBindData(Long userId, String cardNo); /** *

方法名: getBsRackSetByCode

*

方法描述: 根据挂具编码查询数据

@@ -62,7 +62,7 @@ public interface IPdaLoadService extends BaseService { void deletedProduceRun(String mtnCode); - public WorkOrder checkPrWorkOrder(String cardNo); + WorkOrder checkPrWorkOrder(String cardNo); void handleBaoZhuangWorkPlan(List wpList, YieldOrder yo); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java index 9d577406..9b89641d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java @@ -34,7 +34,6 @@ public interface IPdaSaveService extends BaseService { * @param ecId 设备id * @param unFsBool 是否解绑 * @param rsListIds 绑定数据 - * @param listIds */ void binding(Long rsId, Long ecId, Boolean unFsBool,String hangNum,String rsListIds); /** diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java index 8b7bb5e8..038c85eb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java @@ -128,14 +128,6 @@ public class MakeRecServiceImpl extends BaseServiceImpl } } - private List getTeamId(Long userId) { - List bsTeamSet = userRightService.list(Wrappers.lambdaQuery(UserRight.class).eq(UserRight::getUserId, userId).eq(UserRight::getUrType, "bs_team_set")); - if (CollectionUtils.isEmpty(bsTeamSet)) { - return null; - } - return bsTeamSet.stream().map(UserRight::getTheId).toList(); - } - @Override @Transactional(rollbackFor = Exception.class) public boolean saveMakeRec(MakeRecDTO makeRecDTO) { @@ -432,8 +424,11 @@ public class MakeRecServiceImpl extends BaseServiceImpl @Override public IPage selectMesMakeRecPage(IPage page, MesMakeRecVO mesMakeRec) { - IPage mesMakeRecVOIPage = page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec)); - List records = mesMakeRecVOIPage.getRecords(); + if (mesMakeRec.getWorker() == null) { + mesMakeRec.setWorker(AuthUtil.getUserId()); + } + IPage mesMakeRecVoiPage = page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec)); + List records = mesMakeRecVoiPage.getRecords(); if (CollectionUtils.isNotEmpty(records)) { List ppsIds = new ArrayList<>(); List makeTeams = new ArrayList<>(); @@ -470,9 +465,9 @@ public class MakeRecServiceImpl extends BaseServiceImpl record.setNextPpsName(processSetMap.get(record.getNextPpsId())); record.setNextMakeTeamName(teamMap.get(record.getNextMakeTeam())); } - mesMakeRecVOIPage.setRecords(records); + mesMakeRecVoiPage.setRecords(records); } - return mesMakeRecVOIPage; + return mesMakeRecVoiPage; } @Override diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java index 227c0c28..77812e92 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java @@ -15,7 +15,11 @@ import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.desk.basic.mapper.CraftAbilityMapper; import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.entity.WorkCenter; import org.springblade.desk.basic.service.IRelTeamSetUserService; +import org.springblade.desk.basic.service.ITeamSetService; +import org.springblade.desk.basic.service.IUserRightService; import org.springblade.desk.dashboard.pojo.entity.*; import org.springblade.desk.dashboard.service.*; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; @@ -101,16 +105,23 @@ public class PdaLoadServiceImpl extends BaseServiceImpl tsIds = relTeamSetUserService. - list(Wrappers.lambdaQuery(RelTeamSetUser.class) - .eq(RelTeamSetUser::getUserId, user.getUserId())) - .stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList()); + List tsIds = userRightService.getTeamId(userId); //获取作业计划 - WorkPlan prWorkPlan = this.getOne(Wrappers.lambdaQuery(WorkPlan.class) - .eq(WorkPlan::getId, prWorkOrder.getWpId())); + WorkPlan workPlan = workPlanService.getById(prWorkOrder.getWpId()); //获取当前工序的下序 - WorkPlan nextPrWorkPlan = this.getOne(Wrappers.lambdaQuery(WorkPlan.class) - .eq(WorkPlan::getId, prWorkPlan.getNextWpId())); + WorkPlan nextPrWorkPlan = workPlanService.getById(workPlan.getNextWpId()); //获取当前工序的上序 - WorkPlan frontPrWorkPlan = this.getOne(Wrappers.lambdaQuery(WorkPlan.class) - .eq(WorkPlan::getId, prWorkPlan.getFrontWpId())); + WorkPlan frontPrWorkPlan = workPlanService.getById(workPlan.getFrontWpId()); //如果是最后一道工序(当前序下序为空或者下序的下序为空) if (nextPrWorkPlan == null || nextPrWorkPlan.getNextWpId() == null) { //如果是镀后入库则不验证 if (checkAfterPlating) { - throw new ServiceException("pda.nextWorkPlan.noNext"); + throw new ServiceException("工序已是最后一道!"); } } //验证作业中心 - //this.checkWorkCenter(checkCurrentProcess, frontPrWorkPlan, prWorkPlan, nextPrWorkPlan, tsIds, checkAfterPlating); + this.checkWorkCenter(checkCurrentProcess, frontPrWorkPlan, workPlan, nextPrWorkPlan, tsIds, checkAfterPlating); //状态是false或者上序为空,并且当前序(首道)状态未未开工时,获取当前序; - if (!checkCurrentProcess || (frontPrWorkPlan == null && prWorkPlan.getStatus().equals(WorkPlan.STATUS_NO_START))) { - return prWorkPlan; + if (!checkCurrentProcess || (frontPrWorkPlan == null && workPlan.getStatus().equals(WorkPlan.STATUS_NO_START))) { + return workPlan; } //如果是镀后入库则不验证 if (checkAfterPlating) { - if (prWorkPlan != null) { + if (workPlan != null) { //验证上道工序是否报工完成 - if (!WorkPlan.STATUS_WORK_OK.equals(prWorkPlan.getStatus())) { - throw new ServiceException("product.frontWpNotWork"); + if (!WorkPlan.STATUS_WORK_OK.equals(workPlan.getStatus())) { + throw new ServiceException("上序未报工完成,请联系相关人员处理!"); } } } @@ -249,9 +254,47 @@ public class PdaLoadServiceImpl extends BaseServiceImpl tsIds, boolean checkAfterPlating) { - + // todo 等待关联表开发完成 +// WorkCenter bsWorkCenter = null; +// BsTeamSetEntity teamSet; +// if (!checkCurrentProcess || (frontPrWorkPlan == null && prWorkPlan.getStatus().equals(WorkPlan.STATUS_NO_START)) || nextPrWorkPlan == null) { +// if (prWorkPlan.getMakeTeam() == null) { +// throw new ServiceException("当前工序无加工班组"); +// } +// +// // 根据当前工序班组查询作业中心 +// teamSet = bsTeamSetService.getById(prWorkPlan.getMakeTeam()); +// if (teamSet != null) { +// bsWorkCenter = centerTeam.getBsWorkCenter(); +// } +// // 验证当前登录人和当前工序的班组是否一致 +// this.checkMakeTeamOne(prWorkPlan, tsIds); +// if (checkAfterPlating) { +// prWorkPlanService.verifyMakeUnit(prWorkPlan); +// } +// } else { +// +// if (nextPrWorkPlan.getMakeTeam() == null) { +// throw new ServiceException("当前工序无加工班组"); +// } +// +// // 根据当前工序班组查询作业中心 +// centerTeam = bsCenterTeamService.getByTsId(nextPrWorkPlan.getMakeTeam().getTsId()); +// if (centerTeam != null) { +// bsWorkCenter = centerTeam.getBsWorkCenter(); +// } +// //验证当前登录人和当前工序的班组是否一致 +// this.checkMakeTeamOne(nextPrWorkPlan, tsIds); +// if (checkAfterPlating) { +// prWorkPlanService.verifyMakeUnit(nextPrWorkPlan); +// } +// } +// if (bsWorkCenter == null) { +// throw new ServiceException("当前工序无作业中心!"); +// } } + @Override public WorkOrder checkPrWorkOrder(String cardNo) { WorkOrder prWorkOrder = this.checkWo(cardNo); //车间订单状态小于已下达并且大于加工中的情况下,不允许下序接收 @@ -307,10 +350,10 @@ public class PdaLoadServiceImpl extends BaseServiceImpl macToolUseList = macToolUseService.list(Wrappers.query().lambda() .eq(MacToolUse::getBsRackSet, rsId) .eq(MacToolUse::getFinished, false) .eq(MacToolUse::getIsDeleted, 0).orderByDesc(MacToolUse::getMtnCode) ); - if(macToolUseList.size()>0){ + if (macToolUseList.size() > 0) { code = macToolUseList.get(0).getMtnCode(); } //如果未找到满足条件的同槽号 @@ -128,7 +128,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl0){ + if (macToolUseList.size() > 0) { code = macToolUseList.get(0).getMtnCode(); } //修改飞靶状态 @@ -174,15 +174,15 @@ public class PdaSaveServiceImpl extends BaseServiceImpl macToolUseList = macToolUseService.list(Wrappers.query().lambda() .eq(MacToolUse::getBsFeiBaSet, frackSet.getId()) .eq(MacToolUse::getIsDeleted, 0) ); //未标记解绑飞靶,则代表正常绑定 - if (unFsBool == null){ + if (unFsBool == null) { //获取以设备为基准的同槽号 code = macToolUseService.nextCode(2); //开始绑定 @@ -252,7 +252,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl qcProduceRuns = mesQcProduceRunService.list(Wrappers.lambdaQuery(). - eq(MesQcProduceRunEntity::getMtnCode,prMacToolUse.getMtnCode())); + eq(MesQcProduceRunEntity::getMtnCode, prMacToolUse.getMtnCode())); if (qcProduceRuns == null || qcProduceRuns.size() == 0) { continue; @@ -398,7 +398,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpllambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode())); + // WorkOrder wo = prWorkOrderService.getWorkOrderUniqueRec(rr.getPrtno(), rr.getSplcode(), rr.getSono()); + WorkOrder wo = workOrderService.getOne(Wrappers.lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode())); //syDockingLogService.sendDockingLog("查询原单", rr.getRedono(), rr.getPrtno()+","+rr.getSplcode()+","+rr.getSono()); if (wo == null) { wo = workOrderService.getOne(Wrappers.lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode())); @@ -449,7 +449,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl Date: Tue, 17 Mar 2026 14:15:44 +0800 Subject: [PATCH 11/38] =?UTF-8?q?=E7=83=A7=E7=BB=93=E6=A8=A1=E5=85=B7?= =?UTF-8?q?=E8=AE=A1=E5=88=92-=E9=9C=80=E6=B1=82feign=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...pplyClient.java => IMoldDemandClient.java} | 14 ++--- .../desk/order/feign/MoldApplyClient.java | 53 ------------------- .../desk/order/feign/MoldDemandClient.java | 29 ++++++++++ 3 files changed, 36 insertions(+), 60 deletions(-) rename blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/{IMoldApplyClient.java => IMoldDemandClient.java} (57%) delete mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldApplyClient.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldDemandClient.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldApplyClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldDemandClient.java similarity index 57% rename from blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldApplyClient.java rename to blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldDemandClient.java index 58baa9c5..76937fa3 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldApplyClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldDemandClient.java @@ -1,7 +1,7 @@ package org.springblade.desk.order.feign; import org.springblade.core.launch.constant.AppConstant; -import org.springblade.desk.order.pojo.entity.MoldApply; +import org.springblade.desk.order.pojo.entity.MoldDemand; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -13,20 +13,20 @@ import org.springframework.web.bind.annotation.GetMapping; @FeignClient( value = AppConstant.APPLICATION_DESK_NAME ) -public interface IMoldApplyClient { +public interface IMoldDemandClient { - String API_PREFIX = "/feign/moldApply/"; + String API_PREFIX = "/feign/moldDemand/"; - String SAVE_BY_DEMAND = API_PREFIX + "/saveByDemand"; + String SAVE = API_PREFIX + "/save"; /** * 生成模具计划 * - * @param moldApply + * @param moldDemand * @return */ - @GetMapping(SAVE_BY_DEMAND) - Boolean saveByDemand(MoldApply moldApply); + @GetMapping(SAVE) + Boolean save(MoldDemand moldDemand); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldApplyClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldApplyClient.java deleted file mode 100644 index b8bb90db..00000000 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldApplyClient.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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.order.feign; - -import io.swagger.v3.oas.annotations.Hidden; -import lombok.RequiredArgsConstructor; -import org.springblade.core.tenant.annotation.NonDS; -import org.springblade.desk.order.pojo.entity.MoldApply; -import org.springblade.desk.order.service.IMoldApplyService; -import org.springframework.web.bind.annotation.RestController; - -/** - * Feign 排产相关定时任务接口 - * - * @author Chill - */ -@NonDS -@Hidden() -@RestController -@RequiredArgsConstructor -public class MoldApplyClient implements IMoldApplyClient { - - private final IMoldApplyService moldApplyService; - - - @Override - public Boolean saveByDemand(MoldApply moldApply) { - return moldApplyService.saveByDemand(moldApply); - } -} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldDemandClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldDemandClient.java new file mode 100644 index 00000000..15286703 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldDemandClient.java @@ -0,0 +1,29 @@ +package org.springblade.desk.order.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import lombok.RequiredArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.desk.order.pojo.entity.MoldDemand; +import org.springblade.desk.order.service.IMoldDemandService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Feign 排产相关定时任务接口 + * + * @author Chill + */ +@NonDS +@Hidden() +@RestController +@RequiredArgsConstructor +public class MoldDemandClient implements IMoldDemandClient { + + private final IMoldDemandService moldDemandService; + + @Override + @PostMapping(SAVE) + public Boolean save(MoldDemand moldDemand) { + return moldDemandService.save(moldDemand); + } +} From 4b6eb764fe68fa4b9f994773848e45bb44aed2c4 Mon Sep 17 00:00:00 2001 From: qinyulong Date: Tue, 17 Mar 2026 14:37:20 +0800 Subject: [PATCH 12/38] =?UTF-8?q?=E9=A3=9E=E9=9D=B6=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=EF=BC=9A=E6=9C=AA=E6=9B=B4=E6=96=B0=E7=8A=B6=E6=80=81=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FeiBaSetServiceImpl.java | 85 +++++++++++-------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java index 9ce402d3..506c1067 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java @@ -26,6 +26,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -105,42 +106,56 @@ public class FeiBaSetServiceImpl extends BaseServiceImpl jsonList = JSONArray.parseArray(result.getJSONArray("data").toJSONString(), JSONObject.class); - if (jsonList != null && jsonList.size() > 0) { - //接口返回飞靶code即为本系统code - Map equCodeObjectMap = jsonList.stream().collect(Collectors.toMap( - e -> e.getString("code"), - e -> e)); - Set equCodes = equCodeObjectMap.keySet(); - if (equCodes == null || equCodes.size() < 1) { - log.error("同步飞靶数据接口返回数据为空"); - return; - } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(CollectionUtils.isNotEmpty(equCodes), FeiBaSetEntity::getFsCode, equCodes); - List feiBaSetEntityList = this.list(lambdaQueryWrapper); - Map FeiBaSetEntityMap = new HashMap<>(); - if (null != feiBaSetEntityList && feiBaSetEntityList.size() > 0) { - feiBaSetEntityList.stream().collect(Collectors.toMap( - e -> e.getFsCode(), - e -> e)); - } - List saves = new ArrayList<>(); - for (JSONObject jsonObject : jsonList) { - FeiBaSetEntity feiBaSet = FeiBaSetEntityMap.get(jsonObject.getString("code")); - feiBaSet = Optional.ofNullable(feiBaSet).orElse(new FeiBaSetEntity()); - feiBaSet.setFsCode(jsonObject.getString("code")); - feiBaSet.setFsType(jsonObject.getString("name")); - if (null == feiBaSet.getId()) { - feiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_FREE); - } - saves.add(feiBaSet); - } - boolean saved = this.saveOrUpdateBatch(saves); - if (saved) { - log.debug("同步飞靶数据成功"); - } else { - log.error("同步飞靶数据失败"); + if (CollectionUtils.isEmpty(jsonList)) { + log.error("同步飞靶数据接口返回数据为空"); + return; + } + + // 接口返回飞靶code即为本系统code + Map equCodeObjectMap = jsonList.stream() + .collect(Collectors.toMap( + e -> e.getString("code"), + Function.identity() + )); + + Set equCodes = equCodeObjectMap.keySet(); + if (CollectionUtils.isEmpty(equCodes)) { + log.error("同步飞靶数据接口返回数据code字段为空"); + return; + } + + // 查询数据库中已存在的记录 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(FeiBaSetEntity::getFsCode, equCodes); + List feiBaSetEntityList = this.list(lambdaQueryWrapper); + + Map feiBaSetEntityMap = feiBaSetEntityList.stream() + .collect(Collectors.toMap( + FeiBaSetEntity::getFsCode, + Function.identity() + )); + + // 批量更新/保存 + List saves = jsonList.stream().map(jsonObject -> { + String code = jsonObject.getString("code"); + FeiBaSetEntity entity = feiBaSetEntityMap.getOrDefault(code, new FeiBaSetEntity()); + + entity.setFsCode(code); + entity.setFsType(jsonObject.getString("name")); + + // 新增记录时设置默认状态 + if (entity.getId() == null) { + entity.setStatus(FeiBaSetEntity.FS_STATUS_FREE); } + + return entity; + }).collect(Collectors.toList()); + + boolean success = this.saveOrUpdateBatch(saves); + if (!success) { + log.error("同步飞靶数据保存失败"); + } else { + log.debug("同步飞靶数据保存成功"); } } } catch (Exception e) { From ccb139cf1ca04bfc3a3bfa3425dba32cc39eed69 Mon Sep 17 00:00:00 2001 From: liweidong-hj Date: Tue, 17 Mar 2026 14:37:37 +0800 Subject: [PATCH 13/38] =?UTF-8?q?=E5=B7=A5=E8=89=BA=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=80=81mes=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/LauncherConstant.java | 4 +- .../dashboard/pojo/entity/DsCraftEntity.java | 6 + .../pojo/entity/DsPartBasicsEntity.java | 61 + .../dashboard/pojo/entity/DsPartEntity.java | 7 + .../desk/dashboard/pojo/entity/DsPartSub.java | 121 ++ .../desk/dashboard/pojo/vo/DsPartBomVO.java | 6 + .../desk/dashboard/pojo/vo/DsTaskingVO.java | 8 +- .../pojo/entity/ProcessSetEntity.java | 2 +- .../desk/basic/mapper/CraftAbilityMapper.java | 4 + .../desk/basic/mapper/CraftAbilityMapper.xml | 7 + .../basic/service/ICraftAbilityService.java | 13 + .../service/impl/CraftAbilityServiceImpl.java | 10 + .../controller/DsTaskingController.java | 36 +- .../dashboard/mapper/BsProcessSetMapper.java | 3 + .../desk/dashboard/mapper/CraftMapper.xml | 4 + .../desk/dashboard/mapper/DsCraftMapper.java | 2 + .../dashboard/mapper/DsPartBasicsMapper.java | 42 + .../desk/dashboard/mapper/DsPartMapper.java | 5 +- .../dashboard/mapper/DsProcessMapper.java | 2 + .../dashboard/mapper/DsTaskingMapper.java | 24 + .../dashboard/mapper/PartBasicsMapper.xml | 10 + .../desk/dashboard/mapper/PartMapper.xml | 10 +- .../dashboard/mapper/PartRelationMapper.xml | 3 +- .../desk/dashboard/mapper/ProcessMapper.xml | 4 + .../dashboard/mapper/ProcessSetMapper.xml | 5 + .../desk/dashboard/mapper/TaskingMapper.xml | 13 + .../service/IBsProcessSetService.java | 8 + .../dashboard/service/IDsCraftService.java | 7 + .../service/IDsPartBasicsService.java | 45 + .../dashboard/service/IDsPartService.java | 12 +- .../dashboard/service/IDsProcessService.java | 7 + .../dashboard/service/IDsTaskingService.java | 14 +- .../service/impl/BsProcessSetServiceImpl.java | 6 + .../service/impl/DsCraftServiceImpl.java | 6 + .../service/impl/DsPartBasicsServiceImpl.java | 52 + .../service/impl/DsPartServiceImpl.java | 12 +- .../service/impl/DsProcessServiceImpl.java | 5 + .../service/impl/DsTaskingServiceImpl.java | 1130 ++++++++++++++--- .../dashboard/utils/IncrementNumberUtil.java | 36 + .../impl/PlateGoodsRecordServiceImpl.java | 10 +- 40 files changed, 1567 insertions(+), 195 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartBasicsEntity.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartSub.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartBasicsMapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartBasicsMapper.xml create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartBasicsService.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartBasicsServiceImpl.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/utils/IncrementNumberUtil.java diff --git a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java index be4404d7..2f1548cd 100644 --- a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java +++ b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java @@ -31,8 +31,8 @@ public interface LauncherConstant { /** * nacos dev 地址 */ - String NACOS_DEV_ADDR = "192.168.249.27:8848"; -// String NACOS_DEV_ADDR = "127.0.0.1:8848"; +// String NACOS_DEV_ADDR = "192.168.249.27:8848"; + String NACOS_DEV_ADDR = "127.0.0.1:8848"; /** * nacos prod 地址 diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java index 76838246..b15e86a2 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java @@ -107,5 +107,11 @@ public class DsCraftEntity extends BaseEntity { @Schema(description = "返工单号") private String reworkOrder; + /** + * 零件号 + */ + @Schema(description = "零件号") + private String partCode; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartBasicsEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartBasicsEntity.java new file mode 100644 index 00000000..60485648 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartBasicsEntity.java @@ -0,0 +1,61 @@ +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 + * @since + */ +@Data +@TableName("DS_PART_BASICS") +@Schema(description = "DsPartBasics对象") +@EqualsAndHashCode(callSuper = true) +public class DsPartBasicsEntity extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * 零件号 + */ + @Schema(description = "零件号") + private String partCode; + + /** + * 零件名称 + */ + @Schema(description = "零件名称") + private String partName; + + /** + * 产品型号 + */ + @Schema(description = "产品型号") + private String productType; + + /** + * 是否烧结产品 + */ + @Schema(description = "是否烧结产品") + private String isSintering; + + /** + * 是否玻璃饼 + */ + @Schema(description = "是否玻璃饼") + private String isClassCake; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remarks; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java index 4d11ccc6..90662a8a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java @@ -318,4 +318,11 @@ public class DsPartEntity extends BaseEntity { @Schema(description = "是否电镀") private String isElectroplating; + /** + * 子件类型 + * A代表组合件,M代表零件,R代表原材料,B代表外购件,P代表虚拟件,G代表产品 + */ + @Schema(description = "子件类型") + private String subType; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartSub.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartSub.java new file mode 100644 index 00000000..8bb6bf24 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartSub.java @@ -0,0 +1,121 @@ +package org.springblade.desk.dashboard.pojo.entity; + +import lombok.Data; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * @author: 没有这张表 只是查询用于接收 + * @create: 2026-03-14 + */ +@Data +public class DsPartSub { + + /** + * 插针 + */ + public static Short SIN_TER_TYPE_CZ = 1; + /** + * 壳体 + */ + public static Short SIN_TER_TYPE_KT = 2; + /** + * 自制玻璃饼 + */ + public static Short SIN_TER_TYPE_BLB = 3; + /** + * 其他 + */ + public static Short SIN_TER_TYPE_QT = 4; + /** + * 石墨模 + */ + public static Short SIN_TER_TYPE_SMM = 5; + public static Map subTypeMap = new HashMap<>(6); + public static Map sinTerTypeMap = new HashMap<>(6); + + static { + subTypeMap.put("A", "组合件"); + subTypeMap.put("M", "零件"); + subTypeMap.put("R", "原材料"); + subTypeMap.put("B", "外购件"); + subTypeMap.put("P", "虚拟件"); + subTypeMap.put("G", "产品"); + + sinTerTypeMap.put(SIN_TER_TYPE_CZ, "插针"); + sinTerTypeMap.put(SIN_TER_TYPE_KT, "壳体"); + sinTerTypeMap.put(SIN_TER_TYPE_BLB, "自制玻璃饼"); + sinTerTypeMap.put(SIN_TER_TYPE_QT, "其他"); + sinTerTypeMap.put(SIN_TER_TYPE_SMM, "石墨模"); + } + + /** + * 流水号 + */ + private Long psId; + /** + * 零件号 + */ + private String partCode; + /** + * 子件号 + */ + private String subCode; + /** + * 子件名称 + */ + private String subName; + /** + * 定额 + */ + private Double quota; + /** + * 子件类型 + * A代表组合件,M代表零件,R代表原材料,B代表外购件,P代表虚拟件,G代表产品 + */ + private String subType; + /** + * 烧结子件种类 + * 1插针,2壳体,3自制玻璃饼,4其它,5石墨模 + */ + private Integer sinTerType; + /** + * 材料 + */ + private String material; + /** + * 面积 + */ + private Double area; + /** + * 镀种 + */ + private String plate; + /** + * 产品系列 + */ + private String productType; + /** + * 镀层代号 + */ + private String plateCode; + /** + * 镀层厚度 + */ + private String plateThickness; + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 配置码 + */ + private String configNo; + /** + * 备注 + */ + private String memo; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartBomVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartBomVO.java index eecf8668..fd192609 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartBomVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartBomVO.java @@ -76,4 +76,10 @@ public class DsPartBomVO { */ @Schema(description = "子件PDM图纸链接") private String zDocLink; + + /** + * 定额 + */ + @Schema(description = "定额") + private Double quota; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java index 0ca4335b..235d61f8 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java @@ -45,11 +45,17 @@ public class DsTaskingVO extends DsTaskingEntity { @Serial private static final long serialVersionUID = 1L; +// /** +// * 子件信息 +// */ +// @Schema(description = "子件信息") +// private List children; + /** * 子件信息 */ @Schema(description = "子件信息") - private List children; + private List children; /** * 任务状态 diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/ProcessSetEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/ProcessSetEntity.java index ed5fe9bd..8d04926a 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/ProcessSetEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/ProcessSetEntity.java @@ -87,7 +87,7 @@ public class ProcessSetEntity extends BaseEntity { @Schema(description = "标准周期") private BigDecimal cycle; /** - * 是否主工序 + * 是否主工序 0否 1是 */ @Schema(description = "是否主工序") private String isMain; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.java index 3889e6b8..5f273966 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.java @@ -62,4 +62,8 @@ public interface CraftAbilityMapper extends BaseMapper { */ List export(@Param("ew") Wrapper queryWrapper); + + CraftAbilityEntity selectOldMesCraftAbilityByOldCaId(@Param("caId") Long caId); + + CraftAbilityEntity selectByCaCode(@Param("caCode") String caCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.xml index ebae4858..e485b0aa 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.xml @@ -27,5 +27,12 @@ + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java index 5f1b59c5..7b102a4a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java @@ -60,4 +60,17 @@ public interface ICraftAbilityService extends BaseService { */ List export(Wrapper queryWrapper); + /** + * 根据老mes工艺能力ID查询 + * @param caId + * @return + */ + CraftAbilityEntity selectOldMesCraftAbilityByOldCaId(Long caId); + + /** + * 根据工艺能力编码查询 + * @param caCode + * @return + */ + CraftAbilityEntity selectByCaCode(String caCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java index 0aad84f2..df55718b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java @@ -62,4 +62,14 @@ public class CraftAbilityServiceImpl extends BaseServiceImpl partDetail(@RequestParam Long taskId,@RequestParam String version) { - DsPartSynthesisVO detail = dsTaskingService.getPartDetail(taskId,version); + public R partDetail(@RequestParam(required = false) Long taskId, + @RequestParam(required = false) String partCode, + @RequestParam String version) { + boolean hasTask = taskId != null; + boolean hasPart = partCode != null && !partCode.trim().isEmpty(); + + if (hasTask == hasPart) { + throw new IllegalArgumentException("taskId 和 partCode 必须且只能有一个有值"); + } + + DsPartSynthesisVO detail = dsTaskingService.getPartDetail(taskId,version,partCode); return R.data(detail); } @@ -241,11 +251,19 @@ public class DsTaskingController extends BladeController { @GetMapping("/processAuthorized") @ApiOperationSupport(order = 1) @Operation(summary = "工艺编制", description = "传入dsCraft") - public R processAuthorized(@RequestParam Long taskId, + public R processAuthorized(@RequestParam(required = false) Long taskId, + @RequestParam(required = false) String partCode, @RequestParam(required = false) String rank, @RequestParam String version) { - DsPartAuthorizedVO detail = dsTaskingService.processAuthorized(taskId,rank,version); + boolean hasTask = taskId != null; + boolean hasPart = partCode != null && !partCode.trim().isEmpty(); + + if (hasTask == hasPart) { + throw new IllegalArgumentException("taskId 和 partCode 必须且只能有一个有值"); + } + + DsPartAuthorizedVO detail = dsTaskingService.processAuthorized(taskId,partCode,rank,version); return R.data(detail); } @@ -383,4 +401,14 @@ public class DsTaskingController extends BladeController { } + /** + * 零件信息表 详情-工艺详情 + */ + @GetMapping("/syncTasking") + public R craftDetail() { + boolean b = dsTaskingService.syncTasking(); + return R.data(b); + } + + } 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 cc752b81..82bad3e4 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 @@ -32,6 +32,7 @@ import org.apache.ibatis.annotations.Param; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.vo.BsProcessSetVO; import org.springblade.desk.dashboard.excel.BsProcessSetExcel; +import org.springblade.scheduling.pojo.entity.ProcessSetEntity; import java.util.List; @@ -64,4 +65,6 @@ public interface BsProcessSetMapper extends BaseMapper { BsProcessSetEntity selectBsProcessSetByProcessCode(@Param("processCode")String processCode); List selectAll(); + + BsProcessSetEntity selectOldMesProcessSetByOldPpsId(@Param("oldPpsId") Long oldPpsId); } 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 f80740cf..24b85bbe 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 @@ -82,5 +82,9 @@ + 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 8498ebb8..23edd3eb 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 @@ -81,4 +81,6 @@ public interface DsCraftMapper extends BaseMapper { * @return */ DsCraftEntity selectDsCraftByPartCodeAndVersion(@Param("partCode")Long partCode,@Param("partVersion")String partVersion); + + List selectOldMesCraftByOldMesPartId(@Param("oldMesPartId") Long oldMesPartId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartBasicsMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartBasicsMapper.java new file mode 100644 index 00000000..d0572f6d --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartBasicsMapper.java @@ -0,0 +1,42 @@ +/** + * 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 com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springblade.desk.dashboard.pojo.entity.DsPartBasicsEntity; + +/** + * 零件基础信息表 Mapper 接口 + * + * @author BladeX + * @since 2025-11-12 + */ +public interface DsPartBasicsMapper extends BaseMapper { + + + DsPartBasicsEntity selectPartCode(@Param("partCode") String partCode); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java index 2614a79a..2ff60108 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java @@ -26,6 +26,7 @@ package org.springblade.desk.dashboard.mapper; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartSub; import org.springblade.desk.dashboard.pojo.vo.*; import org.springblade.desk.dashboard.excel.DsPartExcel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -76,7 +77,7 @@ public interface DsPartMapper extends BaseMapper { * @param partCode * @return */ - DsPartEntity selectDsPartByPatCode(@Param("partCode")String partCode); + List selectDsPartByPatCode(@Param("partCode")String partCode); /** * 零件过期时间区间查询 @@ -148,4 +149,6 @@ public interface DsPartMapper extends BaseMapper { List selectDsPartVersionByIds(@Param("ids") List idList); List selectPartByDate(@Param("startDate") Date startDate,@Param("endDate") Date endDate); + + List selectDsPartSub(@Param("partCode") String partCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProcessMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProcessMapper.java index dd02582a..0d359039 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProcessMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProcessMapper.java @@ -73,4 +73,6 @@ public interface DsProcessMapper extends BaseMapper { * @return */ List selectDsProcessByIds(@Param("processIds")List processIds); + + List selectOldMesProcessByOldMesCraftId(@Param("oldMesCraftId") Long oldMesCraftId); } 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 5744db14..9b953202 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 @@ -25,6 +25,7 @@ */ package org.springblade.desk.dashboard.mapper; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsTaskingEntity; import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO; import org.springblade.desk.dashboard.excel.DsTaskingExcel; @@ -32,6 +33,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 java.util.Date; import java.util.List; /** @@ -105,4 +108,25 @@ public interface DsTaskingMapper extends BaseMapper { @Param("reworkOrder")String reworkOrder, @Param("batchNo")String batchNo); + + /** + * 获取最近的同步时间 + * @return + */ + DsTaskingEntity getMaxSyncTime(); + + /** + * 查询老mes + * @param startTime + * @param endTime + * @return + */ + List selectOldMesTasking(@Param("startTime") Date startTime,@Param("endTime") Date endTime); + + /** + * 获取老mes的零件 + * @param partCode + * @return + */ + DsPartEntity getOldMesPartByPartCode(@Param("partCode") String partCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartBasicsMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartBasicsMapper.xml new file mode 100644 index 00000000..ed740816 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartBasicsMapper.xml @@ -0,0 +1,10 @@ + + + + + + + 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 438b0647..d0385381 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 @@ -343,7 +343,8 @@ p.DOC_LINK as bDocLink, c.PART_CODE as zPartCode, c.PART_NAME as zPartName, - c.DOC_LINK as zDocLink + c.DOC_LINK as zDocLink, + c.QUOTA as quota FROM DS_PART_RELATION r LEFT JOIN DS_PART p ON r.PART_ID = p.ID LEFT JOIN DS_PART c ON r.CHILD_PART_ID = c.ID @@ -380,6 +381,13 @@ WHERE update_time BETWEEN TO_DATE(#{startDate}, 'yyyy-mm-dd hh24:mi:ss') AND TO_DATE(#{endDate}, 'yyyy-mm-dd hh24:mi:ss'); + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml index b979f296..50977c24 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml @@ -41,7 +41,8 @@ p.DOC_LINK as bDocLink, c.PART_CODE as zPartCode, c.PART_NAME as zPartName, - c.DOC_LINK as zDocLink + c.DOC_LINK as zDocLink, + c.QUOTA as quota FROM DS_PART_RELATION r LEFT JOIN DS_PART p ON r.PART_ID = p.ID LEFT JOIN DS_PART c ON r.CHILD_PART_ID = c.ID 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 1bbf67e6..3cfe562b 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 @@ -48,5 +48,9 @@ #{id} + 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 d303d1fd..d27ef025 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 @@ -47,5 +47,10 @@ + + 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 2c70e397..1524f020 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 @@ -123,5 +123,18 @@ and BATCH_NO = #{batchNo} and REWORK_ORDER = #{reworkOrder} + + + 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 0f3f7e5e..079c37ad 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 @@ -31,6 +31,7 @@ import org.springblade.core.mp.base.BaseService; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.vo.BsProcessSetVO; import org.springblade.desk.dashboard.excel.BsProcessSetExcel; +import org.springblade.scheduling.pojo.entity.ProcessSetEntity; import java.util.List; /** @@ -86,4 +87,11 @@ public interface IBsProcessSetService extends BaseService { * @return */ List getProcessSetList(); + + /** + * 根据老mes的工序设置ID 查询 + * @param oldPpsId + * @return + */ + BsProcessSetEntity selectOldMesProcessSetByOldPpsId(Long oldPpsId); } 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 8103fd94..acc10646 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 @@ -184,4 +184,11 @@ public interface IDsCraftService extends BaseService { * @return */ DsCraftEntity selectDsCraftByPartCodeAndVersion(Long partCode,String partVersion); + + /** + * 根据老mes partId查询老mes工艺 + * @param oldMesPartId + * @return + */ + List selectOldMesCraftByOldMesPartId(Long oldMesPartId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartBasicsService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartBasicsService.java new file mode 100644 index 00000000..255d1289 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartBasicsService.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.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.dashboard.pojo.entity.DsPartBasicsEntity; + +/** + * 零件基础信息表 服务类 + * + * @author BladeX + * @since 2025-11-12 + */ +public interface IDsPartBasicsService extends BaseService { + + /** + * 根据零件号查询 + * @param partCode + * @return + */ + DsPartBasicsEntity selectByPartCode(String partCode); +} 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 f7c92c51..8ec92025 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 @@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.dashboard.excel.DsPartExcel; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartSub; import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity; import org.springblade.desk.dashboard.pojo.vo.*; @@ -219,7 +220,7 @@ public interface IDsPartService extends BaseService { * @param partCode * @return */ - DsPartEntity selectDsPartByPatCode(String partCode); + List selectDsPartByPatCode(String partCode); /** * 根据零件号、工序ID、版本号、工艺级别查询对应的检验项目 @@ -230,4 +231,13 @@ public interface IDsPartService extends BaseService { * @return 检验项目列表 */ List selectDsProcessProjectByPartNoAndPpsId(String partCode, String orders, String partVersion, String rank); + + /** + * 查询老mes的子件信息 + * @param partCode + * @return + */ + List selectDsPartSub(String partCode); + + List selectDsPartVersionByIds(List idList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java index 7b82a4a2..4f727183 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java @@ -90,4 +90,11 @@ public interface IDsProcessService extends BaseService { * @return */ boolean addOrEdit(DsCraftEntity craft, List processList, List processDeleteIds, List projectDeleteIds); + + /** + * 根据老mes的工艺id查询老mes的工序 + * @param oldMesCraftId + * @return + */ + List selectOldMesProcessByOldMesCraftId(Long oldMesCraftId); } 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 1471874e..7189cec2 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 @@ -136,17 +136,19 @@ public interface IDsTaskingService extends BaseService { * 零件 子件 详情 * @param taskId 零件工艺信息ID * @param version 版本号 + * @param partCode 零件号 * @return 零件详细信息 */ - DsPartSynthesisVO getPartDetail(Long taskId, String version); + DsPartSynthesisVO getPartDetail(Long taskId, String version, String partCode); /** * 工艺编制 * @param taskId 任务ID + * @param partCode 零件号 * @param rank 工艺等级 * @return version 版本号 */ - DsPartAuthorizedVO processAuthorized(Long taskId, String rank,String version); + DsPartAuthorizedVO processAuthorized(Long taskId, String partCode, String rank, String version); /** @@ -220,4 +222,12 @@ public interface IDsTaskingService extends BaseService { * @return */ boolean authorizedPart(DsPartEntity dsPart, List zPartList); + + + /** + * 同步任务 + * @return + */ + boolean syncTasking(); + } 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 96854756..1e503f50 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 @@ -36,6 +36,7 @@ import org.springblade.desk.dashboard.mapper.BsProcessSetMapper; import org.springblade.desk.dashboard.service.IBsProcessSetService; import org.springblade.desk.dashboard.service.IBsProcessTeamService; import org.springblade.desk.dashboard.service.IBsTeamSetService; +import org.springblade.scheduling.pojo.entity.ProcessSetEntity; import org.springblade.system.feign.IUserClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -171,4 +172,9 @@ public class BsProcessSetServiceImpl extends BaseServiceImpl selectOldMesCraftByOldMesPartId(Long oldMesPartId) { + + return craftMapper.selectOldMesCraftByOldMesPartId(oldMesPartId); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartBasicsServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartBasicsServiceImpl.java new file mode 100644 index 00000000..e53a4eef --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartBasicsServiceImpl.java @@ -0,0 +1,52 @@ +/** + * 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.core.mp.base.BaseServiceImpl; +import org.springblade.desk.dashboard.mapper.DsPartBasicsMapper; +import org.springblade.desk.dashboard.pojo.entity.DsPartBasicsEntity; +import org.springblade.desk.dashboard.service.IDsPartBasicsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 零件基础信息 服务实现类 + * + * @author BladeX + * @since 2025-11-12 + */ +@Service +public class DsPartBasicsServiceImpl extends BaseServiceImpl implements IDsPartBasicsService { + + @Autowired + DsPartBasicsMapper partBasicsMapper; + + @Override + public DsPartBasicsEntity selectByPartCode(String partCode) { + return partBasicsMapper.selectPartCode(partCode); + } +} 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 1fe82342..9a981690 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 @@ -506,7 +506,7 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartByPatCode(String partCode) { return dsPartMapper.selectDsPartByPatCode(partCode); } @@ -530,4 +530,14 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartSub(String partCode) { + return dsPartMapper.selectDsPartSub(partCode); + } + + @Override + public List selectDsPartVersionByIds(List idList) { + return dsPartMapper.selectDsPartVersionByIds(idList); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java index 7c717f55..37ca2a90 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java @@ -160,4 +160,9 @@ public class DsProcessServiceImpl extends BaseServiceImpl selectOldMesProcessByOldMesCraftId(Long oldMesCraftId) { + return processMapper.selectOldMesProcessByOldMesCraftId(oldMesCraftId); + } + } 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 5a642911..0e497aaa 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 @@ -32,6 +32,7 @@ import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.SpringUtil; +import org.springblade.desk.basic.service.ICraftAbilityService; import org.springblade.desk.dashboard.constant.*; import org.springblade.desk.dashboard.pojo.dto.DsTaskingDTO; import org.springblade.desk.dashboard.pojo.entity.*; @@ -39,10 +40,16 @@ import org.springblade.desk.dashboard.pojo.vo.*; import org.springblade.desk.dashboard.excel.DsTaskingExcel; import org.springblade.desk.dashboard.mapper.DsTaskingMapper; import org.springblade.desk.dashboard.service.*; +import org.springblade.desk.order.pojo.entity.MoldApply; +import org.springblade.desk.order.pojo.entity.MoldDemand; import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.service.IMoldApplyService; +import org.springblade.desk.order.service.IMoldDemandService; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.service.IWorkPlanService; +import org.springblade.desk.quality.pojo.request.ReviewSheetErpSearch; +import org.springblade.desk.quality.service.IReviewSheetService; import org.springblade.erpdata.feign.IErpDataReworkTaskClient; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.scheduling.pojo.entity.WorkPlanEntity; @@ -55,6 +62,8 @@ 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.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -63,6 +72,7 @@ import java.sql.SQLException; import java.util.*; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -136,6 +146,14 @@ public class DsTaskingServiceImpl extends BaseServiceImpl partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); - //获取所有子件ID - List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(idList)){ - continue; - } - //获取版本号 根据子件ID - List partVersionList = partVersionService.selectByPartIds(idList); - List list = new ArrayList<>(); - for (DsPartVersionEntity dsPartVersionEntity : partVersionList) { - //根据零件编码 和 版本号查询数据 - List taskStatusList = new ArrayList<>(Arrays.asList( - TaskingConstant.TASK_STATUS_WAIT, - TaskingConstant.TASK_STATUS_ALREADY, - TaskingConstant.TASK_STATUS_UNDERWAY - )); - List dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList); - - List collect = dsTaskingEntityList.stream() - .map(entity -> { - DsTaskingIsCompletedVO vo = new DsTaskingIsCompletedVO(); - BeanUtils.copyProperties(entity, vo); - return vo; - }) - .collect(Collectors.toList()); - - list.addAll(collect); - } +// if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){ +// //查询子件信息 +// List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); +// //获取所有子件ID +// List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); +// if(CollectionUtils.isEmpty(idList)){ +// continue; +// } +// //获取版本号 根据子件ID +// List partVersionList = partVersionService.selectByPartIds(idList); +// List list = new ArrayList<>(); +// for (DsPartVersionEntity dsPartVersionEntity : partVersionList) { +// //根据零件编码 和 版本号查询数据 +// List taskStatusList = new ArrayList<>(Arrays.asList( +// TaskingConstant.TASK_STATUS_WAIT, +// TaskingConstant.TASK_STATUS_ALREADY, +// TaskingConstant.TASK_STATUS_UNDERWAY +// )); +// List dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList); +// +// List collect = dsTaskingEntityList.stream() +// .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); +// } +// } - if(!CollectionUtils.isEmpty(list)){ - dsTaskingVO.setChildren(list); - } + //查询子件信息 + List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); + //获取所有子件ID + List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(idList)) { + List dsPartEntityList = partService.selectDsPartVersionByIds(idList); +// for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { +// dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName()); +// } + dsTaskingVO.setChildren(dsPartEntityList); } } } @@ -306,7 +336,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl processEntities = processService.selectDsProcessByCraftId(craft.getId()); if(CollectionUtils.isEmpty(processEntities)){ - throw new ServiceException("【零件号】工艺未编制工序"); + throw new ServiceException("【零件号】"+partEntity.getPartCode()+"工艺未编制工序"); } //判断工序下的检验项目 for (DsProcessEntity processEntity : processEntities) { @@ -328,33 +358,51 @@ public class DsTaskingServiceImpl extends BaseServiceImpl zProcessEntities = processService.selectDsProcessByCraftId(zCraft.getId()); + if(CollectionUtils.isEmpty(zProcessEntities)){ + throw new ServiceException("【子件号】工艺未编制工序"); + } - DsCraftEntity zCraft = craftService.getPartCraft(zPartEntity.getId(),rank); - 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()+":未编制检验项目"); +// } +// } +// } - //判断工序下的检验项目 - 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); + + DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(zPartEntity.getId()); + // 5新图任务 - 磨具计划下发 对接坤哥 + if(TaskingConstant.NEW_MAP_TASKS.equals(dsTaskingEntity.getTaskType()) + && DsPartConst.SIN_TER_TYPE_SMM.equals(zPartEntity.getSinTerType()) + && "1".equals(partVersionEntity.getPartVersion())){ + + List moldDemandList = new ArrayList<>(); + MoldDemand moldDemand = new MoldDemand(); + moldDemand.setPartCode(zPartEntity.getPartCode()); + moldDemand.setPartName(zPartEntity.getPartName()); + moldDemand.setMemo("工艺同步新图零件"); + moldDemandList.add(moldDemand); + boolean moldDemandSve = moldDemandService.save(moldDemandList); + if(!moldDemandSve){ + throw new ServiceException("磨具计划下发新增失败"); } } } - - - zCraft.setCraftStatus(TaskingConstant.IN_USE); - craftService.updateById(zCraft); } //3.工艺任务状态变更为已完成 @@ -366,8 +414,6 @@ public class DsTaskingServiceImpl extends BaseServiceImpl partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); - //获取所有子件ID - List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(idList)){ - continue; - } - //获取版本号 根据子件ID - List partVersionList = partVersionService.selectByPartIds(idList); - List list = new ArrayList<>(); - for (DsPartVersionEntity dsPartVersionEntity : partVersionList) { - //根据零件编码 和 版本号查询数据 - List taskStatusList = new ArrayList<>(Arrays.asList( - TaskingConstant.TASK_STATUS_WAIT, - TaskingConstant.TASK_STATUS_ALREADY, - TaskingConstant.TASK_STATUS_UNDERWAY - )); - List dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList); - - List 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); - } +// if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){ +// //查询子件信息 +// List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); +// //获取所有子件ID +// List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); +// if(CollectionUtils.isEmpty(idList)){ +// continue; +// } +// //获取版本号 根据子件ID +// List partVersionList = partVersionService.selectByPartIds(idList); +// List list = new ArrayList<>(); +// for (DsPartVersionEntity dsPartVersionEntity : partVersionList) { +// //根据零件编码 和 版本号查询数据 +// List taskStatusList = new ArrayList<>(Arrays.asList( +// TaskingConstant.TASK_STATUS_WAIT, +// TaskingConstant.TASK_STATUS_ALREADY, +// TaskingConstant.TASK_STATUS_UNDERWAY +// )); +// List dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList); +// +// List 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); +//// } +// } + List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); + //获取所有子件ID + List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(idList)) { + List dsPartEntityList = partService.selectDsPartVersionByIds(idList); +// for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { +// dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName()); +// } + dsTaskingVO.setChildren(dsPartEntityList); } } } @@ -564,44 +620,50 @@ public class DsTaskingServiceImpl extends BaseServiceImpl partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); - List idList = partRelationEntityList.stream() - .map(DsPartRelationEntity::getChildPartId) +// if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){ +// +// } + List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); + List idList = partRelationEntityList.stream() + .map(DsPartRelationEntity::getChildPartId) + .collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(idList)){ + List dsPartEntityList = partService.selectDsPartByIds(idList); + + List dsPartVOList = dsPartEntityList.stream() + .map(entity -> { + DsPartVO vo = new DsPartVO(); + BeanUtils.copyProperties(entity, vo); + + if (vo.getUpdateUser() != null) { + String userName = userClient.userInfo(Func.toLong(vo.getUpdateUser())) + .getData() + .getUser() + .getName(); + vo.setUpdateUserStr(userName); + } + return vo; + }) .collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(idList)){ - List dsPartEntityList = partService.selectDsPartByIds(idList); - - List dsPartVOList = dsPartEntityList.stream() - .map(entity -> { - DsPartVO vo = new DsPartVO(); - BeanUtils.copyProperties(entity, vo); - - if (vo.getUpdateUser() != null) { - String userName = userClient.userInfo(Func.toLong(vo.getUpdateUser())) - .getData() - .getUser() - .getName(); - vo.setUpdateUserStr(userName); - } - return vo; - }) - .collect(Collectors.toList()); - dsPartSynthesisVO.setDsPartVOList(dsPartVOList); - } + dsPartSynthesisVO.setDsPartVOList(dsPartVOList); } dsPartSynthesisVO.setDsPartEntity(partEntity); @@ -613,18 +675,23 @@ public class DsTaskingServiceImpl extends BaseServiceImpl()); - result.getCraftList().add(craftTree); +// 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); + + // 查询零件工艺信息 + List dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), "2"); + if(CollectionUtils.isEmpty(dsCraftVOList)){ + throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); + } -// // 查询零件工艺信息 -// List dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), "2"); -// if(CollectionUtils.isEmpty(dsCraftVOList)){ -// throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); -// } -// -// if (!CollectionUtils.isEmpty(dsCraftVOList)) { -// for (DsCraftVO craftVO : dsCraftVOList) { -// -// craftVO.setReworkOrder(dsTaskingEntity.getReworkOrder()); -// craftVO.setPartId(partEntity.getId()); -// craftVO.setPartVersions(dsTaskingEntity.getVersion()); -// -// // 查询工序信息 -// List processEntities = processService.selectDsProcessByCraftId(craftVO.getId()); -// -// if (!CollectionUtils.isEmpty(processEntities)) { -// List processIds = processEntities.stream() -// .map(DsProcessEntity::getId) -// .collect(Collectors.toList()); -// -// // 批量查询关联数据 -// List processProjectEntityList = processProjectService.selectDsProcessProjectByProcessIds(processIds); -// List processMeasuringToolEntityList = processMeasuringToolService.selectDsProcessMeasuringToolByProcessIds(processIds); -// List processMoldToolEntityList = processMoldToolService.selectDsProcessMoldToolByProcessIds(processIds); -// -// // 构建工序树 -// List processTree = buildProcessTree(processEntities, processProjectEntityList, -// processMeasuringToolEntityList, processMoldToolEntityList); -// craftTree.setProcessList(processTree); -// } -// -// result.getCraftList().add(craftTree); -// } -// } + if (!CollectionUtils.isEmpty(dsCraftVOList)) { + for (DsCraftVO craftVO : dsCraftVOList) { + + craftVO.setReworkOrder(dsTaskingEntity.getReworkOrder()); + craftVO.setPartId(partEntity.getId()); + craftVO.setPartVersions(dsTaskingEntity.getVersion()); + + // 查询工序信息 + List processEntities = processService.selectDsProcessByCraftId(craftVO.getId()); + + if (!CollectionUtils.isEmpty(processEntities)) { + List processIds = processEntities.stream() + .map(DsProcessEntity::getId) + .collect(Collectors.toList()); + + // 批量查询关联数据 + List processProjectEntityList = processProjectService.selectDsProcessProjectByProcessIds(processIds); + List processMeasuringToolEntityList = processMeasuringToolService.selectDsProcessMeasuringToolByProcessIds(processIds); + List processMoldToolEntityList = processMoldToolService.selectDsProcessMoldToolByProcessIds(processIds); + + // 构建工序树 + List processTree = buildProcessTree(processEntities, processProjectEntityList, + processMeasuringToolEntityList, processMoldToolEntityList); + craftTree.setProcessList(processTree); + } + + result.getCraftList().add(craftTree); + } + } } return result; @@ -915,6 +982,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl taskingList = taskingMapper.selectOldMesTasking(startTime,endTime); +// +// if (CollectionUtils.isEmpty(taskingList)) { +// log.info("未读取到任务信息"); +// return true; +// } +// +// log.info("共读取到{}条返工任务待处理", taskingList.size()); +// +// int successCount = 0; +// int skipCount = 0; +// int failCount = 0; +// +// for (DsTaskingEntity dsTasking : taskingList) { +// try { +// boolean result = processTask(dsTasking); +// if (result) { +// successCount++; +// } else { +// skipCount++; +// } +// } catch (Exception e) { +// failCount++; +// log.error("处理任务失败,零件号:{},错误信息:{}", +// dsTasking.getPartCode(), +// e.getMessage(), e); +// //继续处理下一条任务 +// continue; +// } +// } +// +// log.info("任务同步完成:成功{}条,跳过{}条,失败{}条", successCount, skipCount, failCount); +// +// return failCount == 0; +// +// } +// +// /** +// * 处理单个任务 +// * 对应: loop 循环内的处理逻辑 +// */ +// private boolean processTask(DsTaskingEntity dsTasking) { +// +// DsPartEntity oldMesPart = taskingMapper.getOldMesPartByPartCode(dsTasking.getPartCode()); +// if(null == oldMesPart){ +// log.error("老MES零件数据不存在:{}",dsTasking.getPartCode()); +// return false; +// } +// Long oldMesPartId = oldMesPart.getId(); +// +// //1.添加零件基础信息 +// //查询零件基础数据是否存在 +// DsPartBasicsEntity partBasicsEntity = partBasicsService.selectByPartCode(dsTasking.getPartCode()); +// if(null == partBasicsEntity){ +// //新增基础数据 +// partBasicsEntity = new DsPartBasicsEntity(); +// partBasicsEntity.setPartCode(oldMesPart.getPartCode()); +// partBasicsEntity.setPartName(oldMesPart.getPartName()); +// partBasicsEntity.setProductType(oldMesPart.getProductType()); +// partBasicsEntity.setIsSintering(oldMesPart.getIsSintering()); +// partBasicsEntity.setIsClassCake(oldMesPart.getIsClassCake()); +// if (oldMesPart.getRemarks() == null || oldMesPart.getRemarks().trim().isEmpty()) { +// partBasicsEntity.setRemarks(oldMesPart.getRemarks()); +// } +// boolean partBasicsSave = partBasicsService.save(partBasicsEntity); +// if(!partBasicsSave){ +// log.error("零件基础数据添加失败:{}",dsTasking.getPartCode()); +// return false; +// } +// } +// +// //2.添加零件信息 +// //查询零件是否有版本号 +// // 查询零件版本列表 +// List partVersionList = partVersionService.selectByPartCode(dsTasking.getPartCode()); +// +// // 取最大版本号(按数字大小排序,推荐写法) +// Optional latestVersion = partVersionList.stream() +// .map(DsPartVersionEntity::getPartVersion) +// .filter(Objects::nonNull) +// .max(Comparator.comparingInt(Integer::parseInt)); +// +// // 处理版本号递增 +// String newVersion; +// if (latestVersion.isPresent()) { +// log.info("最新版本号:{}", latestVersion.get()); +// newVersion = IncrementNumberUtil.convertNumber(latestVersion.get()); +// } else { +// // 无历史版本号,初始为1 +// newVersion = "1"; +// } +// log.info("新生成的版本号:{}", newVersion); +// +// //新增零件 +// //重置零件id 防止该零件重复添加 ID出错 +// oldMesPart.setId(null); +// boolean newPartSave = partService.save(oldMesPart); +// if(!newPartSave){ +// log.error("任务同步零件添加失败"); +// return false; +// } +// //查询一下新零件 方便后面使用 +// DsPartEntity newPart = partService.getById(oldMesPart.getId()); +// Long newPartId = newPart.getId(); +// String newPartCode = newPart.getPartCode(); +// +// //新增版本号信息 +// DsPartVersionEntity newPartVersion = new DsPartVersionEntity(); +// newPartVersion.setPartId(newPartId); +// newPartVersion.setPartCode(newPartCode); +// newPartVersion.setPartVersion(newVersion); +// boolean partVersionSave = partVersionService.save(newPartVersion); +// if(!partVersionSave){ +// log.error("零件版本号新增失败"); +// return false; +// } +// +// //3.新增子件 +// // 查询子件 +// List dsPartSubList = partService.selectDsPartSub(oldMesPart.getPartCode()); +// for (DsPartSub dsPartSub : dsPartSubList) { +// DsPartEntity partEntity = new DsPartEntity(); +// partEntity.setPartCode(dsPartSub.getSubCode()); +// partEntity.setPartName(dsPartSub.getSubName()); +// partEntity.setQuota(dsPartSub.getQuota()); +// partEntity.setSubType(dsPartSub.getSubType()); +// partEntity.setProductType(dsPartSub.getProductType()); +// partEntity.setArea(dsPartSub.getArea()); +// partEntity.setConfigCode(dsPartSub.getConfigNo()); +// partEntity.setPlate(dsPartSub.getPlate()); +// partEntity.setMaterial(dsPartSub.getMaterial()); +// partEntity.setPlateCode(dsPartSub.getPlateCode()); +// partEntity.setSinTerType(dsPartSub.getSinTerType()); +// boolean partSubSave = partService.save(partEntity); +// if(!partSubSave){ +// log.error("子件新增失败,子件编码{}",dsPartSub.getSubCode()); +// return false; +// } +// +// //添加零件 子件关系表 +// DsPartRelationEntity dsPartRelationEntity = new DsPartRelationEntity(); +// dsPartRelationEntity.setPartId(newPartId); +// dsPartRelationEntity.setPartCode(newPartCode); +// dsPartRelationEntity.setChildPartId(partEntity.getId()); +// dsPartRelationEntity.setChildPartCode(partEntity.getPartCode()); +// boolean partRelationSave = partRelationService.save(dsPartRelationEntity); +// if(!partRelationSave){ +// log.error("部件子件关联关系添加失败partcode{},partSubCode{}",dsPartSub.getPartCode(),dsPartSub.getSubCode()); +// return false; +// } +// } +// +// //新增工艺 +// //查询老mes +// List dsCraftEntityList = craftService.selectOldMesCraftByOldMesPartId(oldMesPartId); +// +// if(CollectionUtils.isEmpty(dsCraftEntityList)){ +// log.error("工艺不存在无法新增"); +// return false; +// } +// for (DsCraftEntity craft : dsCraftEntityList) { +// //留存工艺ID 查询老工序是会使用 +// Long oldCraftId = craft.getId(); +// //重置工艺ID 不使用老mesID +// craft.setId(null); +// craft.setPartId(newPartId); +// craft.setPartVersions(newVersion); +// craft.setCraftStatus(TaskingConstant.UNDER_MAINTENANCE); +// boolean craftSaveBatch = craftService.save(craft); +// if(!craftSaveBatch){ +// log.error("工艺新增失败"); +// return false; +// } +// +//// //新增工序 工序设置 工艺能力 +//// //查询工序 +//// List oldMesProcessList = processService.selectOldMesProcessByOldMesCraftId(oldCraftId); +//// if(CollectionUtils.isEmpty(oldMesProcessList)){ +//// log.error("工序查询失败工艺ID:{}",oldCraftId); +//// return false; +//// } +//// for (DsProcessEntity oldProcess : oldMesProcessList) { +//// //验证工序设置 是否存在 不存在则新增工序 +//// if(null != oldProcess.getPpsId()){ +//// //查询老mes工序设置 +//// BsProcessSetEntity oldProcessSet = processSetService.selectOldMesProcessSetByOldPpsId(oldProcess.getPpsId()); +//// if(null == oldProcessSet){ +//// log.error("工序设置查询失败工序ID:{}",oldProcess.getPpsId()); +//// return false; +//// } +//// //验证新mes是否有该工序 +//// BsProcessSetEntity newProcessSet = processSetService.selectBsProcessSetByProcessCode(oldProcessSet.getCode()); +//// if(null == newProcessSet){ +//// //新增工序设置 +//// boolean processSetSave = processSetService.save(oldProcessSet); +//// if(!processSetSave){ +//// log.error("工序设置新增失败"); +//// return false; +//// } +//// } +//// } +//// +//// // 工艺能力 +//// if(null != oldProcess.getCaId()){ +//// //查询老mes工艺能力 +//// CraftAbilityEntity oldMesCraftAbility = craftAbilityService.selectOldMesCraftAbilityByOldCaId(oldProcess.getCaId()); +//// if(null == oldMesCraftAbility){ +//// log.error("工艺能力查询失败能力ID:{}",oldProcess.getCaId()); +//// return false; +//// } +//// //验证新mes是否有该工艺能力 +//// CraftAbilityEntity newMesCraftAbility = craftAbilityService.selectByCaCode(oldMesCraftAbility.getCaCode()); +//// if(null == newMesCraftAbility){ +//// //新增工艺能力 +//// boolean craftAbilitySave = craftAbilityService.save(newMesCraftAbility); +//// if(!craftAbilitySave){ +//// log.error("工艺能力新增失败"); +//// return false; +//// } +//// } +//// } +//// +//// //添加工序 +//// Long oldProcessId = oldProcess.getId(); +//// oldProcess.setId(null); +//// boolean processSave = processService.save(oldProcess); +//// if(!processSave){ +//// log.error("工序新增失败"); +//// return false; +//// } +//// } +// } +// +// return true; +// +// } + + /** + * ------------ + */ + + + @Override + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) + public boolean syncTasking() { + log.info("========== 开始同步任务 =========="); + + // 1. 获取上次同步的最大时间 + DsTaskingEntity dsTaskingEntity = taskingMapper.getMaxSyncTime(); + Date startTime = dsTaskingEntity != null ? dsTaskingEntity.getSyncTime() : null; + Date endTime = new Date(); + + // 处理首次同步的情况 + if (startTime == null) { + log.info("首次同步,同步所有历史任务"); + } else { + log.info("同步时间范围:{} - {}", startTime, endTime); + } + + // 2. 查询待同步的任务列表 + List taskingList = taskingMapper.selectOldMesTasking(startTime, endTime); + + if (CollectionUtils.isEmpty(taskingList)) { + log.info("未读取到任务信息"); + // 更新同步时间,避免下次重复查询 + return true; + } + + log.info("共读取到 {} 条返工任务待处理", taskingList.size()); + + // 3. 初始化统计计数器 + AtomicInteger successCount = new AtomicInteger(0); + AtomicInteger skipCount = new AtomicInteger(0); + AtomicInteger failCount = new AtomicInteger(0); + List failedPartCodes = new ArrayList<>(); + + // 4. 逐个处理任务(每个任务独立事务,避免一个失败全部回滚) + for (DsTaskingEntity dsTasking : taskingList) { + try { + // 每个任务独立事务处理 + boolean result = processSingleTaskWithTransaction(dsTasking); + if (result) { + successCount.incrementAndGet(); + log.info("任务处理成功 ({}/{}): {}", + successCount.get() + skipCount.get() + failCount.get(), + taskingList.size(), dsTasking.getPartCode()); + } else { + skipCount.incrementAndGet(); + log.warn("任务跳过 ({}/{}): {}", + successCount.get() + skipCount.get() + failCount.get(), + taskingList.size(), dsTasking.getPartCode()); + } + } catch (Exception e) { + failCount.incrementAndGet(); + failedPartCodes.add(dsTasking.getPartCode()); + log.error("处理任务失败,零件号:{},错误信息:{}", + dsTasking.getPartCode(), e.getMessage(), e); + } + } + + + // 6. 输出统计信息 + log.info("========== 任务同步完成 =========="); + log.info("成功:{} 条", successCount.get()); + log.info("跳过:{} 条", skipCount.get()); + log.info("失败:{} 条", failCount.get()); + + if (!failedPartCodes.isEmpty()) { + log.info("失败的零件号:{}", String.join(", ", failedPartCodes)); + } + + // 失败数为0则返回true,否则返回false + return failCount.get() == 0; + } + + /** + * 单个任务独立事务处理 + */ + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + public boolean processSingleTaskWithTransaction(DsTaskingEntity dsTasking) { + String partCode = dsTasking.getPartCode(); + log.info("开始处理任务,零件号:{}", partCode); + + try { + // 1. 查询老MES零件数据 + DsPartEntity oldMesPart = getOldMesPart(partCode); + if (oldMesPart == null) { + log.error("老MES零件数据不存在:{}", partCode); + return false; + } + + // 2. 递归处理零件及其子件 + DsPartEntity newPart = processPartRecursively(oldMesPart); + if (newPart == null) { + log.error("零件处理失败:{}", partCode); + return false; + } + + // 3. 处理成功后新增任务记录 + DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(newPart.getId()); + //修改状态 + if(dsTasking.getTaskStatus().equals(1)){ + dsTasking.setTaskStatus(2); + } + dsTasking.setVersion(partVersionEntity.getPartVersion()); + int taskingInsert = taskingMapper.insert(dsTasking); + if (taskingInsert <= 0) { + log.error("任务记录新增失败:{}", partCode); + // 抛出异常触发事务回滚 + throw new RuntimeException("任务记录新增失败:" + partCode); + } + + log.info("任务处理成功:{},新零件ID:{}", partCode, newPart.getId()); + return true; + + } catch (Exception e) { + log.error("处理任务异常:{}", partCode, e); + throw e; + } + } + + /** + * 获取老MES零件数据 + */ + private DsPartEntity getOldMesPart(String partCode) { + return taskingMapper.getOldMesPartByPartCode(partCode); + } + + /** + * 递归处理零件及其子件 + * 核心逻辑:处理基础信息 -> 生成版本号 -> 创建新零件 -> 创建版本记录 -> 同步工艺 -> 处理子件 + */ + // 同时补充修正 processPartRecursively 中对空数据的兼容逻辑 + private DsPartEntity processPartRecursively(DsPartEntity oldMesPart) { + String partCode = oldMesPart.getPartCode(); + Long oldMesPartId = oldMesPart.getId(); + log.info("递归处理零件:{}", partCode); + + try { + // 1. 处理零件基础信息(兼容空数据) + if (!handlePartBasics(oldMesPart)) { + log.error("零件基础信息处理失败:{}", partCode); + return null; + } + + // 2. 生成新版本号(线程安全) + String newVersion = generateNewVersion(partCode); + log.info("零件 {} 生成新版本号:{}", partCode, newVersion); + + // 3. 创建新零件(兼容空数据) + DsPartEntity newPart = createNewPart(oldMesPart, newVersion); + if (newPart == null) { + return null; + } + + // 4. 创建版本号记录 + if (!createPartVersion(newPart.getId(), partCode, newVersion)) { + log.error("版本号记录创建失败:{}", partCode); + return null; + } + + // 5. 同步工艺(兼容空数据,无工艺则跳过) + syncCrafts(oldMesPartId, newPart, newVersion); + + // 6. 处理子件(递归)- 子件处理失败不影响父件,仅记录日志 + processSubPartsRecursively(partCode, newPart); + + log.info("零件 {} 递归处理完成,新ID:{},版本号:{}", + partCode, newPart.getId(), newVersion); + return newPart; + + } catch (Exception e) { + log.error("递归处理零件异常:{}", partCode, e); + return null; + } + } + + /** + * 递归处理子件(子件处理失败仅记录日志,不中断父件处理) + * 关键修正:oldMesSubPart == null 仅代表该子件无更深层级的子件,仍需处理当前子件自身的核心逻辑 + */ + private void processSubPartsRecursively(String parentPartCode, DsPartEntity parentNewPart) { + List subPartList = partService.selectDsPartSub(parentPartCode); + + if (CollectionUtils.isEmpty(subPartList)) { + log.info("零件 {} 没有子件(无子件层级)", parentPartCode); + return; + } + + log.info("零件 {} 有 {} 个子件需要递归处理", parentPartCode, subPartList.size()); + + for (DsPartSub subPartInfo : subPartList) { + String subCode = subPartInfo.getSubCode(); + log.info("开始处理子件:{}", subCode); + + try { + // 1. 查询子件老MES数据(null仅代表无该子件的详细数据,不代表跳过) + DsPartEntity oldMesSubPart = getOldMesPart(subCode); + + if (oldMesSubPart == null) { + // 子件无老MES详细数据,创建空的基础对象(保证核心逻辑能执行) + log.warn("子件 {} 无老MES详细数据,创建基础空对象处理", subCode); + oldMesSubPart = new DsPartEntity(); + if(!StringUtils.isEmpty(subPartInfo.getSubName())){ + oldMesSubPart.setPartName(subPartInfo.getSubName()); + } + oldMesSubPart.setPartCode(subPartInfo.getSubCode()); + oldMesSubPart.setQuota(subPartInfo.getQuota()); + oldMesSubPart.setSubType(subPartInfo.getSubType()); + oldMesSubPart.setProductType(subPartInfo.getProductType()); + oldMesSubPart.setArea(subPartInfo.getArea()); + oldMesSubPart.setConfigCode(subPartInfo.getConfigNo()); + oldMesSubPart.setPlate(subPartInfo.getPlate()); + oldMesSubPart.setMaterial(subPartInfo.getMaterial()); + oldMesSubPart.setPlateCode(subPartInfo.getPlateCode()); + oldMesSubPart.setSinTerType(subPartInfo.getSinTerType()); + + } + + // 2. 递归处理当前子件自身(生成版本号、创建零件、同步工艺等核心逻辑) + DsPartEntity newSubPart = processPartRecursively(oldMesSubPart); + if (newSubPart == null) { + log.error("子件 {} 自身处理失败,跳过该子件", subCode); + continue; + } + + // 3. 建立父子关联关系 + if (!createPartRelation(parentNewPart.getId(), parentNewPart.getPartCode(), + newSubPart.getId(), newSubPart.getPartCode())) { + log.error("建立父子关联关系失败:父{},子{},跳过该子件关联", parentNewPart.getPartCode(), subCode); + continue; + } + + // 4. 保存子件关联的额外信息 + saveSubPartRelationInfo(parentNewPart.getId(), newSubPart.getId(), subPartInfo); + + log.info("子件 {} 处理完成,新ID:{}", subCode, newSubPart.getId()); + + } catch (Exception e) { + log.error("处理子件 {} 异常,跳过该子件", subCode, e); + } + } + } + + /** + * 同步工艺 + */ + private boolean syncCrafts(Long oldMesPartId, DsPartEntity newPart, String newVersion) { + try { + // 兼容空老MES ID的情况(无工艺数据) + if (oldMesPartId == null || oldMesPartId <= 0) { + log.info("零件 {} 无老MES工艺ID,跳过工艺同步", newPart.getPartCode()); + return true; + } + + // 查询老MES的工艺列表 + List oldCraftList = craftService.selectOldMesCraftByOldMesPartId(oldMesPartId); + + if (CollectionUtils.isEmpty(oldCraftList)) { + log.info("零件 {} 没有工艺数据", newPart.getPartCode()); + return true; + } + + log.info("零件 {} 有 {} 个工艺待同步", newPart.getPartCode(), oldCraftList.size()); + + for (DsCraftEntity oldCraft : oldCraftList) { + // 重置工艺ID 不使用老mesID + oldCraft.setId(null); + oldCraft.setPartId(newPart.getId()); + oldCraft.setPartCode(newPart.getPartCode()); + oldCraft.setPartVersions(newVersion); + oldCraft.setCraftStatus(TaskingConstant.UNDER_MAINTENANCE); + + boolean saved = craftService.save(oldCraft); + if (!saved) { + log.error("工艺同步失败,oldCraftId:{}", oldCraft.getId()); + // 继续处理下一个工艺,不中断 + continue; + } + + log.info("工艺同步成功,oldCraftId:{} -> newCraftId:{}", oldMesPartId, oldCraft.getId()); + } + + return true; + } catch (Exception e) { + log.error("同步工艺异常:{}", newPart.getPartCode(), e); + return false; + } + } + + /** + * 生成新版本号(线程安全,使用数据库锁或乐观锁保证唯一性) + */ + private String generateNewVersion(String partCode) { + // 加锁查询版本号,避免多线程重复 + synchronized (this.getClass().getName().concat(partCode).intern()) { + List partVersionList = partVersionService.selectByPartCode(partCode); + + if (CollectionUtils.isEmpty(partVersionList)) { + return "1"; + } + + Optional maxVersion = partVersionList.stream() + .map(DsPartVersionEntity::getPartVersion) + .filter(Objects::nonNull) + .map(v -> { + try { + return Integer.parseInt(v); + } catch (NumberFormatException e) { + log.warn("版本号格式异常:{},视为0", v); + return 0; + } + }) + .max(Integer::compareTo); + + return String.valueOf(maxVersion.orElse(0) + 1); + } + } + + /** + * 创建新零件 + */ + private DsPartEntity createNewPart(DsPartEntity oldMesPart, String newVersion) { + try { + Long oldId = oldMesPart.getId(); + oldMesPart.setId(null); + boolean saved = partService.save(oldMesPart); + if (!saved) { + log.error("零件新增失败:{}", oldMesPart.getPartCode()); + return null; + } + + DsPartEntity newPart = partService.getById(oldMesPart.getId()); + log.info("零件新增成功,oldId:{} -> newId:{}", oldId, newPart.getId()); + + return newPart; + } catch (Exception e) { + log.error("创建新零件异常:{}", oldMesPart.getPartCode(), e); + return null; + } + } + + /** + * 创建版本号记录 + */ + private boolean createPartVersion(Long partId, String partCode, String version) { + try { + DsPartVersionEntity partVersion = new DsPartVersionEntity(); + partVersion.setPartId(partId); + partVersion.setPartCode(partCode); + partVersion.setPartVersion(version); + + boolean saved = partVersionService.save(partVersion); + if (saved) { + log.info("版本号记录创建成功:{} -> 版本{}", partCode, version); + } else { + log.error("版本号记录创建失败:{} -> 版本{}", partCode, version); + } + return saved; + } catch (Exception e) { + log.error("创建版本号记录异常:{}", partCode, e); + return false; + } + } + + /** + * 创建零件-子件关联关系 + */ + private boolean createPartRelation(Long partId, String partCode, Long childPartId, String childPartCode) { + try { + DsPartRelationEntity relation = new DsPartRelationEntity(); + relation.setPartId(partId); + relation.setPartCode(partCode); + relation.setChildPartId(childPartId); + relation.setChildPartCode(childPartCode); + relation.setCreateTime(new Date()); + relation.setStatus(1); + relation.setIsDeleted(0); + + boolean saved = partRelationService.save(relation); + if (saved) { + log.debug("部件子件关联关系添加成功:{} -> {}", partCode, childPartCode); + } else { + log.error("部件子件关联关系添加失败:{} -> {}", partCode, childPartCode); + } + return saved; + } catch (Exception e) { + log.error("创建零件关联关系异常:父{},子{}", partCode, childPartCode, e); + return false; + } + } + + /** + * 保存子件关联的额外信息 + */ + private void saveSubPartRelationInfo(Long parentId, Long childId, DsPartSub subPartInfo) { + try { + // 这里可以根据实际需求实现保存逻辑,比如保存到子件关联信息表 + log.info("子件关联信息:父ID={},子ID={},子件号={},定额={},类型={},配置码={},镀种={},材料={},镀层代号={},烧结类型={}", + parentId, + childId, + subPartInfo.getSubCode(), + subPartInfo.getQuota(), + subPartInfo.getSubType(), + subPartInfo.getConfigNo(), + subPartInfo.getPlate(), + subPartInfo.getMaterial(), + subPartInfo.getPlateCode(), + subPartInfo.getSinTerType()); + } catch (Exception e) { + log.error("保存子件关联信息异常", e); + } + } + + /** + * 处理零件基础信息(有则跳过,无则新增) + */ + private boolean handlePartBasics(DsPartEntity oldMesPart) { + try { + String partCode = oldMesPart.getPartCode(); + DsPartBasicsEntity partBasics = partBasicsService.selectByPartCode(partCode); + + if (partBasics == null) { + partBasics = new DsPartBasicsEntity(); + partBasics.setPartCode(partCode); + partBasics.setPartName(oldMesPart.getPartName()); + partBasics.setProductType(oldMesPart.getProductType()); + partBasics.setIsSintering(oldMesPart.getIsSintering()); + partBasics.setIsClassCake(oldMesPart.getIsClassCake()); + partBasics.setCreateTime(new Date()); + partBasics.setUpdateTime(new Date()); + partBasics.setStatus(1); + partBasics.setIsDeleted(0); + + if (oldMesPart.getRemarks() != null && !oldMesPart.getRemarks().trim().isEmpty()) { + partBasics.setRemarks(oldMesPart.getRemarks()); + } + + boolean saved = partBasicsService.save(partBasics); + if (!saved) { + log.error("零件基础信息新增失败:{}", partCode); + return false; + } + log.info("零件基础信息新增成功:{}", partCode); + } else { + log.info("零件基础信息已存在:{}", partCode); + } + + return true; + } catch (Exception e) { + log.error("处理零件基础信息异常:{}", oldMesPart.getPartCode(), e); + return false; + } + } + + + /** + * -------------- + */ + /** * 处理单个返工任务 * 对应: loop 循环内的处理逻辑 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/utils/IncrementNumberUtil.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/utils/IncrementNumberUtil.java new file mode 100644 index 00000000..4f217383 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/utils/IncrementNumberUtil.java @@ -0,0 +1,36 @@ +package org.springblade.desk.dashboard.utils; + +/** + * @author: liweidong + * @create: 2026-03-14 + */ +public class IncrementNumberUtil { + /** + * 字符串数值递增转换核心方法 + * @param input 输入的字符串(可为 null/空/非数字/数字) + * @return 转换后的字符串结果 + */ + public static String convertNumber(String input) { + // 1. 处理空值/空字符串:直接返回 "1" + if (input == null || input.trim().isEmpty()) { + return "1"; + } + + try { + // 2. 将字符串转为整数(处理首尾空格) + int num = Integer.parseInt(input.trim()); + + // 3. 处理负数:返回 "1" + if (num < 0) { + return "1"; + } + + // 4. 正常逻辑:非负整数 +1 后转回字符串 + return String.valueOf(num + 1); + + } catch (NumberFormatException e) { + // 5. 处理非数字字符串(如"abc"、"12a"):返回 "1" + return "1"; + } + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java index 0662ef8c..9402eccd 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java @@ -17,10 +17,7 @@ import org.springblade.desk.dashboard.pojo.entity.BsPlatingEntity; 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 org.springblade.desk.dashboard.service.IBsPlatingService; -import org.springblade.desk.dashboard.service.IDsCraftService; -import org.springblade.desk.dashboard.service.IDsPartService; -import org.springblade.desk.dashboard.service.IDsProcessService; +import org.springblade.desk.dashboard.service.*; import org.springblade.desk.order.constant.PlateGoodsConst; import org.springblade.desk.order.mapper.PlateGoodsRecordMapper; import org.springblade.desk.order.pojo.entity.PlateGoodsRecord; @@ -56,6 +53,7 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl selectPage(IPage page, PlateGoodsRecord entity) { List dataList = baseMapper.selectPage(page, entity); @@ -176,7 +174,7 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl Date: Tue, 17 Mar 2026 14:58:00 +0800 Subject: [PATCH 14/38] =?UTF-8?q?erp=E5=AE=A1=E7=90=86=E5=8D=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality/pojo/dto/PpmReportDetailDTO.java | 162 ++++++++++++++++++ .../controller/ReviewSheetController.java | 31 +++- .../quality/mapper/ReviewSheetMapper.java | 5 +- .../desk/quality/mapper/ReviewSheetMapper.xml | 27 +++ .../quality/service/IReviewSheetService.java | 6 +- .../service/impl/ReviewSheetServiceImpl.java | 26 ++- 6 files changed, 243 insertions(+), 14 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/PpmReportDetailDTO.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/PpmReportDetailDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/PpmReportDetailDTO.java new file mode 100644 index 00000000..fbadff5f --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/PpmReportDetailDTO.java @@ -0,0 +1,162 @@ +package org.springblade.desk.quality.pojo.dto; + +import lombok.Data; + +/** + * @ClassName PpmReportDetailModel + * @Description: 出厂不合格率明细模型 + * @Author cdl + * @Date 2023/12/08 13:37 + * @Version 1.0 + * 注意:本内容仅限于内部传阅,禁止外泄及用于其他的商业目的 + */ +@Data +public class PpmReportDetailDTO { + /** + * 班组 + */ + private String tsName; + /** + * 审理单号 + */ + private String sheetNo; + /** + * 审理单类型 + */ + private String billmodel; + /** + * 审理单状态 + */ + private String status; + /** + * 发生单位 + */ + private String deptcode; + /** + * 物料号 + */ + private String prtno; + /** + * 物料名称 + */ + private String name; + /** + * 型号 + */ + private String type; + /** + * 质量等级 + */ + private String qstandno; + /** + * 批次号 + */ + private String lotno; + /** + * 总数量 + */ + private String cntt; + /** + * 不合格数 + */ + private String cntn; + /** + * 检验员 + */ + private String checker; + /** + * 检验日期 + */ + private String checkdate; + /** + * 归档日期 + */ + private String finishdate; + /** + * 责任部门 + */ + private String layer1; + /** + * 审理单开始时间 + */ + private String judgestart; + /** + * + */ + private String opinion; + /** + * 审理级别 + */ + private String userlevel; + /** + * 审理意见 + */ + private String dispose; + /** + * 审理人 + */ + private String usercode; + /** + * 返修数 + */ + private String p6layer3; + /** + * 返工数 + */ + private String p6layer4; + /** + * 报废数 + */ + private String p6layer5; + /** + * 订单号 + */ + private String sono; + /** + * 完工数 + */ + private String avlqty; + /** + * 完工日期 + */ + private String date1; + /** + * 责任零件 + */ + private String p5layer1; + /** + * 责任批次 + */ + private String p5layer3; + /** + * 发生工序 + */ + private String process; + /** + * 发生工序名称 + */ + private String processName; + /** + * 上级编号 + */ + private String precode; + /** + * 返修路线 + */ + private String reworkLine; + /** + * 故障描述 + */ + private String memo; + + private String code; + private String useproc; + private String useseq; + private String redodeptcode; + private String p1remark; + private String disposename; + private String p2layer1; + private String chker; + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java index d03724cf..0fe80621 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java @@ -28,6 +28,7 @@ import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.util.ExcelExtUtil; import org.springblade.desk.quality.constant.QAModuleConst; import org.springblade.desk.quality.excel.ReviewSheetExcel; +import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; import org.springblade.desk.quality.pojo.entity.ReviewDuty; import org.springblade.desk.quality.pojo.entity.ReviewFault; import org.springblade.desk.quality.pojo.entity.ReviewSheet; @@ -198,11 +199,35 @@ public class ReviewSheetController extends BladeController { /** * [生产处置单] list分页 */ +// @PostMapping("/listErp") +// @ApiOperationSupport(order = 20) +// @Operation(summary = "Erplist分页", description = "传入ReviewSheet Obj") +// public R> listErp(@Valid @RequestBody ReviewSheetErpSearch search, +// @RequestBody Query query) { +// log.info("ReviewSheetErpSearch = {}", search); +//// Map demo = new HashMap(); +//// // todo: mapper +//// QueryWrapper qw = Condition.getQueryWrapper(demo, ReviewSheet.class); +//// qw.eq(ReviewSheet.COL_BIZ_TYPE, ReviewSheetConst.BizType.T_ERP); +//// IPage pages = service.page(Condition.getPage(query), qw); +//// IPage pagesVO = ReviewSheetErpWrapper.build().pageVO(pages); +//// pagesVO.getRecords() +//// .stream() +//// .peek(service::setErpVOValue) +//// .collect(Collectors.toList()); +//// return R.data(pagesVO); +// if(null == search.getRsCode() && null == search.getDutyPart() && null == search.getDutyBatNo()){ +// search.setRsCode("########################"); +// } +// IPage pagesVO = service.listErp(Condition.getPage(query), search); +// return R.data(pagesVO); +// } + @PostMapping("/listErp") @ApiOperationSupport(order = 20) @Operation(summary = "Erplist分页", description = "传入ReviewSheet Obj") - public R> listErp(@Valid @RequestBody ReviewSheetErpSearch search, - @RequestBody Query query) { + public R> listErp(@Valid @RequestBody ReviewSheetErpSearch search, + @RequestBody Query query) { log.info("ReviewSheetErpSearch = {}", search); // Map demo = new HashMap(); // // todo: mapper @@ -218,7 +243,7 @@ public class ReviewSheetController extends BladeController { if(null == search.getRsCode() && null == search.getDutyPart() && null == search.getDutyBatNo()){ search.setRsCode("########################"); } - IPage pagesVO = service.listErp(Condition.getPage(query), search); + IPage pagesVO = service.listErp(Condition.getPage(query), search); return R.data(pagesVO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java index 90eac3bc..9f7ea484 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java @@ -9,11 +9,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import org.springblade.desk.quality.excel.ReviewSheetExcel; import org.springblade.desk.quality.pojo.entity.ReviewSheet; -import org.springblade.desk.quality.pojo.request.InspectionTaskSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetErpSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetInitSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetRedoScrapSearch; import org.springblade.desk.quality.pojo.vo.*; +import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; import java.util.List; @@ -58,4 +58,7 @@ public interface ReviewSheetMapper extends BaseMapper { List listErp(IPage page, @Param("q") ReviewSheetErpSearch search); + + List listErpNew(IPage page, + @Param("q") ReviewSheetErpSearch search); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml index abdc9a6e..622ab03c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml @@ -278,6 +278,7 @@ LEFT JOIN BS_PROCESS_SET ps ON wp.ORDERS = ps.CODE -- 外协厂商 oem LEFT JOIN BS_OEM oem ON wp.OC_ID = oem.ID + left join QA_REVIEW_DUTY du on rs.ID = du.REVIEW_SHEET_ID WHERE ( rs.IS_DELETED = 0 -- AND wp.IS_DELETED = 0 @@ -312,6 +313,32 @@ AND rs.PART_CODE = #{q.batchNo} + + + and rs.Id in (select REVIEW_SHEET_ID from QA_REVIEW_DUTY where DUTY_PART like concat(concat('%', #{q.dutyPart}),'%')) + + + + and rs.Id in (select REVIEW_SHEET_ID from QA_REVIEW_DUTY where DUTY_BATCH like concat(concat('%', #{q.dutyBatNo}),'%')) + + ORDER BY rs.ID DESC + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java index c372a20f..1b0c5dd9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java @@ -14,7 +14,7 @@ import org.springblade.desk.quality.pojo.request.ReviewSheetErpSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetInitSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetRedoScrapSearch; import org.springblade.desk.quality.pojo.vo.*; - +import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; import java.util.List; /** @@ -93,7 +93,7 @@ public interface IReviewSheetService extends EnBaseService { */ List getQcReviewSheetList(String partCode, String batchNo); - List reviewFormMess(JSONObject data); + List reviewFormMess(JSONObject data); /** *

方法描述: 通过返工单查询生产处置单

@@ -146,5 +146,5 @@ public interface IReviewSheetService extends EnBaseService { IPage listReviewRedoScrap(IPage page, ReviewSheetRedoScrapSearch search); - IPage listErp(IPage page, ReviewSheetErpSearch search); + IPage listErp(IPage page, ReviewSheetErpSearch search); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java index 11ff02c1..60a6e10c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java @@ -27,7 +27,6 @@ import org.springblade.desk.basic.constant.BaseRequest; import org.springblade.desk.basic.constant.BaseValue; import org.springblade.desk.basic.service.en.impl.EnBaseServiceImpl; import org.springblade.desk.basic.util.IdUtil; -import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.service.IWorkPlanService; import org.springblade.desk.quality.constant.InspectionTaskConst; import org.springblade.desk.quality.constant.ReviewSheetConst; @@ -56,7 +55,7 @@ import org.springblade.system.pojo.entity.UserInfo; import org.springframework.http.HttpEntity; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; - +import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -263,7 +262,7 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl reviewFormMess(JSONObject data) { + public List reviewFormMess(JSONObject data) { // todo: return List.of(); } @@ -545,10 +544,23 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl listErp(IPage page, ReviewSheetErpSearch search) { - List listVO = baseMapper.listErp(page, search); - for (ReviewSheetErpVO oneVO : listVO) { - setErpVOValue(oneVO); + public IPage listErp(IPage page, ReviewSheetErpSearch search) { + List listVO = baseMapper.listErpNew(page, search); + for (PpmReportDetailDTO oneVO : listVO) { + oneVO.setSheetNo(oneVO.getCode()); + oneVO.setP5layer1(oneVO.getP5layer1()); + oneVO.setP5layer3(oneVO.getP5layer3()); + oneVO.setProcess(oneVO.getUseproc()); + oneVO.setProcessName(oneVO.getUseseq()); + oneVO.setPrecode(oneVO.getPrecode()); + oneVO.setReworkLine(oneVO.getRedodeptcode()); + oneVO.setMemo(oneVO.getP1remark()); + oneVO.setDispose(oneVO.getDisposename()); + oneVO.setDeptcode(oneVO.getDeptcode()); + oneVO.setLayer1(oneVO.getP2layer1()); + oneVO.setUsercode(oneVO.getChker()); + oneVO.setPrtno(oneVO.getPrtno()); + oneVO.setLotno(oneVO.getLotno()); } return page.setRecords(listVO); } From f3fd703b3196583e9fcf358e249d98f83b2b8e92 Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Tue, 17 Mar 2026 16:30:39 +0800 Subject: [PATCH 15/38] =?UTF-8?q?=E7=83=AD=E8=A1=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9C=AA=E5=AE=8C=E6=88=90001?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/dto/MesRbFilePreserveDetailDTO.java | 2 + .../entity/MesRbFilePreserveDetailEntity.java | 2 +- .../entity/MesRbFilePreserveSlotEntity.java | 8 +- .../desk/produce/pojo/entity/WorkPlan.java | 33 + .../desk/produce/mapper/WorkPlanMapper.java | 10 + .../desk/produce/mapper/WorkPlanMapper.xml | 64 ++ .../service/impl/WorkOrderServiceImpl.java | 3 +- .../impl/InspectionTaskServiceImpl.java | 679 +++++++++++++++++- 8 files changed, 782 insertions(+), 19 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java index e8b0f150..6492acdc 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java @@ -43,4 +43,6 @@ public class MesRbFilePreserveDetailDTO extends MesRbFilePreserveDetailEntity { @Serial private static final long serialVersionUID = 1L; + private Short rfpsType; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java index 4c2947b0..35037868 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java @@ -29,7 +29,7 @@ public class MesRbFilePreserveDetailEntity extends BaseEntity { * 热表电子档案维护-槽子明细 */ @Schema(description = "热表电子档案维护-槽子明细") - private BigDecimal rfpsId; + private Long rfpsId; /** * 明细名称 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java index 341edb6e..17c0a5df 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java @@ -1,14 +1,17 @@ package org.springblade.desk.produce.pojo.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; +import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO; import java.io.Serial; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 热表电子档案维护-槽子明细 实体类 @@ -29,7 +32,7 @@ public class MesRbFilePreserveSlotEntity extends BaseEntity { * 热表电子档案维护 */ @Schema(description = "热表电子档案维护") - private BigDecimal rfpId; + private Long rfpId; /** * 槽号名称 */ @@ -60,5 +63,6 @@ public class MesRbFilePreserveSlotEntity extends BaseEntity { */ @Schema(description = "维护人") private String keepMan; - + @TableField(exist = false) + private List childrenList; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java index 779d4113..1357d5cf 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java @@ -294,5 +294,38 @@ public class WorkPlan extends BaseEntity { private List slotList; @TableField(exist = false) private List prList; + @TableField(exist = false) + private String gjCode; + @TableField(exist = false) + private String fbCode; + @TableField(exist = false) + private String deviceCode; + @TableField(exist = false) + private String createMan; + @TableField(exist = false) + private Double flagQty; + @TableField(exist = false) + private String flagColourOne; + @TableField(exist = false) + private String flagColourTwo; + @TableField(exist = false) + private String flagInk; + @TableField(exist = false) + private String flagMatter; + // 色带数据 + @TableField(exist = false) + private Double beltQty; + @TableField(exist = false) + private String beltColourOne; + @TableField(exist = false) + private String beltColourTwo; + @TableField(exist = false) + private String beltInk; + @TableField(exist = false) + private String beltMatter; + @TableField(exist = false) + private List qcProduceRunsList; + @TableField(exist = false) + private Integer totalPreserve = 0; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java index 4835b9c3..a1b2c26b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java @@ -2,7 +2,9 @@ package org.springblade.desk.produce.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO; import org.springblade.desk.produce.pojo.entity.MacToolUse; +import org.springblade.desk.produce.pojo.entity.MakeRec; import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; @@ -45,4 +47,12 @@ public interface WorkPlanMapper extends BaseMapper { List listSlotInfo (Long wpId,Boolean aTrue); List listMacToolUse(Long wpId,Boolean aTrue); + MakeRec getByWpId(Long wpId); + Object[] getConcatMrByWpId(Long wpId); + List listPrByWpIdIndex(Long wpId, Integer index,boolean aTrue); + List getDataByWpIdAndIndexList(Long wpId, String indexNum); + List listPrByWpIdIndexAndMtnCode(Long wpId, Integer indexNum,String mtnCode); + List getBoxInfoByWpIdMtnCode(Long wpId); + List getByRfpsId(Long rfpsId); + MacToolUse getHangNumIsNull(Long wpId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml index ab11ce2b..e97988a1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml @@ -120,6 +120,70 @@ a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IBsAdditionalMessService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IBsAdditionalMessService.java new file mode 100644 index 00000000..595244c0 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IBsAdditionalMessService.java @@ -0,0 +1,14 @@ +package org.springblade.desk.produce.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.produce.pojo.entity.BsAdditionalMess; + +/** + * 额外信息存储 服务类 + * + * @author BladeX + */ +public interface IBsAdditionalMessService extends BaseService { + + BsAdditionalMess getDataByOneData(String mtnCode, short type); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java index b9f6ffd4..50ee87c3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java @@ -52,4 +52,14 @@ public interface IMacToolUseService extends BaseService { MacToolUse getHangNumIsNull(Long id); MacToolUse queryByParams(Long id, Integer rsBool, Integer fsBool, Integer ecBool); + + /** + * 根据挂具编码或者飞靶编码查询正在运行的最大绑定数据 + */ + String findMaxCodeByParams(Long rsId, Long fsId); + + /** + * 根据条件查询绑定的流程卡信息 + */ + List listByParams(Long rsId, Long fsId, Long ecId, String hangNum); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java index 67de301c..7f6e316a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java @@ -1,10 +1,13 @@ package org.springblade.desk.produce.service; +import com.alibaba.fastjson.JSONObject; import org.springblade.core.mp.base.BaseService; import org.springblade.core.secure.BladeUser; +import org.springblade.desk.device.pojo.entity.EquipmentEntity; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; import org.springblade.desk.device.pojo.entity.RackSetEntity; import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.produce.pojo.entity.MesEquipmentCardEntity; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.vo.LoadSubOrderVO; @@ -52,7 +55,7 @@ public interface IPdaLoadService extends BaseService { * @param deviceCode 设备编码 * @return java.lang.Object */ - Object getEcByCode(String deviceCode); + EquipmentEntity getEcByCode(String deviceCode); LoadSubOrderVO loadSubOrder(String cardNo); @@ -68,4 +71,6 @@ public interface IPdaLoadService extends BaseService { boolean saveProCheck(InspectionTask inspectionTask); + + List getHangNum(String deviceCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java index 9b89641d..4ad5cc92 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java @@ -1,6 +1,7 @@ package org.springblade.desk.produce.service; import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.produce.pojo.dto.DeviceBindDTO; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO; import org.springblade.desk.produce.pojo.entity.MacToolUse; @@ -21,21 +22,14 @@ public interface IPdaSaveService extends BaseService { /** *

方法名: bindingCard

*

方法描述: 绑定卡

- * - * @param rsId 挂具id - * @param planListIds 绑定数据 */ - void bindingCard(Long rsId, Long fsId, Long ecId, String planListIds); + void bindingCard(DeviceBindDTO deviceBindDTO); + /** *

方法名: binding

*

方法描述: 绑定

- * - * @param rsId 挂具id - * @param ecId 设备id - * @param unFsBool 是否解绑 - * @param rsListIds 绑定数据 */ - void binding(Long rsId, Long ecId, Boolean unFsBool,String hangNum,String rsListIds); + void binding(DeviceBindDTO deviceBindDTO); /** *

方法名: sjBindingCard

*

方法描述: 绑定卡

diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java index fe6bbec3..b67bbd16 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java @@ -49,4 +49,8 @@ public interface IPlateAroundService extends BaseService { */ void createPlateAround(Long userId, PlateAround plateAround, Short paType, int next, Boolean aTure); + /** + * 根据作业计划id和类型查询镀前镀后记录 + */ + PlateAround getPrPlateAround(Long id, Short beforePlanOut); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java index 01f54560..b322c44f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java @@ -41,4 +41,6 @@ public interface IWorkPlanService extends BaseService { List getProduceMonitorWorkPlanList(Long woId); WorkPlan findMaxHostWorkUnitByWoId(Long id, int i); + + void verifyMakeUnit(WorkPlan prWorkPlan); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/BsAdditionalMessServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/BsAdditionalMessServiceImpl.java new file mode 100644 index 00000000..5d1d5b11 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/BsAdditionalMessServiceImpl.java @@ -0,0 +1,33 @@ +package org.springblade.desk.produce.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.produce.mapper.BsAdditionalMessMapper; +import org.springblade.desk.produce.pojo.entity.BsAdditionalMess; +import org.springblade.desk.produce.service.IBsAdditionalMessService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 额外信息存储 服务实现类 + * + * @author BladeX + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class BsAdditionalMessServiceImpl extends BaseServiceImpl implements IBsAdditionalMessService { + + @Override + public BsAdditionalMess getDataByOneData(String mtnCode, short type) { + List list = this.list(Wrappers.lambdaQuery(BsAdditionalMess.class).eq(BsAdditionalMess::getOneData, mtnCode).eq(BsAdditionalMess::getType, type)); + if (CollectionUtils.isEmpty(list)) { + return null; + } + return list.get(0); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java index df809838..df41d7ce 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java @@ -2,6 +2,7 @@ package org.springblade.desk.produce.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -36,6 +37,7 @@ public class MacToolUseServiceImpl extends BaseServiceImpl listByParams(Long rsId, Long fsId, Long ecId, String hangNum) { + return this.list(Wrappers.lambdaQuery(MacToolUse.class) + .eq(MacToolUse::getFinished, 0) + .eq(rsId != null, MacToolUse::getBsRackSet, rsId) + .eq(fsId != null, MacToolUse::getBsFeiBaSet, fsId) + .eq(ecId != null, MacToolUse::getEquipmentCard, ecId) + .eq(StringUtils.isNotBlank(hangNum), MacToolUse::getHangNum, hangNum)); + } + public static final int time2Integer(Date d) { Calendar cal = Calendar.getInstance(); cal.setTime(d); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java index 77812e92..787feb3b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java @@ -14,16 +14,14 @@ import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.desk.basic.mapper.CraftAbilityMapper; -import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; -import org.springblade.desk.basic.pojo.entity.TeamSet; -import org.springblade.desk.basic.pojo.entity.WorkCenter; -import org.springblade.desk.basic.service.IRelTeamSetUserService; -import org.springblade.desk.basic.service.ITeamSetService; -import org.springblade.desk.basic.service.IUserRightService; +import org.springblade.desk.basic.pojo.entity.*; +import org.springblade.desk.basic.service.*; import org.springblade.desk.dashboard.pojo.entity.*; import org.springblade.desk.dashboard.service.*; +import org.springblade.desk.device.pojo.entity.EquipmentEntity; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; import org.springblade.desk.device.pojo.entity.RackSetEntity; +import org.springblade.desk.device.service.IEquipmentService; import org.springblade.desk.device.service.IFeiBaSetService; import org.springblade.desk.device.service.IRackSetService; import org.springblade.desk.order.pojo.entity.YieldOrder; @@ -42,6 +40,7 @@ import org.springblade.desk.quality.service.IPlanTestService; import org.springblade.desk.quality.service.IWorkPlanItemService; import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -83,7 +82,7 @@ public class PdaLoadServiceImpl extends BaseServiceImpl tsIds = userRightService.getTeamId(userId); + List tsIds = relTeamSetUserService.getTeamId(userId); //获取作业计划 WorkPlan workPlan = workPlanService.getById(prWorkOrder.getWpId()); //获取当前工序的下序 @@ -254,44 +266,62 @@ public class PdaLoadServiceImpl extends BaseServiceImpl tsIds, boolean checkAfterPlating) { - // todo 等待关联表开发完成 -// WorkCenter bsWorkCenter = null; -// BsTeamSetEntity teamSet; -// if (!checkCurrentProcess || (frontPrWorkPlan == null && prWorkPlan.getStatus().equals(WorkPlan.STATUS_NO_START)) || nextPrWorkPlan == null) { -// if (prWorkPlan.getMakeTeam() == null) { -// throw new ServiceException("当前工序无加工班组"); -// } -// -// // 根据当前工序班组查询作业中心 -// teamSet = bsTeamSetService.getById(prWorkPlan.getMakeTeam()); -// if (teamSet != null) { -// bsWorkCenter = centerTeam.getBsWorkCenter(); -// } -// // 验证当前登录人和当前工序的班组是否一致 -// this.checkMakeTeamOne(prWorkPlan, tsIds); -// if (checkAfterPlating) { -// prWorkPlanService.verifyMakeUnit(prWorkPlan); -// } -// } else { -// -// if (nextPrWorkPlan.getMakeTeam() == null) { -// throw new ServiceException("当前工序无加工班组"); -// } -// -// // 根据当前工序班组查询作业中心 -// centerTeam = bsCenterTeamService.getByTsId(nextPrWorkPlan.getMakeTeam().getTsId()); -// if (centerTeam != null) { -// bsWorkCenter = centerTeam.getBsWorkCenter(); -// } -// //验证当前登录人和当前工序的班组是否一致 -// this.checkMakeTeamOne(nextPrWorkPlan, tsIds); -// if (checkAfterPlating) { -// prWorkPlanService.verifyMakeUnit(nextPrWorkPlan); -// } -// } -// if (bsWorkCenter == null) { -// throw new ServiceException("当前工序无作业中心!"); -// } + WorkCenter bsWorkCenter = null; + CenterTeam centerTeam; + if (!checkCurrentProcess || (frontPrWorkPlan == null && prWorkPlan.getStatus().equals(WorkPlan.STATUS_NO_START)) || nextPrWorkPlan == null) { + if (prWorkPlan.getMakeTeam() == null) { + throw new ServiceException("当前工序无加工班组"); + } + + // 根据当前工序班组查询作业中心 + centerTeam = centerTeamService.getByTsId(prWorkPlan.getMakeTeam()); + if (centerTeam != null) { + bsWorkCenter = workCenterService.getById(centerTeam.getWcId()); + } + // 验证当前登录人和当前工序的班组是否一致 + this.checkMakeTeamOne(prWorkPlan, tsIds); + if (checkAfterPlating) { + workPlanService.verifyMakeUnit(prWorkPlan); + } + } else { + + if (nextPrWorkPlan.getMakeTeam() == null) { + throw new ServiceException("当前工序无加工班组"); + } + + // 根据当前工序班组查询作业中心 + centerTeam = centerTeamService.getByTsId(nextPrWorkPlan.getMakeTeam()); + if (centerTeam != null) { + bsWorkCenter = workCenterService.getById(centerTeam.getWcId()); + } + //验证当前登录人和当前工序的班组是否一致 + this.checkMakeTeamOne(nextPrWorkPlan, tsIds); + if (checkAfterPlating) { + workPlanService.verifyMakeUnit(nextPrWorkPlan); + } + } + if (bsWorkCenter == null) { + throw new ServiceException("当前工序无作业中心!"); + } + } + + private void checkMakeTeamOne(WorkPlan prWorkPlan, List tsIds) { + Long teamTsId = null; + + //判断是否特殊工序,如果是特殊工序验证附属班组,反之则为分派班组 + //20260304 逻辑更改,若存在附属班组,则验证附属班组,不存在附属班组,验证加工班组 + if (prWorkPlan.getSubsidiaryTeam() != null) { + teamTsId = prWorkPlan.getSubsidiaryTeam(); + } else { + teamTsId = prWorkPlan.getMakeTeam(); + } + + if (tsIds == null) { + throw new ServiceException("当前登录人无对应班组!"); + } + if (!tsIds.contains(teamTsId)) { + throw new ServiceException("当前工序不是登录人所在班组工序,不能操作!"); + } } @Override @@ -314,6 +344,29 @@ public class PdaLoadServiceImpl extends BaseServiceImpl getHangNum(String deviceCode) { + List objectList = new ArrayList<>(); + if (deviceCode.contains(prefixId)) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("label", "钝化专用"); + jsonObject.put("value", -1); + objectList.add(jsonObject); + } + List basicClazzList = basicClazzService.list(Wrappers.lambdaQuery(BasicClazz.class).eq(BasicClazz::getCode, deviceCode).eq(BasicClazz::getBizType, BasicClazz.TYPE_SUSPENSION_NO)); + if (basicClazzList == null) { + return List.of(); + } + + for (BasicClazz basicClazz : basicClazzList) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("label", basicClazz.getName()); + jsonObject.put("value", basicClazz.getId()); + objectList.add(jsonObject); + } + return objectList; + } + @Override public void handleBaoZhuangWorkPlan(List wpList, YieldOrder yo) { if (wpList == null || wpList.size() == 0) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index c68b92a8..08357bc4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.BeanUtils; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; @@ -12,18 +13,22 @@ import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.service.IRelTeamSetUserService; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity; import org.springblade.desk.dashboard.service.*; +import org.springblade.desk.device.pojo.entity.EquipmentEntity; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; import org.springblade.desk.device.pojo.entity.RackSetEntity; +import org.springblade.desk.device.service.IEquipmentService; import org.springblade.desk.device.service.IFeiBaSetService; import org.springblade.desk.device.service.IRackSetService; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.WorkPlanMapper; +import org.springblade.desk.produce.pojo.dto.DeviceBindDTO; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.desk.produce.pojo.dto.PrMacTooUseSpec; import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO; @@ -44,6 +49,8 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static com.fasterxml.jackson.databind.type.LogicalType.DateTime; @@ -61,30 +68,10 @@ public class PdaSaveServiceImpl extends BaseServiceImpl planListIds = Func.toLongList(deviceBindDTO.getPlanListIds()); + if (rsId == null && fsId == null && CollectionUtils.isEmpty(planListIds)) { + throw new ServiceException("数据格式不正确!"); + } - //同槽号 + RackSetEntity rackSet = this.getRackSetByRsId(rsId); + FeiBaSetEntity feiBaSet = this.getFeiBaSetByFsId(fsId); + EquipmentEntity equipment = this.getEquipmentCardByEcId(ecId); + + // 同槽号 String code = null; - //rsId挂具绑定流程卡,fsId飞靶绑定流程卡 + // rsId挂具绑定流程卡,fsId飞靶绑定流程卡 if (rsId != null) { - List macToolUseList = macToolUseService.list(Wrappers.query().lambda() - .eq(MacToolUse::getBsRackSet, rsId) - .eq(MacToolUse::getFinished, false) - .eq(MacToolUse::getIsDeleted, 0).orderByDesc(MacToolUse::getMtnCode) - ); - if (macToolUseList.size() > 0) { - code = macToolUseList.get(0).getMtnCode(); - } + code = macToolUseService.findMaxCodeByParams(rsId, null); //如果未找到满足条件的同槽号 if (StringUtils.isBlank(code)) { code = macToolUseService.nextCode(0); } //修改挂具状态 + rackSet.setStatus(RackSetEntity.RS_STATUS_BOUND); + rackSet.setBindQty((short) (rackSet.getBindQty() + 1)); rackSetService.updateById(rackSet); + } else if (fsId != null) { + code = macToolUseService.findMaxCodeByParams(null, fsId); + //如果未找到满足条件的同槽号 + if (StringUtils.isBlank(code)) { + code = macToolUseService.nextCode(1); + } + //修改飞靶状态 + feiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_BOUND); + feiBaSet.setBindQty((short) (feiBaSet.getBindQty() + 1)); + feiBaSetService.updateById(feiBaSet); + } else if (ecId != null) { + code = macToolUseService.nextCode(2); } - //fsId 是空,逻辑不会走 + //处理绑定信息 - WorkPlan prWorkPlan = null; - MacToolUse mtu = null; - //绑定日期 - Date nowDate = new Date(); - String[] str = planListIds.split(","); - for (int i = 0; i < str.length; i++) { - Long planId = Long.parseLong(str[i]); - prWorkPlan = this.getById(planId); + WorkPlan workPlan; + MacToolUse mtu; + List workPlans = this.listByIds(planListIds); + // stream流将workPlans按照ID转换为map + Map workPlanMap = workPlans.stream().collect(Collectors.toMap(WorkPlan::getId, wp -> wp)); + for (Long planId : planListIds) { + workPlan = workPlanMap.get(planId); mtu = new MacToolUse(); - mtu.setMtnCode(code); - mtu.setBsRackSet(rsId); - mtu.setWpId(prWorkPlan.getId()); - mtu.setCreateMan(AuthUtil.getUser().getUserId()); - mtu.setUpdateTime(nowDate); - mtu.setCreateTime(nowDate); - macToolUseService.saveOrUpdate(mtu); + mtu.setWpId(planId); + this.packageMtu(mtu, rsId, fsId, ecId, code); + macToolUseService.save(mtu); //修改作业计划绑定状态为绑定 - prWorkPlan.setBindStatus(WorkPlan.BIND_STATUS_BIND); + workPlan.setBindStatus(WorkPlan.BIND_STATUS_BIND); if (rsId == null) { - prWorkPlan.setPrintType(WorkPlan.PRINT_TYPE_PROCESS); + workPlan.setPrintType(WorkPlan.PRINT_TYPE_PROCESS); } - this.updateById(prWorkPlan); + this.updateById(workPlan); } // 存储同槽额外面积 没有表,后期添加 - this.setBsAdditionalMess(code); + this.setBsAdditionalMess(code, deviceBindDTO); + } + + private EquipmentEntity getEquipmentCardByEcId(Long ecId) { + if (ecId == null) { + return null; + } + + EquipmentEntity equipment = equipmentService.getById(ecId); + if (equipment == null) { + throw new ServiceException("此设备不存在!"); + } + return equipment; + } + + private FeiBaSetEntity getFeiBaSetByFsId(Long fsId) { + if (fsId == null) { + return null; + } + + FeiBaSetEntity feiBaSet = feiBaSetService.getById(fsId); + if (feiBaSet == null) { + throw new ServiceException("此飞靶不存在!"); + } + return feiBaSet; + } + + private RackSetEntity getRackSetByRsId(Long rsId) { + if (rsId == null) { + return null; + } + + RackSetEntity rackSet = rackSetService.getById(rsId); + if (rackSet == null) { + throw new ServiceException("此挂具不存在!"); + } + return rackSet; } @Override - public void binding(Long fsId, Long ecId, Boolean unFsBool, String hangNum, String rsListIds) { + public void binding(DeviceBindDTO deviceBindDTO) { + Long fsId = deviceBindDTO.getFsId(); + Long ecId = deviceBindDTO.getEcId(); + List rsListIds = Func.toLongList(deviceBindDTO.getRsList()); + if (CollectionUtils.isEmpty(rsListIds) && fsId == null && ecId == null) { + throw new ServiceException("数据格式不正确!"); + } + //获取同槽号 String code = null; - Date nowDate = new Date(); - FeiBaSetEntity frackSet = feiBaSetService.getById(fsId); + FeiBaSetEntity feiBaSet = this.getFeiBaSetByFsId(fsId); + //挂具集合不为空,则代表是挂具相关绑定,反之则是飞靶绑定设备 if (rsListIds != null) { if (fsId != null) { - List macToolUseList = macToolUseService.list(Wrappers.query().lambda() - .eq(MacToolUse::getBsRackSet, fsId) - .eq(MacToolUse::getFinished, false) - .eq(MacToolUse::getIsDeleted, 0).orderByDesc(MacToolUse::getMtnCode) - ); - if (macToolUseList.size() > 0) { - code = macToolUseList.get(0).getMtnCode(); - } + code = macToolUseService.findMaxCodeByParams(null, fsId); //修改飞靶状态 - feiBaSetService.updateById(frackSet); + feiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_BOUND); + feiBaSet.setBindQty((short) (feiBaSet.getBindQty() + 1)); + feiBaSetService.updateById(feiBaSet); //如果未找到满足条件的同槽号,则自动生成一个同槽号(飞靶) if (StringUtils.isBlank(code)) { - code = macToolUseService.nextCode(0); + code = macToolUseService.nextCode(1); } } else { //如果未找到满足条件的同槽号,则自动生成一个同槽号(设备) @@ -182,51 +221,85 @@ public class PdaSaveServiceImpl extends BaseServiceImpl macToolUseList = macToolUseService.list(Wrappers.query().lambda() - .eq(MacToolUse::getBsRackSet, rsId) - .eq(MacToolUse::getFinished, false) - .eq(MacToolUse::getIsDeleted, 0) - ); + List mtuLst = macToolUseService.listByParams(rsId, null, null, null); + if (CollectionUtils.isEmpty(mtuLst)) { + throw new ServiceException("挂具" + rackSet.getRsCode() + "未绑定流程卡!"); + } //开始绑定 - for (int i1 = 0; i1 < macToolUseList.size(); i1++) { - MacToolUse mtu = macToolUseList.get(i1); - mtu.setMtnCode(code); - mtu.setBsRackSet(rsId); - mtu.setUpdateTime(nowDate); - mtu.setCreateMan(AuthUtil.getUser().getUserId()); - macToolUseService.updateById(mtu); + for (MacToolUse mtu : mtuLst) { + // 如果挂具绑定了飞靶或者设备,则提示,不能重复绑定 + if (mtu.getBsFeiBaSet() != null || mtu.getEquipmentCard() != null) { + throw new ServiceException("挂具【" + rackSet.getRsCode() + "】已绑定" + (mtu.getBsFeiBaSet() == null ? "设备【" + mtu.getEquipmentCard() : "飞靶【" + mtu.getBsFeiBaSet()) + "】,不能重复绑定!"); + } + this.packageMtu(mtu, rsId, fsId, ecId, code); } + macToolUseService.updateBatchById(mtuLst); // 存储同槽额外面积 - this.setBsAdditionalMess(code); + this.setBsAdditionalMess(code, deviceBindDTO); } - } else { - List macToolUseList = macToolUseService.list(Wrappers.query().lambda() - .eq(MacToolUse::getBsFeiBaSet, frackSet.getId()) - .eq(MacToolUse::getIsDeleted, 0) - ); - //未标记解绑飞靶,则代表正常绑定 - if (unFsBool == null) { - //获取以设备为基准的同槽号 + List mtuLst = macToolUseService.listByParams(null, fsId, null, null); + if (CollectionUtils.isEmpty(mtuLst)) { + throw new ServiceException("此飞靶未绑定挂具!"); + } + // 未标记解绑飞靶,则代表正常绑定 + if (deviceBindDTO.getUnFsBool() == null || "0".equals(deviceBindDTO.getUnFsBool())) { + // 获取以设备为基准的同槽号 code = macToolUseService.nextCode(2); - //开始绑定 - for (int i = 0; i < macToolUseList.size(); i++) { - MacToolUse mtu = macToolUseList.get(i); - mtu.setMtnCode(code); - mtu.setHangNum(null); - mtu.setMtnCode(code); - mtu.setUpdateTime(nowDate); - mtu.setCreateMan(AuthUtil.getUser().getUserId()); - macToolUseService.updateById(mtu); + // 挂次号必填 + if (StringUtils.isBlank(deviceBindDTO.getHangNum())) { + throw new ServiceException("挂次号不能为空!"); + } + // 开始绑定 + for (MacToolUse mtu : mtuLst) { + // 如果飞靶绑定了设备,则提示,不能重复绑定 + if (mtu.getEquipmentCard() != null) { + throw new ServiceException("飞靶【" + feiBaSet.getFsCode() + "】已绑定设备【" + mtu.getEquipmentCard() + "】,不能重复绑定!"); + } + // 靶备绑定下更新同槽额外面积存储记录中的同槽编号 + if (StringUtils.isNotBlank(mtu.getMtnCode())) { + BsAdditionalMess dataByOneData = bsAdditionalMessService.getDataByOneData(mtu.getMtnCode(), (short) 1); + if (dataByOneData != null && dataByOneData.getId() != null) { + dataByOneData.setOneData(code); + bsAdditionalMessService.updateById(dataByOneData); + } + } + mtu.setHangNum(deviceBindDTO.getHangNum()); + this.packageMtu(mtu, mtu.getBsRackSet(), fsId, ecId, code); + } + } else { + // 开始绑定 + MacToolUse newMtu = null; + for (MacToolUse mtu : mtuLst) { + newMtu = new MacToolUse(); + newMtu.setWpId(mtu.getWpId()); + // 直接共享产线设备的同槽(烘箱) + this.packageMtu(newMtu, mtu.getBsRackSet(), null, mtu.getEquipmentCard(), mtu.getMtnCode()); + macToolUseService.save(newMtu); + + //标识绑定记录状态为解绑 + mtu.setFinished(1); + // 将飞拔状态改为空闲 + if (mtu != null && mtu.getBsFeiBaSet() != null) { + this.unBindBsFeiBaSet(feiBaSetService.getById(mtu.getBsFeiBaSet())); + } } - } //else 逻辑不走 + //获取第一次烘箱的温度数据 +// macToolUseService.haveHongXiaoTem(newMtu); + } + macToolUseService.updateBatchById(mtuLst); } } + private void packageMtu(MacToolUse mtu, Long rsId, Long fsId, Long ecId, String code) { + mtu.setMtnCode(code); + mtu.setBsRackSet(rsId); + mtu.setBsFeiBaSet(fsId); + mtu.setEquipmentCard(ecId); + } + @Override public void sjBindingCard(SjEcBingCardVo sjEcBingCardVo) { MesEquipmentCardEntity equipmentCard = null; @@ -682,8 +755,9 @@ public class PdaSaveServiceImpl extends BaseServiceImpl mtuList) { - if (mtuList == null || mtuList.size() == 0) + if (mtuList == null || mtuList.isEmpty()) { return; + } for (MacToolUse mtu : mtuList) { //修改作业计划绑定状态 @@ -695,11 +769,17 @@ public class PdaSaveServiceImpl extends BaseServiceImpl list = this.list(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, id).eq(PlateAround::getPaType, beforePlanOut).orderByDesc(PlateAround::getId)); + if (CollectionUtils.isEmpty(list)) { + return null; + } + return list.get(0); + } + private void savePlateAround(BladeUser user, PlateAround plateAround, Short paType, int next, Boolean aTure) { PlateAround newPa = null; PlateAround oldPa=null; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java index 904285bd..34288b9f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java @@ -5,10 +5,15 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; +import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.desk.basic.pojo.entity.CenterTeam; import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; +import org.springblade.desk.basic.pojo.entity.WorkCenter; +import org.springblade.desk.basic.service.ICenterTeamService; import org.springblade.desk.basic.service.IRelTeamSetUserService; +import org.springblade.desk.basic.service.IWorkCenterService; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; import org.springblade.desk.dashboard.pojo.entity.DsProcessMeasuringToolEntity; @@ -74,6 +79,13 @@ public class WorkPlanServiceImpl extends BaseServiceImpl wpList, List deleteIds) { if (wpList != null) { @@ -249,4 +261,36 @@ public class WorkPlanServiceImpl extends BaseServiceImpl Date: Wed, 18 Mar 2026 10:00:42 +0800 Subject: [PATCH 17/38] =?UTF-8?q?=E5=B7=A5=E8=89=BA=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/dashboard/pojo/vo/DsPartTreeVO.java | 5 +- .../desk/dashboard/mapper/DsPartMapper.java | 2 + .../mapper/DsPartRelationMapper.java | 6 +- .../desk/dashboard/mapper/PartMapper.xml | 9 +++ .../dashboard/mapper/PartRelationMapper.xml | 46 +++++++++--- .../service/IDsPartRelationService.java | 5 +- .../dashboard/service/IDsPartService.java | 12 ++++ .../service/IDsPartVersionService.java | 8 +++ .../impl/DsPartRelationServiceImpl.java | 4 +- .../service/impl/DsPartServiceImpl.java | 57 ++++++++++++--- .../impl/DsPartsVersionServiceImpl.java | 71 ++++++++++++++++++- .../service/impl/DsTaskingServiceImpl.java | 30 ++++---- .../desk/iot/mapper/EpLineElectricMapper.xml | 3 +- 13 files changed, 216 insertions(+), 42 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java index 5349b3d3..ce6f723b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java @@ -24,6 +24,7 @@ * 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 java.util.ArrayList; import java.util.List; @@ -39,6 +40,7 @@ public class DsPartTreeVO { private String partCode; private String partName; private String docLink; + private Double quota; private List children; /** @@ -49,10 +51,11 @@ public class DsPartTreeVO { } - public DsPartTreeVO(String partCode, String partName, String docLink) { + public DsPartTreeVO(String partCode, String partName, String docLink,Double quota) { this(); this.partCode = partCode; this.partName = partName; this.docLink = docLink; + this.quota = quota; } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java index 2ff60108..6095ff0f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java @@ -151,4 +151,6 @@ public interface DsPartMapper extends BaseMapper { List selectPartByDate(@Param("startDate") Date startDate,@Param("endDate") Date endDate); List selectDsPartSub(@Param("partCode") String partCode); + + List selectListPartByCodeLike(@Param("zPartCode") String zPartCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java index d2b42638..3ae4c87b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java @@ -63,5 +63,9 @@ public interface DsPartRelationMapper extends BaseMapper { List selectDsPartRelationByPartId(@Param("partId")Long partId); - List selectDsPartRelationByPartCodeAndChildPartCode(@Param("bPartCode")String bPartCode, @Param("zPartCode")String zPartCode); + List selectDsPartRelationByPartCodeAndChildPartCode(@Param("bPartCode")String bPartCode, + @Param("zPartCode")String zPartCode, + @Param("bPartVersion")String bPartVersion, + @Param("zPartVersion") String zPartVersion, + @Param("zPartIdList")List zPartIdList); } 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 d0385381..b4064681 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 @@ -388,6 +388,15 @@ src.MATERIAL, src.PLATE_CODE, src.SIN_TER_TYPE FROM TOOL_MES.DS_PART_SUB src where src.PART_CODE = #{partCode} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml index 50977c24..15aed665 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml @@ -36,25 +36,49 @@ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java index 22c6b879..92e59235 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java @@ -70,7 +70,10 @@ public interface IDsPartRelationService extends BaseService selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode); + List selectDsPartRelationByPartCodeAndChildPartCode + (String bPartCode, String zPartCode, String bPartVersion, String zPartVersion,List zPartId); } 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 8ec92025..01a5b1ab 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 @@ -240,4 +240,16 @@ public interface IDsPartService extends BaseService { List selectDsPartSub(String partCode); List selectDsPartVersionByIds(List idList); + + /** + * 根据 零件号 b号 工艺级别 版本号 查询零件工艺信息 + * 版本号为空查最新版本 + * 工艺级别为空返回二级工艺 + * @param partCode 零件号 + * @param roamNo B号 + * @param rank 工艺级别 + * @param partVersion 版本号 + * @return + */ + boolean selectPartCraft(String partCode,String roamNo,String rank,String partVersion); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java index bea2d201..0921427e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java @@ -26,6 +26,7 @@ package org.springblade.desk.dashboard.service; import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import java.util.List; @@ -66,4 +67,11 @@ public interface IDsPartVersionService extends BaseService * @return */ DsPartVersionEntity selectByPartCodeAndPartVersion(String partCode, String partVersion); + + /** + * 获取零件的最新版本号 + * @param dsPartList + * @return + */ + List selectListByPartCode(List dsPartList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java index b0f63701..7fef9de9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java @@ -74,8 +74,8 @@ public class DsPartRelationServiceImpl extends BaseServiceImpl selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode) { - return partRelationMapper.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode); + public List selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode ,String bPartVersion, String zPartVersion,List zPartIdList) { + return partRelationMapper.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode,bPartVersion,zPartVersion,zPartIdList); } } 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 9a981690..147cd8e5 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 @@ -284,11 +284,34 @@ public class DsPartServiceImpl extends BaseServiceImpl sinteringPart(String bPartCode, String zPartCode) { if (!StringUtils.isEmpty(bPartCode) && !StringUtils.isEmpty(zPartCode)) { - return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode); + List partVersionEntityList = partVersionService.selectByPartCode(bPartCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + String bPartVersion = maxEntity.get().getPartVersion(); + return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode,bPartVersion,null,null); + } + } if (!StringUtils.isEmpty(zPartCode)) { - return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(null, zPartCode); + //模糊查询零件 + List dsPartList = dsPartMapper.selectListPartByCodeLike(zPartCode); + //获取这些零件的最新版本号 + List partVersionEntityList = partVersionService.selectListByPartCode(dsPartList); + + // 提取零件ID列表 + List zPartIdList = partVersionEntityList.stream() + .map(DsPartVersionEntity::getPartId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + + return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(null, null,null,null,zPartIdList); + + } return new ArrayList<>(); @@ -297,14 +320,21 @@ public class DsPartServiceImpl extends BaseServiceImpl getPartTreeList(String partCode) { - // 1. 联表查询所有相关关系 - List relations = dsPartMapper.selectPartRelations(partCode); - if (relations.isEmpty()) { - return new ArrayList<>(); + List partVersionEntityList = partVersionService.selectByPartCode(partCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + String bPartVersion = maxEntity.get().getPartVersion(); + List partBomVOList = partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(partCode, null, bPartVersion, null, null); + + // 2. 构建树形结构 + return buildTreeFromRelations(partBomVOList); + } - // 2. 构建树形结构 - return buildTreeFromRelations(relations); + return new ArrayList<>(); } @Override @@ -407,7 +437,8 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartVersionByIds(List idList) { return dsPartMapper.selectDsPartVersionByIds(idList); } + + @Override + public boolean selectPartCraft(String partCode, String roamNo, String rank, String partVersion) { + return false; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java index b201d61b..d353a7f4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java @@ -27,6 +27,8 @@ package org.springblade.desk.dashboard.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.desk.dashboard.excel.DsSimilarPartsExcel; @@ -43,8 +45,8 @@ 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; +import java.util.*; +import java.util.stream.Collectors; /** * 相似零件表 服务实现类 @@ -52,6 +54,7 @@ import java.util.List; * @author BladeX * @since 2025-11-21 */ +@Slf4j @Service public class DsPartsVersionServiceImpl extends BaseServiceImpl implements IDsPartVersionService { @@ -77,4 +80,68 @@ public class DsPartsVersionServiceImpl extends BaseServiceImpl selectListByPartCode(List dsPartList) { + // 提取零件ID列表 + List partIds = dsPartList.stream() + .map(DsPartEntity::getId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + if (partIds.isEmpty()) { + return Collections.emptyList(); + } + + // 查询零件版本号 + List partVersionEntityList = partVersionMapper.selectByPartIds(partIds); + + // 2. 按partCode分组,每组内按版本号转Integer降序排序,取最大值 + Map partCodeToMaxVersionMap = partVersionEntityList.stream() + // 过滤无效数据:partCode为空 或 版本号非数字的记录 + .filter(entity -> isValidPartVersionEntity(entity)) + // 分组并保留每组内版本号最大的记录 + .collect(Collectors.toMap( + DsPartVersionEntity::getPartCode, + entity -> entity, + // 合并规则:版本号转Integer后比较,保留更大的 + (existingEntity, newEntity) -> { + int existingVersion = Integer.parseInt(existingEntity.getPartVersion().trim()); + int newVersion = Integer.parseInt(newEntity.getPartVersion().trim()); + return newVersion > existingVersion ? newEntity : existingEntity; + } + )); + + // 3. 将Map的值转为指定返回类型 List + List resultList = new ArrayList<>(partCodeToMaxVersionMap.values()); + + return resultList; + } + + /** + * 校验实体有效性:确保partCode非空 + 版本号可转为Integer + */ + private static boolean isValidPartVersionEntity(DsPartVersionEntity entity) { + if (entity == null) { + return false; + } + // 校验partCode非空 + if (StringUtils.isBlank(entity.getPartCode())) { + log.warn("零件版本实体partCode为空,过滤该记录"); + return false; + } + // 校验版本号非空且可转为Integer + String versionStr = entity.getPartVersion(); + if (StringUtils.isBlank(versionStr)) { + log.warn("零件编码{}的版本号为空,过滤该记录", entity.getPartCode()); + return false; + } + try { + Integer.parseInt(versionStr.trim()); + return true; + } catch (NumberFormatException e) { + log.warn("零件编码{}的版本号{}非有效数字,过滤该记录", entity.getPartCode(), versionStr); + return false; + } + } } 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 0e497aaa..d9c583da 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 @@ -525,9 +525,11 @@ public class DsTaskingServiceImpl extends BaseServiceImpl idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(idList)) { List dsPartEntityList = partService.selectDsPartVersionByIds(idList); -// for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { + for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { // dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName()); -// } + DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(dsPartVersionVO.getId()); + dsPartVersionVO.setPartVersion(partVersionEntity.getPartVersion()); + } dsTaskingVO.setChildren(dsPartEntityList); } } @@ -712,9 +714,9 @@ public class DsTaskingServiceImpl extends BaseServiceImpl dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), rank); - if(CollectionUtils.isEmpty(dsCraftVOList)){ - throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); - } +// if(CollectionUtils.isEmpty(dsCraftVOList)){ +// throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); +// } if (!CollectionUtils.isEmpty(dsCraftVOList)) { for (DsCraftVO craftVO : dsCraftVOList) { @@ -1447,20 +1449,24 @@ public class DsTaskingServiceImpl extends BaseServiceImpl taskingList = taskingMapper.selectOldMesTasking(startTime, endTime); if (CollectionUtils.isEmpty(taskingList)) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml index e19103c6..ae834db2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml @@ -24,13 +24,12 @@ SELECT * FROM ( SELECT - ID, DEVICE_ID, WORK_SLOT, ELECTRIC, CREATE_TIME, PUSH_DATA - FROM EP_LINE_ELECTRIC + FROM P_RB_EP_LINE_ELECTRIC WHERE DEVICE_ID = #{deviceCode} AND WORK_SLOT = #{batchNo} AND CREATE_TIME BETWEEN #{startDate} From 98cf1f3bcf3d270eb029fc3d9c00974fb4cc7992 Mon Sep 17 00:00:00 2001 From: liweidong-hj Date: Wed, 18 Mar 2026 10:17:19 +0800 Subject: [PATCH 18/38] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/dashboard/TaskingProcessor.java | 29 +++++++++++++++++++ .../desk/dashboard/feign/IPartClient.java | 8 ++--- .../desk/dashboard/feign/PartClient.java | 4 +-- 3 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/TaskingProcessor.java diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/TaskingProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/TaskingProcessor.java new file mode 100644 index 00000000..c1050349 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/TaskingProcessor.java @@ -0,0 +1,29 @@ +package org.springblade.job.processor.dashboard; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.dashboard.feign.IPartClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * 工艺模块-正常任务 + * @author liweidong + */ +@Component +@Data +@Slf4j +public class TaskingProcessor implements BasicProcessor { + + @Resource + private IPartClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + client.syncTasking(); + return new ProcessResult(true); + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java index d82be63f..30cd1bac 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java @@ -25,7 +25,7 @@ public interface IPartClient { String GET_SUB_PART = API_PREFIX + "/getSubPart"; String BATCH_PARTS = API_PREFIX + "/batchParts"; String REWORK_TASK = API_PREFIX + "/reworkTask"; - String SYNC_PART = API_PREFIX + "/syncPart"; + String SYNC_TASKING = API_PREFIX + "/syncTasking"; /** * 获取零件信息 @@ -66,8 +66,8 @@ public interface IPartClient { void reworkTask(); /** - * 零件同步 + * 正常任务同步 */ - @GetMapping(SYNC_PART) - void syncPart(); + @GetMapping(SYNC_TASKING) + void syncTasking(); } \ No newline at end of file diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java index 7426b9b1..3711f56c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java @@ -47,8 +47,8 @@ public class PartClient implements IPartClient { } @Override - public void syncPart() { - partService.syncPart(); + public void syncTasking() { + taskingService.syncTasking(); } } From c52b490561ca36bbbce7315db0c7d9467d274c1e Mon Sep 17 00:00:00 2001 From: qinyulong Date: Wed, 18 Mar 2026 10:45:08 +0800 Subject: [PATCH 19/38] =?UTF-8?q?feign=E6=8E=88=E6=9D=83=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9/feign/client/${modelCode!}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/desk/device/feign/IotEquipmentTaskClient.java | 2 +- .../springblade/desk/device/feign/LimsMeaToolTaskClient.java | 2 +- .../desk/jobtransfer/feign/JobTransferTaskClient.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/IotEquipmentTaskClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/IotEquipmentTaskClient.java index a7d2c306..ae7babe5 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/IotEquipmentTaskClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/IotEquipmentTaskClient.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping; */ public interface IotEquipmentTaskClient { - String API_PREFIX = "/feign/device/iot-task"; + String API_PREFIX = "/feign/client/iot-task"; String SYNCHRONIZE_EQUIPMENT_TASK = API_PREFIX + "/synchronize-equipment-task"; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/LimsMeaToolTaskClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/LimsMeaToolTaskClient.java index 0295ea73..e83e019e 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/LimsMeaToolTaskClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/LimsMeaToolTaskClient.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping; */ public interface LimsMeaToolTaskClient { - String API_PREFIX = "/feign/device/lims-task"; + String API_PREFIX = "/feign/client/lims-task"; String SYNC_MEASUREMENT_RECORDS_TASK = API_PREFIX + "/sync-measurement-records-task"; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/feign/JobTransferTaskClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/feign/JobTransferTaskClient.java index 50a98c6c..375ed80f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/feign/JobTransferTaskClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/feign/JobTransferTaskClient.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping; */ public interface JobTransferTaskClient { - String API_PREFIX = "/feign/job-transfer/update-task"; + String API_PREFIX = "/feign/client/job-transfer"; //证书状态更新 String CERTIFICATE_MAINTENANCE_TASK = API_PREFIX + "/certificate-maintenance-task"; From 48c98a15d52d6e06ce338f97cd57fd25b5ffb51e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Wed, 18 Mar 2026 11:45:24 +0800 Subject: [PATCH 20/38] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/pojo/dto/DeviceBindDTO.java | 6 +- .../desk/produce/pojo/vo/SjEcBingCardVo.java | 34 ++++++++ .../produce/mapper/BsAdditionalMessMapper.xml | 27 +----- .../mapper/MesBsAdditionalMessMapper.xml | 30 +++++++ .../service/impl/PdaLoadServiceImpl.java | 27 +----- .../service/impl/PdaSaveServiceImpl.java | 86 +++++++++---------- .../service/impl/PlateAroundServiceImpl.java | 24 +++--- .../service/impl/WorkPlanServiceImpl.java | 14 ++- 8 files changed, 123 insertions(+), 125 deletions(-) create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesBsAdditionalMessMapper.xml diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/DeviceBindDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/DeviceBindDTO.java index ca816c75..f56affe6 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/DeviceBindDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/DeviceBindDTO.java @@ -37,13 +37,13 @@ public class DeviceBindDTO { @Schema(description = "是否解绑") private String unFsBool; - @Schema(description = "") + @Schema(description = "掺镀件面积") private String dopedParts; - @Schema(description = "") + @Schema(description = "网面积") private String net; - @Schema(description = "") + @Schema(description = "挂具面积") private String rack; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjEcBingCardVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjEcBingCardVo.java index 7485d88e..5c7e8acf 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjEcBingCardVo.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjEcBingCardVo.java @@ -1,25 +1,59 @@ package org.springblade.desk.produce.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; +/** + * @author litao + */ @Data public class SjEcBingCardVo { + + @Schema(description = "设备ID") private Long ecId; + + @Schema(description = "") private String operate; + + @Schema(description = "此次绑定数量") private String bindNum; + + @Schema(description = "此次绑定设定的温度") private String heat; + + @Schema(description = "工序名称") private String ppsName; + + @Schema(description = "工序ID集合") private List planList; + + @Schema(description = "") private String rsName; + + @Schema(description = "") private String oneData; + + @Schema(description = "") private String twoData; + + @Schema(description = "") private String threeData; + + @Schema(description = "") private String fourData; + + @Schema(description = "") private String fiveData; + + @Schema(description = "") private String sixData; + + @Schema(description = "") private String sevenData; + + @Schema(description = "") private String eightData; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.xml index 9b578ae1..e2744d2f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.xml @@ -1,30 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesBsAdditionalMessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesBsAdditionalMessMapper.xml new file mode 100644 index 00000000..9b578ae1 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesBsAdditionalMessMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java index 787feb3b..8dd4a87f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java @@ -2,16 +2,12 @@ package org.springblade.desk.produce.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; -import org.springblade.common.exception.BusinessException; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.desk.basic.mapper.CraftAbilityMapper; import org.springblade.desk.basic.pojo.entity.*; @@ -32,20 +28,13 @@ import org.springblade.desk.produce.pojo.vo.LoadSubOrderVO; import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO; import org.springblade.desk.produce.service.*; import org.springblade.desk.quality.pojo.entity.InspectionTask; -import org.springblade.desk.quality.pojo.entity.WorkPlanItem; -import org.springblade.desk.quality.pojo.vo.WorkPlanItemDetailVO; -import org.springblade.desk.quality.pojo.vo.WorkPlanItemVO; import org.springblade.desk.quality.service.IInspectionTaskService; -import org.springblade.desk.quality.service.IPlanTestService; import org.springblade.desk.quality.service.IWorkPlanItemService; import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -64,22 +53,8 @@ public class PdaLoadServiceImpl extends BaseServiceImpl planList = sjEcBingCardVo.getPlanList(); + EquipmentEntity equipment = null; + if (!("配胶".equals(operate) || "玻璃饼印字".equals(ppsName) || "I面涂覆".equals(operate) || "II面涂覆".equals(operate))) { + if (ecId == null) { throw new ServiceException("请扫描对应的设备"); } else { - equipmentCard = mesEquipmentCardService.getById(sjEcBingCardVo.getEcId()); + equipment = this.getEquipmentCardByEcId(ecId); } } //同槽号 String code = macToolUseService.nextCode(3); //处理绑定信息 - WorkPlan workPlan = null; - MesQcProduceRunEntity qcProduceRun = null; - MacToolUse mtu = null; + WorkPlan workPlan; + MacToolUse mtu; //绑定日期 Date nowDate = new Date(); - for (Long id : sjEcBingCardVo.getPlanList()) { - if (sjEcBingCardVo.getOperate() != null && mesQcProduceRunService.getDataByWpIdAndSlot(id, sjEcBingCardVo.getOperate())) { + for (Long id : planList) { + if (operate != null && mesQcProduceRunService.getDataByWpIdAndSlot(id, operate)) { throw new ServiceException("此工序已有对应操作的记录,请勿重复操作"); } workPlan = baseMapper.selectById(id); @@ -328,59 +323,56 @@ public class PdaSaveServiceImpl extends BaseServiceImpl eneUsed; ArrayList params; - if ("玻璃封接清洗".equals(sjEcBingCardVo.getPpsName())) { - if ("清洗".equals(sjEcBingCardVo.getOperate())) { + if ("玻璃封接清洗".equals(ppsName)) { + if ("清洗".equals(operate)) { params = Lists.newArrayList("TempPV1"); Date date = new Date(nowDate.getTime() - 6000); eneUsed = null;//httpRequestService.getEneUsed(qcProduceRun.getDeviceId(), params, DateTime.date2String(date, true, true), DateTime.getTimeNow()); @@ -390,7 +382,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpllambdaQuery().eq(FeiBaSetEntity::getFsCode, unBingVo.getFsCode())); //查询设备 - MesEquipmentCardEntity equipmentCard = mesEquipmentCardService.getOne(Wrappers.lambdaQuery().eq(MesEquipmentCardEntity::getDeviceCode, unBingVo.getDeviceCode())); + EquipmentEntity equipmentCard = equipmentService.getOne(Wrappers.lambdaQuery().eq(EquipmentEntity::getDeviceCode, unBingVo.getDeviceCode())); // 如果都为空,则返回 if (equipmentCard == null && bsFeiBaSet == null && bsRackSet == null) { @@ -741,15 +733,15 @@ public class PdaSaveServiceImpl extends BaseServiceImpl queryByReadStatus(IPage page, PlateAroundDto plateAroundDto) { @@ -192,7 +188,7 @@ public class PlateAroundServiceImpl extends BaseServiceImpl wpList, List deleteIds) { @@ -282,8 +278,8 @@ public class WorkPlanServiceImpl extends BaseServiceImpl list = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, prWorkPlan.getId()).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAN_OUT).orderByDesc(PlateAround::getId)); + if (CollectionUtils.isEmpty(list)) { if ("1".equals(frontWp.getOem())) { //上序外协,本序如果可以接收,验证镀前出库记录 throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!"); From 0c099b877624664f9533173c44a9c2fe74d09ce8 Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Wed, 18 Mar 2026 16:28:04 +0800 Subject: [PATCH 21/38] =?UTF-8?q?=E7=83=A7=E7=BB=93=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=9C=AA=E5=AE=8C=E6=88=90001?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../produce/pojo/dto/PrintChildCheck.java | 157 +++++ .../pojo/dto/PrintChildCheckChild.java | 91 +++ .../produce/pojo/entity/DsRbFilePreserve.java | 56 ++ .../desk/produce/pojo/entity/WorkPlan.java | 7 + .../produce/pojo/vo/DsRbFilePreserveVO.java | 18 + .../desk/quality/pojo/entity/RaiseHand.java | 6 + .../pojo/entity/WorkPlanItemDetail.java | 30 + .../quality/pojo/vo/InspectionTaskListVO.java | 2 + .../DsRbFilePreserveController.java | 58 ++ .../mapper/DsRbFilePreserveMapper.java | 19 + .../produce/mapper/DsRbFilePreserveMapper.xml | 11 + .../desk/produce/mapper/WorkPlanMapper.java | 39 +- .../desk/produce/mapper/WorkPlanMapper.xml | 123 +++- .../service/IDsRbFilePreserveService.java | 22 + .../impl/DsRbFilePreserveServiceImpl.java | 40 ++ .../wrapper/DsRbFilePreserveWrapper.java | 37 ++ .../controller/InspectionTaskController.java | 18 + .../quality/mapper/InspectionTaskMapper.xml | 1 + .../service/IInspectionTaskService.java | 3 + .../impl/InspectionTaskServiceImpl.java | 600 +++++++++++++++--- 20 files changed, 1218 insertions(+), 120 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDsRbFilePreserveService.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DsRbFilePreserveServiceImpl.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/DsRbFilePreserveWrapper.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java new file mode 100644 index 00000000..25c0e10f --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java @@ -0,0 +1,157 @@ +package org.springblade.desk.produce.pojo.dto; + +import java.util.List; + +public class PrintChildCheck implements java.io.Serializable { + + /** + * @return 序号 + * @Author dxl + * @CreateTime 2022/11/7 10:24 + */ + private String testOrders; + /** + * @return 检验细项 + * @Author dxl + * @CreateTime 2022/11/8 16:22 + */ + private List cccList; + + /** + * @return 抽样数 + * @Author dxl + * @CreateTime 2022/11/7 9:25 + */ + private String checkQty; + /** + * @return 合格,不合格,NA + * @Author dxl + * @CreateTime 2022/11/7 9:25 + */ + private String checkResult; + /** + * @return 姓名 + * @Author dxl + * @CreateTime 2022/11/7 9:25 + */ + private String checkName; + /** + * @return 检验日期 + * @Author dxl + * @CreateTime 2022/11/7 9:25 + */ + private String checkDate; + + /** + * 试验数量 + */ + private String testQty; + /** + * @return 检测项目名称 + */ + private String testName; + /** + * @return 检测项目实验标准 + */ + private String trialStandard; + + /** + * @return 设备编码 + */ + private String deviceCode; + + /** + * @return 检验印章URL + */ + private String imgUrl; + public String getTestOrders() { + return testOrders; + } + + public void setTestOrders(String testOrders) { + this.testOrders = testOrders; + } + + public String getCheckQty() { + return checkQty; + } + + public void setCheckQty(String checkQty) { + this.checkQty = checkQty; + } + + public String getCheckName() { + return checkName; + } + + public void setCheckName(String checkName) { + this.checkName = checkName; + } + + public String getCheckDate() { + return checkDate; + } + + public void setCheckDate(String checkDate) { + this.checkDate = checkDate; + } + + public String getCheckResult() { + return checkResult; + } + + public void setCheckResult(String checkResult) { + this.checkResult = checkResult; + } + + public List getCccList() { + return cccList; + } + + public void setCccList(List cccList) { + this.cccList = cccList; + } + + public String getTestQty() { + return testQty; + } + + public void setTestQty(String testQty) { + this.testQty = testQty; + } + + public String getTestName() { + return testName; + } + + public void setTestName(String testName) { + this.testName = testName; + } + + public String getTrialStandard() { + return trialStandard; + } + + public void setTrialStandard(String trialStandard) { + this.trialStandard = trialStandard; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public PrintChildCheck() { + } + + public String getImgUrl() { + return imgUrl; + } + + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java new file mode 100644 index 00000000..0b9e1548 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java @@ -0,0 +1,91 @@ +package org.springblade.desk.produce.pojo.dto; + +/** + * @version V1.0 + * @Title: PrintChildCheckChild + * @Author: dxl + * @CreateTime: 2022/11/8 16:18 + */ +public class PrintChildCheckChild implements java.io.Serializable { + + /** + * @return 名称 + * @Author dxl + * @CreateTime 2022/11/7 10:24 + */ + private String testName; + /** + * @return 实验标准 + * @Author dxl + * @CreateTime 2022/11/7 10:34 + */ + private String trialStandard; + /** + * @return 检验值 + * @Author dxl + * @CreateTime 2022/11/7 10:34 + */ + private String checkValue; + /** + * @return 设备量具 + * @Author dxl + * @CreateTime 2022/11/7 10:24 + */ + private String emTools; + /** + * @return 检验项Id + * @Author dxl + * @CreateTime 2022/11/8 17:09 + */ + private Long wpiId; + + public String getTestName() { + return testName; + } + + public void setTestName(String testName) { + this.testName = testName; + } + + public String getEmTools() { + return emTools; + } + + public void setEmTools(String emTools) { + this.emTools = emTools; + } + + public String getTrialStandard() { + return trialStandard; + } + + public void setTrialStandard(String trialStandard) { + this.trialStandard = trialStandard; + } + + public String getCheckValue() { + return checkValue; + } + + public void setCheckValue(String checkValue) { + this.checkValue = checkValue; + } + + public Long getWpiId() { + return wpiId; + } + + public void setWpiId(Long wpiId) { + this.wpiId = wpiId; + } + + public PrintChildCheckChild(String testName, String trialStandard, String checkValue, Long wpiId) { + this.testName = testName; + this.trialStandard = trialStandard; + this.checkValue = checkValue; + this.wpiId = wpiId; + } + + public PrintChildCheckChild() { + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java new file mode 100644 index 00000000..f0f88c04 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java @@ -0,0 +1,56 @@ +package org.springblade.desk.produce.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serial; +import java.time.LocalDate; +import java.util.Date; + +/** + * + * @author litao + */ +@Data +@TableName("DS_RB_FILE_PRESERVE") +@Schema(description = "DsRbFilePreserve对象") +@EqualsAndHashCode(callSuper = true) +public class DsRbFilePreserve extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "作业中心") + private Long wcId; + + @Schema(description = "工序") + private Long ppsId; + + @Schema(description = "线上线下") + private String line; + + @Schema(description = "维护时间") + private LocalDate keepTime; + + @Schema(description = "维护人") + private Long keepMan; + + @Schema(description = "名称") + private String name; + + + @Schema(description = "审批状态") + private Short approvalStatus = -1; + + @Schema(description = "状态") + private Short rfpStatus = 1; + + @Schema(description = "升版ID") + private String versionId; + + + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java index 1357d5cf..cdda06f1 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; +import org.springblade.desk.produce.pojo.dto.PrintChildCheck; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.entity.WorkPlanItem; @@ -327,5 +328,11 @@ public class WorkPlan extends BaseEntity { private List qcProduceRunsList; @TableField(exist = false) private Integer totalPreserve = 0; + @TableField(exist = false) + private MesBsAdditionalMessEntity bsAdditionalMess; + @TableField(exist = false) + private List dsRbFilePreserveSlotList; + @TableField(exist = false) + private List printChildCheck; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java new file mode 100644 index 00000000..de4816af --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java @@ -0,0 +1,18 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve; + +import java.util.Date; + +/** + * 加工记录 视图实体类 + * + * @author BladeX + * @since 2026-02-04 + */ +@Data +public class DsRbFilePreserveVO extends DsRbFilePreserve { + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java index 2b877e52..42e51c4b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java @@ -71,5 +71,11 @@ public class RaiseHand extends BaseEntity { @Schema(description = "免责金额") private BigDecimal amount; + /** + * raisHand文件 + */ + @Schema(description = "文件路径") + private String fileUrl; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java index f692cc79..de41be20 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java @@ -3,10 +3,12 @@ */ package org.springblade.desk.quality.pojo.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.StringUtils; import org.springblade.core.mp.base.BaseEntity; import java.io.Serial; @@ -149,4 +151,32 @@ public class WorkPlanItemDetail extends BaseEntity { */ @Schema(description = "实际[量具]id") private Long actMtId; + + + @TableField(exist = false) + private String trialItem; + @TableField(exist = false) + private String trialStandard; + @TableField(exist = false) + private Long wpiId; + + + public String getGaugeValueNotNUll() { + StringBuffer sb = new StringBuffer(); + + if(StringUtils.isNotBlank(this.gaugeValue2) && this.gaugeValue6 != "/"){ + sb.append(this.gaugeValue1+"/"+this.gaugeValue2+"/"); + + } + + if(StringUtils.isNotBlank(this.gaugeValue4) && this.gaugeValue4 != "/"){ + sb.append(this.gaugeValue3+"/"+this.gaugeValue4+"/"); + + } + if(StringUtils.isNotBlank(this.gaugeValue6) && this.gaugeValue6 != "/"){ + sb.append(this.gaugeValue5+"/"+this.gaugeValue6+"/"); + + } + return sb.toString(); + } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java index 3db55df9..ff1795f4 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java @@ -123,4 +123,6 @@ public class InspectionTaskListVO extends InspectionTask { private String ppsName; + private Integer yieldType; + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java new file mode 100644 index 00000000..8cfb68a5 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java @@ -0,0 +1,58 @@ +package org.springblade.desk.produce.controller; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springblade.common.utils.CommonUtil; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO; +import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO; +import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO; +import org.springblade.desk.produce.pojo.entity.*; +import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO; +import org.springblade.desk.produce.pojo.vo.DsRbFilePreserveVO; +import org.springblade.desk.produce.pojo.vo.TaskCompleteVO; +import org.springblade.desk.produce.service.IDisTaskingService; +import org.springblade.desk.produce.service.IDsRbFilePreserveService; +import org.springblade.desk.produce.service.IPdaSaveService; +import org.springblade.desk.produce.service.IWorkPlanLogService; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.entity.User; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * + * + * @author litao + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/DisTaskingController") +public class DsRbFilePreserveController extends BladeController { + + private final IDsRbFilePreserveService dsRbFilePreserveService; + + + + @GetMapping("/page") + @ApiOperationSupport(order = 1) + @Operation(summary = "调度任务分派", description = "传入taskCompleteDTO") + public R> disTaskHandle(DsRbFilePreserve taskCompleteDTO, Query query) { + return R.data(null); + } + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java new file mode 100644 index 00000000..9be78d25 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java @@ -0,0 +1,19 @@ +package org.springblade.desk.produce.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve; +import org.springblade.desk.produce.pojo.entity.MacToolUse; +import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; + +import java.util.List; + +/** + * + * @author BladeX + */ +public interface DsRbFilePreserveMapper extends BaseMapper { + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml new file mode 100644 index 00000000..8e3fe10d --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java index a1b2c26b..e0e6e632 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java @@ -2,14 +2,16 @@ package org.springblade.desk.produce.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartSub; import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO; -import org.springblade.desk.produce.pojo.entity.MacToolUse; -import org.springblade.desk.produce.pojo.entity.MakeRec; -import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; -import org.springblade.desk.produce.pojo.entity.WorkPlan; +import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO; import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO; +import org.springblade.desk.quality.pojo.entity.ReviewSheet; +import org.springblade.desk.quality.pojo.entity.WorkPlanItem; +import org.springblade.desk.quality.pojo.entity.WorkPlanItemDetail; import org.springblade.scheduling.pojo.entity.WorkPlanEntity; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.desk.produce.pojo.vo.WorkPlanVO; @@ -44,15 +46,38 @@ public interface WorkPlanMapper extends BaseMapper { MesQcProduceRunEntity getBoxInfo(Long wpId); List listSlotInfoGr (Long wpId, Boolean aTrue); - List listSlotInfo (Long wpId,Boolean aTrue); + List listSlotInfoList (Long wpId,Boolean aTrue); List listMacToolUse(Long wpId,Boolean aTrue); MakeRec getByWpId(Long wpId); - Object[] getConcatMrByWpId(Long wpId); +// Object[] getConcatMrByWpId(Long wpId); + WorkPlan getConcatMrByWpId(Long wpId); List listPrByWpIdIndex(Long wpId, Integer index,boolean aTrue); List getDataByWpIdAndIndexList(Long wpId, String indexNum); List listPrByWpIdIndexAndMtnCode(Long wpId, Integer indexNum,String mtnCode); - List getBoxInfoByWpIdMtnCode(Long wpId); + List getBoxInfoByWpIdMtnCodeList(Long wpId); List getByRfpsId(Long rfpsId); MacToolUse getHangNumIsNull(Long wpId); + MacToolUse getDataByWpIdAndIndex(Long wpId, String numberIndex); + List getDataByWcIdAndPpsId(Long wcId, Long ppsId,boolean aTrue); + List getByRfpId(Long rfpId); +// MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long wpId); + + MesBsAdditionalMessEntity getDataByOneData(String mtnCode,Short indexNum); + + List findFatherByYoIdMes(Long yoId); + + List listByWoIdAllMes(Long woId); + + List listSjSlotInfoMes(Long wpId, Boolean aTrue); + List listByWpIdMes(Long wpId); + List findCubByYoIdMes(Long yoId); + List listByPartCodeNew(String partCode, Short indexNum); + List findByPartCodeAndMemoMes(String partCode, String memo); + DsPartSub getByPartCodeAndSubCodeMes(String partCode, String subCode); + String getCheckManByNewErpMes(String userName); + + List listByWpiIdMes(Long wpiId); + + List getQcReviewSheetListMes(String partCode,String batchNo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml index e97988a1..c9d36bb8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml @@ -97,7 +97,7 @@ - select a.PART_CODE, a.BATCH_NO, a.WORK_QTY, a.area, a.sumArea, a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type from ( select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.PO_AREA as area, @@ -122,7 +122,7 @@ select * from MES_MAKE_REC a - where a.wpId= #{wpId} + where a.wp_id= #{wpId} order by a.ID desc - + select * from MES_WORK_ORDER a left join MES_YIELD_ORDER b on a.YO_ID = b.ID where b.FATHER_YO_ID = #{yoId} + + + + + + + + + + + + + + + + + @@ -147,7 +187,7 @@ and b.work_slot != '烘箱' - order by mtn_code, b.pr_id + order by mtn_code, b.id - + select a.PART_CODE, a.BATCH_NO, a.WORK_QTY as qua, a.area, a.sumArea as totalArea,a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type + from ( + select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.PO_AREA as area, + sum(b.WORK_QTY*d.PO_AREA) over() as sumArea, + a.MTN_CODE, d.prod_ident,c.wo_code,f.material,d.yield_type from MES_MAC_TOOL_USE a + inner join MES_WORK_PLAN b on a.WP_ID = b.WP_ID + inner join MES_WORK_ORDER c on b.WO_ID = c.ID + inner join MES_YIELD_ORDER d on c.YO_ID = d.ID + inner join ds_part f on d.part_code = f.part_code + where a.MTN_CODE in( + select a.MTN_CODE from MES_MAC_TOOL_USE a + left join DE_EQUIPMENT_CARD b on a.EQUIPMENT_CARD = b.ID + where a.WP_ID = #{wpId} + + and b.CATEGORYS = '产线设备' + + + and (b.CATEGORYS not like '%烘箱%' or b.CATEGORYS is null ) + + ) and a.mtu_index = '2' + )a group by a.PART_CODE, a.BATCH_NO, a.WORK_QTY, a.area, a.sumArea, + a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.java new file mode 100644 index 00000000..34bae5bd --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.java @@ -0,0 +1,41 @@ +/** + * 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.scheduling.scheduling.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; + +/** + * 零件信息表 Mapper 接口 + * + * @author BladeX + * @since 2025-11-12 + */ +public interface PartVersionMapper extends BaseMapper { + + + +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.xml new file mode 100644 index 00000000..b8011b87 --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartService.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartService.java index 8905fe6e..2a71a106 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartService.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartService.java @@ -28,6 +28,7 @@ package org.springblade.scheduling.scheduling.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import org.springblade.scheduling.pojo.entity.PartEntity; import org.springblade.scheduling.scheduling.excel.PartExcel; import org.springblade.scheduling.scheduling.vo.PartVO; @@ -59,6 +60,6 @@ public interface IPartService extends BaseService { */ List export(Wrapper queryWrapper); - List selectChildPart(PartEntity part); + List selectChildPart(DsPartVersionEntity partVersion); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartVersionService.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartVersionService.java new file mode 100644 index 00000000..b7451cc6 --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IPartVersionService.java @@ -0,0 +1,42 @@ +/** + * 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.scheduling.scheduling.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; + +import java.util.List; + +/** + * 零件版本信息表 服务类 + * + * @author BladeX + * @since 2025-11-12 + */ +public interface IPartVersionService extends BaseService { + + +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java index 74d77890..a67d27ef 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java @@ -30,21 +30,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.fasterxml.jackson.core.type.TypeReference; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.jackson.JsonUtil; import org.springblade.scheduling.pojo.entity.EquipAbilityEntity; import org.springblade.scheduling.pojo.entity.EquipResourceEntity; import org.springblade.scheduling.scheduling.excel.EquipResourceExcel; import org.springblade.scheduling.scheduling.mapper.EquipResourceMapper; import org.springblade.scheduling.scheduling.service.IEquipAbilityService; import org.springblade.scheduling.scheduling.service.IEquipResourceService; +import org.springblade.scheduling.scheduling.vo.EquipAbilityVO; import org.springblade.scheduling.scheduling.vo.EquipResourceVO; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -92,6 +96,9 @@ public class EquipResourceServiceImpl extends BaseServiceImpl list = this.list(wrapper); if(CollectionUtils.isEmpty(list)){ generateData(today,equipAbility); @@ -129,17 +136,24 @@ public class EquipResourceServiceImpl extends BaseServiceImpl equipAbilityList = equipAbilityService.list(wrapper); if(CollectionUtils.isNotEmpty(equipAbilityList)){ if(equipAbility.getWorkCenterId() != null && equipAbility.getCraftId() != null && StringUtils.isNotBlank(equipAbility.getEquipCode())){ - List list = this.list(Wrappers.lambdaQuery() - .eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId()) + LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId()) .eq(EquipResourceEntity::getCraftId,equipAbility.getCraftId()) .eq(EquipResourceEntity::getEquipCode,equipAbility.getEquipCode()) - .eq(EquipResourceEntity::getDateTime,day)); + .eq(EquipResourceEntity::getDateTime,day); + if(equipAbility.getProcessId() != null){ + wrapper2.eq(EquipResourceEntity::getProcessId,equipAbility.getProcessId()); + } + List list = this.list(wrapper2); if(CollectionUtils.isNotEmpty(list)){ list.forEach(item -> baseMapper.deleteById(item.getId())); } @@ -151,61 +165,57 @@ public class EquipResourceServiceImpl extends BaseServiceImpl> teamIdList = baseMapper.selectTeamByWorkCenter(equipAbility.getWorkCenterId()); - //0-产线设备 1-普通设备 - if("0".equals(equipAbility.getEquipType())){ - //产线设备根据轮询间隔生成数据,根据轮询间隔判断一天要分成多少段 - int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟 - int totalMinutes = 24 * 60; // 一天总分钟数 - int totalCount = totalMinutes / interval; // 生成条数 - List resourceList = new ArrayList<>(); - for (int i = 0; i < totalCount; i++) { - LocalDateTime startTime = startOfDay.plusMinutes(i * interval); - LocalDateTime endTime = startTime.plusMinutes(interval); - EquipResourceEntity equipResource = new EquipResourceEntity(); - equipResource.setDateTime(day); - equipResource.setEquipCode(equipAbility.getEquipCode()); - equipResource.setEquipName(equipAbility.getEquipName()); - equipResource.setCraftId(equipAbility.getCraftId().toString()); - equipResource.setCraftName(equipAbility.getCraftName()); - equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter)); - equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility()); - equipResource.setRestCapacity(equipAbility.getStandardProcessAbility()); - equipResource.setStartTime(startTime); - equipResource.setEndTime(endTime); - equipResource.setEquipOrder(equipAbility.getEquipOrder()); - equipResource.setStandardTime(equipAbility.getStandardTime()); - equipResource.setIsUsed("0"); - equipResource.setEquipType(equipAbility.getEquipType()); - equipResource.setWorkCenterId(equipAbility.getWorkCenterId()); + int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟 + int totalMinutes = 24 * 60; // 一天总分钟数 + int totalCount = totalMinutes / interval; // 生成条数 + List resourceList = new ArrayList<>(); + for (int i = 0; i < totalCount; i++) { + if(equipAbility.getPartType() != 0){ + List voList = JsonUtil.readValue(equipAbility.getStandardProcessAbility(), new TypeReference>() {}); + for(EquipAbilityVO vo : voList){ + LocalDateTime startTime = startOfDay.plusMinutes(i * interval); + //0-产线设备 1-普通设备 + LocalDateTime endTime = startTime.plusMinutes("0".equals(equipAbility.getEquipType()) ? interval : equipAbility.getStandardTime().longValue()); + EquipResourceEntity equipResource = new EquipResourceEntity(); + equipResource.setDateTime(day); + equipResource.setEquipCode(equipAbility.getEquipCode()); + equipResource.setEquipName(equipAbility.getEquipName()); + equipResource.setCraftId(equipAbility.getCraftId().toString()); + equipResource.setCraftName(equipAbility.getCraftName()); + equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter)); + equipResource.setTotalCapacity(BigDecimal.valueOf(Integer.parseInt(vo.getStandardProcessAbility()))); + equipResource.setRestCapacity(BigDecimal.valueOf(Integer.parseInt(vo.getStandardProcessAbility()))); + equipResource.setStartTime(startTime); + equipResource.setEndTime(endTime); + equipResource.setEquipOrder(equipAbility.getEquipOrder()); + equipResource.setStandardTime(equipAbility.getStandardTime()); + equipResource.setIsUsed("0"); + equipResource.setEquipType(equipAbility.getEquipType()); + equipResource.setWorkCenterId(equipAbility.getWorkCenterId()); + equipResource.setProcessId(equipAbility.getProcessId()); + equipResource.setProcessName(equipAbility.getProcessName()); + equipResource.setStartNum(vo.getStartNum()); + equipResource.setEndNum(vo.getEndNum()); - Long teamId = null; - for(Map map : teamIdList){ + Long teamId = null; + for(Map map : teamIdList){ - LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); - LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); + LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); + LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); + + if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){ + teamId = Long.parseLong(map.get("teamId").toString()); + } - if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){ - teamId = Long.parseLong(map.get("teamId").toString()); } + equipResource.setTeamId(teamId); + resourceList.add(equipResource); } - equipResource.setTeamId(teamId); - resourceList.add(equipResource); - - } - if(CollectionUtils.isNotEmpty(resourceList)){ - this.saveBatch(resourceList); - } - }else{ - //普通设备每30分钟间隔生成数据 - int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); - int totalMinutes = 24 * 60; // 一天总分钟数 - int totalCount = totalMinutes / interval; // 生成条数 - List resourceList = new ArrayList<>(); - for (int i = 0; i < totalCount; i++) { + }else{ LocalDateTime startTime = startOfDay.plusMinutes(i * interval); - LocalDateTime endTime = startTime.plusMinutes(equipAbility.getStandardTime().longValue()); + LocalDateTime endTime = startTime.plusMinutes(interval); EquipResourceEntity equipResource = new EquipResourceEntity(); equipResource.setDateTime(day); equipResource.setEquipCode(equipAbility.getEquipCode()); @@ -213,8 +223,8 @@ public class EquipResourceServiceImpl extends BaseServiceImpl map : teamIdList){ - - LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){ teamId = Long.parseLong(map.get("teamId").toString()); } + } equipResource.setTeamId(teamId); resourceList.add(equipResource); - - } - if(CollectionUtils.isNotEmpty(resourceList)){ - this.saveBatch(resourceList); } + + + } + if(CollectionUtils.isNotEmpty(resourceList)){ + this.saveBatch(resourceList); } } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartServiceImpl.java index 782efe47..8ac150f7 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartServiceImpl.java @@ -25,15 +25,17 @@ */ package org.springblade.scheduling.scheduling.service.impl; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import org.springblade.scheduling.pojo.entity.PartEntity; import org.springblade.scheduling.scheduling.excel.PartExcel; import org.springblade.scheduling.scheduling.mapper.PartMapper; import org.springblade.scheduling.scheduling.service.IPartService; import org.springblade.scheduling.scheduling.vo.PartVO; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.core.mp.base.BaseServiceImpl; + import java.util.List; /** @@ -61,8 +63,8 @@ public class PartServiceImpl extends BaseServiceImpl imp } @Override - public List selectChildPart(PartEntity part) { - return baseMapper.selectChildPart(part); + public List selectChildPart(DsPartVersionEntity partVersion) { + return baseMapper.selectChildPart(partVersion); } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartsVersionServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartsVersionServiceImpl.java new file mode 100644 index 00000000..512ece10 --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PartsVersionServiceImpl.java @@ -0,0 +1,47 @@ +/** + * 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.scheduling.scheduling.service.impl; + +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; +import org.springblade.scheduling.scheduling.mapper.PartVersionMapper; +import org.springblade.scheduling.scheduling.service.IPartVersionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 相似零件表 服务实现类 + * + * @author BladeX + * @since 2025-11-21 + */ +@Service +public class PartsVersionServiceImpl extends BaseServiceImpl implements IPartVersionService { + + @Autowired + PartVersionMapper partVersionMapper; + +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java index b7547a40..fb41bdc9 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java @@ -47,7 +47,10 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; /** * 工艺能力表 服务实现类 @@ -84,7 +87,7 @@ public class PersonResourceServiceImpl extends BaseServiceImpl> teamIdList = baseMapper.selectTeamByWorkCenter(personAbility.getWorkCenterId()); List resourceList = new ArrayList<>(); - //普通设备每30分钟间隔生成数据 - /*int interval = 30; - int totalMinutes = 24 * 60; // 一天总分钟数 - int totalCount = totalMinutes / interval; // 生成条数 - - for (int i = 0; i < totalCount; i++) { - LocalDateTime startTime = startOfDay.plusMinutes(i * interval); - LocalDateTime endTime = startTime.plusMinutes(30); - PersonResourceEntity personResource = new PersonResourceEntity(); - personResource.setDateTime(day); - personResource.setCraftId(personAbility.getCraftId()); - personResource.setCraftName(personAbility.getCraftName()); - personResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter)); - personResource.setStartTime(startTime); - personResource.setEndTime(endTime); - personResource.setIsUsed("0"); - - Long teamId = null; - for(Map map : teamIdList){ - - - LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); - LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); - - if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){ - teamId = Long.parseLong(map.get("teamId").toString()); - } - } - personResource.setTeamId(teamId); - resourceList.add(personResource); - }*/ for(Map map : teamIdList){ LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java index 40792205..2e9335b6 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java @@ -28,10 +28,12 @@ package org.springblade.scheduling.scheduling.service.impl; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.fasterxml.jackson.core.type.TypeReference; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -39,16 +41,21 @@ import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.jackson.JsonUtil; import org.springblade.core.tool.utils.DateUtil; +import org.springblade.desk.dashboard.constant.DsPartConstant; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.scheduling.pojo.entity.*; +import org.springblade.scheduling.pojo.enums.WorkOrderEnum; +import org.springblade.scheduling.pojo.vo.WorkOrderVO; import org.springblade.scheduling.scheduling.dto.WorkOrderDto; import org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel; import org.springblade.scheduling.scheduling.excel.WorkOrderExcel; import org.springblade.scheduling.scheduling.mapper.WorkOrderMapper; import org.springblade.scheduling.scheduling.service.*; +import org.springblade.scheduling.scheduling.vo.PersonAbilityVO; import org.springblade.scheduling.scheduling.vo.SameTroughVO; -import org.springblade.scheduling.pojo.vo.WorkOrderVO; import org.springblade.scheduling.scheduling.vo.WorkPlanVO; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -94,6 +101,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list = yieldOrderService.list(Wrappers.lambdaQuery() - .in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode()) + .in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode(),YieldOrderEnum.STATUS_OUTSOURCING_WAITING.getCode()) .isNotNull(YieldOrderEntity::getWorkCenterId) .isNotNull(YieldOrderEntity::getReleaseDate) .isNotNull(YieldOrderEntity::getDemandDate)); @@ -164,12 +173,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpllambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate).isNotNull(YieldOrderEntity::getDemandDate)); + list = yieldOrderService.list(Wrappers.lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode(),YieldOrderEnum.STATUS_OUTSOURCING_WAITING.getCode()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate).isNotNull(YieldOrderEntity::getDemandDate)); //初始化人员能力 List personAbilityEntityList = personAbilityService.list(Wrappers.lambdaQuery().isNotNull(PersonAbilityEntity::getWorkCenterId).isNotNull(PersonAbilityEntity::getProcessId).isNotNull(PersonAbilityEntity::getCraftId)); Map personAbilityMap = new HashMap<>(); personAbilityEntityList.forEach(personAbility -> { - personAbilityMap.put(personAbility.getWorkCenterId() + "-" + personAbility.getProcessId() + "-" + personAbility.getCraftId(), personAbility); + personAbilityMap.put(personAbility.getWorkCenterId() + "-" + personAbility.getCraftId() + "-" + personAbility.getProcessId(), personAbility); }); //初始化主生产者 List mainProducerList = mainProducerService.list(Wrappers.lambdaQuery().isNotNull(MainProducerEntity::getProcessId)); @@ -400,13 +409,30 @@ public class WorkOrderServiceImpl extends BaseServiceImpl workCenterMap, Map craftAbilityMap) { List workOrderList = new ArrayList<>(); + list = mergeYieldOrderList(list); + LocalDateTime localDateTime = LocalDateTime.now(); for (YieldOrderEntity order : list) { try { + DsPartVersionEntity partVersion = partVersionService.getOne(Wrappers.lambdaQuery().eq(DsPartVersionEntity::getPartCode,order.getPartCode()).eq(DsPartVersionEntity::getPartVersion,order.getPartVersion())); + if(partVersion == null){ + order.setErrorInfo("订单:"+order.getYoCode()+"未查询到零件号:" + order.getPartCode() +"的版本号:"+order.getPartVersion()+"的对应信息"); + order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); + yieldOrderService.updateById(order); + continue; + } + PartEntity part = partService.getById(partVersion.getPartId()); //是否可以排产 Boolean isSchecuding = true; List workPlanList = new ArrayList<>(); //查询所有工序 List craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, order.getId()).ne(YieldOrderCraftEntity::getCaId, 27).orderByAsc(YieldOrderCraftEntity::getProcessNo)); + //如果是外协回来的订单 + if(order.getStatus() == YieldOrderEnum.STATUS_OUTSOURCING_WAITING.getCode()){ + WorkOrderEntity oldWorkOrder = this.getOne(Wrappers.lambdaQuery().eq(WorkOrderEntity::getYoId,order.getId())); + List oldWorkPlanList = workPlanService.list(Wrappers.lambdaQuery().eq(WorkPlanEntity::getWoId,oldWorkOrder.getId())); + List ppsIds = oldWorkPlanList.stream().map(WorkPlanEntity::getPpsId).collect(Collectors.toList()); + craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, order.getId()).ne(YieldOrderCraftEntity::getCaId, 27).notIn(YieldOrderCraftEntity::getPpsId,ppsIds).orderByAsc(YieldOrderCraftEntity::getProcessNo)); + } //过滤非外协工序 List craftList1 = craftList.stream().filter(item -> item.getIsOutsource() == false).collect(Collectors.toList()); List workCenterList = craftList1.stream().filter(item -> item.getWorkCenterId() != null).map(YieldOrderCraftEntity::getWorkCenterId).collect(Collectors.toList()); @@ -430,30 +456,19 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 0 ? prevProcessEnd : workPlanList.get(workPlanList.size() - 1).getPlanEndTime(); } - //处理外协工序,外协可能多个工序连续的,共享开始结束时间 - Map> outSourceMap = craftList.stream().filter(item -> item.getIsOutsource() == true).collect(Collectors.groupingBy(YieldOrderCraftEntity::getOcId)); - Map ppsIdMap = new HashMap<>(); - for (Map.Entry> entry : outSourceMap.entrySet()) { - String ppsIdStr = entry.getValue().stream() - .map(entity -> String.valueOf(entity.getPpsId())) // long → String - // 等价写法:.map(entity -> Long.toString(entity.getPpsId())) - .collect(Collectors.joining(",")); // 逗号分隔拼接 - ppsIdMap.put(entry.getKey(), ppsIdStr); - } + for (int i = 0; i < craftList.size(); i++) { YieldOrderCraftEntity craft = craftList.get(i); //如果是外协的话,去查询外协工序时间,若未查询到先默认3天,跳过该工序的排产 if (craft.getIsOutsource()) { - String ppsIdStr = ppsIdMap.get(craft.getOcId()); - OutsourceProcessEntity outsourceProcess = outsourceProcessService.getOne(Wrappers.lambdaQuery().eq(OutsourceProcessEntity::getProcessId, ppsIdStr)); - BigDecimal totalTime = new BigDecimal(0); + OutsourceProcessEntity outsourceProcess = outsourceProcessService.getOne(Wrappers.lambdaQuery().eq(OutsourceProcessEntity::getProcessId, craft.getPpsId())); + Double totalTime = 0.0; if (outsourceProcess != null) { - //外协多工序需要把时间平分,方便处理 - prevProcessEnd = prevProcessEnd.plusMinutes((long) ((double) outsourceProcess.getDays() / ppsIdStr.split(",").length * 24 * 60)); - totalTime = totalTime.add(BigDecimal.valueOf((long) ((double) outsourceProcess.getDays() / ppsIdStr.split(",").length * 24 * 60))); + prevProcessEnd = prevProcessEnd.plusDays(outsourceProcess.getDays()); + totalTime = totalTime + outsourceProcess.getDays() * 24 *60; } else { prevProcessEnd = prevProcessEnd.plusDays(3); - totalTime = totalTime.add(BigDecimal.valueOf(3 * 24 * 60)); + totalTime = totalTime + 3 * 24 * 60; } WorkPlanEntity workPlan = new WorkPlanEntity(); workPlan.setWoId(order.getId()); @@ -470,27 +485,42 @@ public class WorkOrderServiceImpl extends BaseServiceImpl sameFurnaceMap = new HashMap<>(); - //烧结同炉 - if (sintMap.containsKey(craft.getPpsId())) { - sameFurnaceMap = sameFurnace(order, craft, workPlanList, prevProcessEnd, glassCodeStr, sintMap); - //同炉的话就不用走下面的匹配了,直接下一工序 - if (sameFurnaceMap.get("isSameFurnace").toString() == "true") { + //同炉同槽 + if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_1.getCode()){ + //热表同槽 + Boolean isSameTrough = sameTrough(order, craft, prevProcessEnd, workPlanList); + //同槽就不需要继续匹配了 + if (isSameTrough) { continue; } + }else{ + //烧结同炉 + if (sintMap.containsKey(craft.getPpsId())) { + sameFurnaceMap = sameFurnace(order, craft, workPlanList, localDateTime, glassCodeStr, sintMap, part, processMap, prevProcessEnd); + //同炉的话就不用走下面的匹配了,直接下一工序 + if (sameFurnaceMap.get("isSameFurnace").toString() == "true") { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm"); + prevProcessEnd = LocalDateTime.parse(sameFurnaceMap.get("prevProcessEnd").toString(), formatter); + continue; + } + } } //根据作业中心查询所有设备 - List equipAbilityList = equipAbilityService.list(Wrappers.lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId())); + List equipAbilityList = new ArrayList<>(); + if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_1.getCode()){ + equipAbilityList = equipAbilityService.list(Wrappers.lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId())); + }else{ + equipAbilityList = equipAbilityService.list(Wrappers.lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId()).eq(EquipAbilityEntity::getProcessId,craft.getPpsId())); + } if (CollectionUtils.isEmpty(equipAbilityList)) { order.setErrorInfo("作业中心:" + workCenterMap.get(craft.getWorkCenterId()) + ",工艺:" + craftAbilityMap.get(craft.getCaId()) + ",工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备能力"); order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); @@ -505,12 +535,39 @@ public class WorkOrderServiceImpl extends BaseServiceImpl> entry : equipAbilityMap.entrySet()) { //根据时间点获取所有设备资源 - List equipResourceList = equipResourceService.list(Wrappers.lambdaQuery() - .eq(EquipResourceEntity::getCraftId, craft.getCaId()) - .eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()) - .ge(EquipResourceEntity::getStartTime, dateTime) - .eq(EquipResourceEntity::getIsUsed, 0) - .in(EquipResourceEntity::getEquipOrder, entry.getKey())); + List equipResourceList = new ArrayList<>(); + if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_1.getCode()){ + equipResourceList = equipResourceService.list(Wrappers.lambdaQuery() + .eq(EquipResourceEntity::getCraftId, craft.getCaId()) + .eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()) + .ge(EquipResourceEntity::getStartTime, dateTime) + .eq(EquipResourceEntity::getIsUsed, 0) + .in(EquipResourceEntity::getEquipOrder, entry.getKey())); + }else{ + if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_3.getCode()){ + equipResourceList = equipResourceService.list(Wrappers.lambdaQuery() + .eq(EquipResourceEntity::getCraftId, craft.getCaId()) + .eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()) + .eq(EquipResourceEntity::getProcessId,craft.getPpsId()) + .ge(EquipResourceEntity::getStartTime, dateTime) + .eq(EquipResourceEntity::getIsUsed, 0) + .in(EquipResourceEntity::getEquipOrder, entry.getKey()) + .lt(EquipResourceEntity::getStartNum,part.getBlbDiameter()) + .ge(EquipResourceEntity::getEndNum,part.getBlbDiameter())); + }else{ + equipResourceList = equipResourceService.list(Wrappers.lambdaQuery() + .eq(EquipResourceEntity::getCraftId, craft.getCaId()) + .eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()) + .eq(EquipResourceEntity::getProcessId,craft.getPpsId()) + .ge(EquipResourceEntity::getStartTime, dateTime) + .eq(EquipResourceEntity::getIsUsed, 0) + .in(EquipResourceEntity::getEquipOrder, entry.getKey()) + .lt(EquipResourceEntity::getStartNum,part.getExternalDiameter()) + .ge(EquipResourceEntity::getEndNum,part.getExternalDiameter())); + } + + } + if (CollectionUtils.isEmpty(equipResourceList)) { order.setStatus(YieldOrderEnum.STATUS_APS.getCode()); order.setErrorInfo("工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备资源"); @@ -537,7 +594,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl capacityList = capacitySplit(equipResourceMap, sumCapacity); for (BigDecimal capacity : capacityList) { @@ -545,6 +602,19 @@ public class WorkOrderServiceImpl extends BaseServiceImpl resourceList = entry1.getValue(); for (EquipResourceEntity equipResource : resourceList) { + //烧结订单需判断零件类型 + if(order.getYieldType() != YieldOrderEnum.YIELD_TYPE_1.getCode()){ + //玻璃饼订单查询玻璃饼直径 + if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_3.getCode()){ + if(part.getBlbDiameter() equipResource.getEndNum()){ + continue; + } + }else{//其他类型订单查询壳体最大外径 + if(part.getExternalDiameter() < equipResource.getStartNum() || part.getExternalDiameter() > equipResource.getEndNum()){ + continue; + } + } + } //如果产能最大的设备都不满足,后面的设备就不需要判断了 if (equipResource.getRestCapacity().compareTo(capacity) < 0) { break; @@ -553,10 +623,22 @@ public class WorkOrderServiceImpl extends BaseServiceImpl equipWrapper = new LambdaUpdateWrapper<>(); + LambdaQueryWrapper equipWrapper = new LambdaQueryWrapper<>(); equipWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode()); equipWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime()); equipWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod()); - equipWrapper.eq(EquipResourceEntity::getStartTime, equipResource.getStartTime()); - equipWrapper.eq(EquipResourceEntity::getEndTime, equipResource.getEndTime()); - equipResourceService.update(equipResource, equipWrapper); + equipWrapper.ne(BaseEntity::getId,equipResource.getId()); + List otherResourceList = equipResourceService.list(equipWrapper); + BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 2, RoundingMode.HALF_UP); + for(EquipResourceEntity otherResource : otherResourceList){ + otherResource.setRestCapacity(otherResource.getTotalCapacity().multiply(rate).setScale(0, RoundingMode.FLOOR)); + otherResource.setIsUsed("1"); + if (order.getYieldType() != YieldOrderEnum.YIELD_TYPE_1.getCode() && sameFurnaceMap.get("glassCode") != null) { + otherResource.setGlassCode(sameFurnaceMap.get("glassCode").toString()); + } + equipResourceService.updateById(otherResource); + } //该设备后续所有开始时间小于当前结束时间的时间段都变为不可用 LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper(); updateWrapper.lt(EquipResourceEntity::getStartTime, equipResource.getEndTime()); @@ -619,13 +709,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl personResourceList = personResourceService.list(Wrappers.lambdaQuery() @@ -664,7 +774,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl { - workPlanEntity.setWoId(workOrder.getId()); - workPlanService.save(workPlanEntity); - }); + this.save(workOrder); + }else if(order.getStatus() == YieldOrderEnum.STATUS_OUTSOURCING_WAITING.getCode()){ + workOrder = this.getOne(Wrappers.lambdaQuery().eq(WorkOrderEntity::getYoId,order.getId())); + workOrder.setPlanEndDate(workPlanList.get(workPlanList.size() - 1).getPlanEndTime() == null ? null : workPlanList.get(workPlanList.size() - 1).getPlanEndTime().truncatedTo(ChronoUnit.DAYS).toString().substring(0, 10)); + workOrder.setPlanEndTime(workPlanList.get(workPlanList.size() - 1).getPlanEndTime() == null ? null : workPlanList.get(workPlanList.size() - 1).getPlanEndTime()); + this.updateById(workOrder); + } + for(WorkPlanEntity workPlan : workPlanList){ + workPlan.setWoId(workOrder.getId()); + workPlanService.save(workPlan); + } + for (int i = 0; i < workPlanList.size(); i++) { WorkPlanEntity workPlan = workPlanList.get(i); if (i != 0) { @@ -849,12 +967,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl capacitySplit(Map> map, BigDecimal sumCapacity) { List equipResourceList1 = map.values().stream().flatMap(List::stream).collect(Collectors.toList()); BigDecimal maxRestCapacity = equipResourceList1.stream().filter(entity -> entity.getRestCapacity().compareTo(BigDecimal.ZERO) >= 0).map(EquipResourceEntity::getRestCapacity).max(BigDecimal::compareTo).orElseThrow(() -> new IllegalArgumentException("列表中无有效的 restCapacity 数值")); - ; List capacityList = new ArrayList<>(); if (sumCapacity.compareTo(maxRestCapacity) > 0) { // 计算商(fullCount)和余数(remainder):divideAndRemainder返回[商, 余数] @@ -994,7 +1111,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode()); updateWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime()); @@ -1094,7 +1211,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpllambdaQuery().eq(EquipAbilityEntity::getCraftId, 27)); - BigDecimal standardProcessAbility = equipAbility.getStandardProcessAbility(); + BigDecimal standardProcessAbility = BigDecimal.valueOf(Integer.parseInt(equipAbility.getStandardProcessAbility())); //获取所有空闲的公共工序资源 List equipResourceList = equipResourceService.selectCommonCraftList(); for (YieldOrderEntity order : commonCraftOrderList) { @@ -1117,7 +1234,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode()); updateWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime()); @@ -1311,7 +1428,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl sameFurnace(YieldOrderEntity order, YieldOrderCraftEntity craft, List workPlanList, LocalDateTime prevProcessEnd, String glassCodeStr, Map> sintMap) { + public Map sameFurnace(YieldOrderEntity order, + YieldOrderCraftEntity craft, + List workPlanList, + LocalDateTime localDateTime, + String glassCodeStr, + Map> sintMap, + PartEntity part, + Map processMap, + LocalDateTime prevProcessEnd) { Map map = new HashMap<>(); Boolean isSameFurnace = false; - if (order.getYieldType() == YieldOrderEnum.YIELD_TYPE_2.getCode() || order.getYieldType() == YieldOrderEnum.YIELD_TYPE_3.getCode()) {//烧结订单 + if (order.getYieldType() != YieldOrderEnum.YIELD_TYPE_1.getCode()) {//烧结订单 //获取当前工序的所有温度曲线 List sintList = sintMap.get(craft.getPpsId()); List> sintMaterialList = new ArrayList<>(); sintList.stream().map(SintTempCurveEntity::getGlassCode).collect(Collectors.toList()).forEach(item -> sintMaterialList.add(Arrays.asList(item.split(",")))); //根据零件号获取子件信息 - PartEntity part = new PartEntity(); - part.setPartCode(order.getPartCode()); - List childPartList = partService.selectChildPart(part); + List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); + List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); + List childPartList = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds)); if (CollectionUtils.isNotEmpty(childPartList)) { //获取子件的所有玻璃粉牌号 List materialList = childPartList.stream().filter(item -> StringUtils.isNotEmpty(item.getMaterial())).map(PartEntity::getMaterial).collect(Collectors.toList()); @@ -1380,14 +1505,31 @@ public class WorkOrderServiceImpl extends BaseServiceImpl equipResourceList = equipResourceService.list(Wrappers.lambdaQuery() - .eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()) - .eq(EquipResourceEntity::getCraftId, craft.getCaId()) - .ge(EquipResourceEntity::getStartTime, prevProcessEnd) - .eq(EquipResourceEntity::getGlassCode, glassCodeStr)); + //玻璃饼订单查玻璃饼直接,其他订单查 + List equipResourceList = new ArrayList<>(); + if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_3.getCode()){ + equipResourceList = equipResourceService.list(Wrappers.lambdaQuery() + .eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()) + .eq(EquipResourceEntity::getCraftId, craft.getCaId()) + .eq(EquipResourceEntity::getProcessId,craft.getPpsId()) + .ge(EquipResourceEntity::getStartTime, localDateTime) + .eq(EquipResourceEntity::getGlassCode, glassCodeStr) + .lt(EquipResourceEntity::getStartNum,part.getBlbDiameter()) + .ge(EquipResourceEntity::getEndNum,part.getBlbDiameter())); + }else{ + equipResourceList = equipResourceService.list(Wrappers.lambdaQuery() + .eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()) + .eq(EquipResourceEntity::getCraftId, craft.getCaId()) + .eq(EquipResourceEntity::getProcessId,craft.getPpsId()) + .ge(EquipResourceEntity::getStartTime, localDateTime) + .eq(EquipResourceEntity::getGlassCode, glassCodeStr) + .lt(EquipResourceEntity::getStartNum,part.getExternalDiameter()) + .ge(EquipResourceEntity::getEndNum,part.getExternalDiameter())); + } + if (CollectionUtils.isNotEmpty(equipResourceList)) { //计算生产所需产能,需将m2换算成dm2 - BigDecimal sumCapacity = order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty())); + BigDecimal sumCapacity = BigDecimal.valueOf(order.getYpQty()); for (EquipResourceEntity equipResource : equipResourceList) { if (equipResource.getRestCapacity().compareTo(sumCapacity) > 0) { @@ -1395,10 +1537,19 @@ public class WorkOrderServiceImpl extends BaseServiceImpl equipWrapper = new LambdaQueryWrapper<>(); + equipWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode()); + equipWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime()); + equipWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod()); + equipWrapper.ne(BaseEntity::getId,equipResource.getId()); + List otherResourceList = equipResourceService.list(equipWrapper); + BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 2, RoundingMode.HALF_UP); + for(EquipResourceEntity otherResource : otherResourceList){ + otherResource.setRestCapacity(otherResource.getTotalCapacity().multiply(rate).setScale(0, RoundingMode.FLOOR)); + equipResourceService.updateById(otherResource); + } isSameFurnace = true; + prevProcessEnd = workPlan.getPlanEndTime(); } break; } @@ -1428,6 +1592,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl personAbilityList = personAbilityService.list(Wrappers.lambdaQuery() + .eq(PersonAbilityEntity::getWorkCenterId,craft.getWorkCenterId()) + .eq(PersonAbilityEntity::getCraftId,craft.getCaId()) + .eq(PersonAbilityEntity::getProcessId,craft.getPpsId())); + if(CollectionUtils.isNotEmpty(personAbilityList)){ + int partType = personAbilityList.get(0).getPartType(); + if(partType == WorkOrderEnum.STATUS_PART_TYPE_1.getCode()){ + for(PersonAbilityEntity personAbility : personAbilityList){ + List voList = JsonUtil.readValue(personAbility.getStandardTime(), new TypeReference>() {}); + for(PersonAbilityVO vo : voList){ + if(part.getExternalDiameter() > vo.getStartNum() && part.getExternalDiameter() <= vo.getEndNum()){ + personTime = Double.parseDouble(vo.getStandardTime()) * order.getYpQty() + personAbility.getPrepareTime().doubleValue(); + break; + } + } + + } + + }else if(partType == WorkOrderEnum.STATUS_PART_TYPE_2.getCode()){ + + for(PersonAbilityEntity personAbility : personAbilityList){ + List voList = JsonUtil.readValue(personAbility.getStandardTime(), new TypeReference>() {}); + for(PersonAbilityVO vo : voList){ + if(part.getBlbDiameter() >vo.getStartNum() && part.getBlbDiameter() <= vo.getEndNum()){ + personTime = Double.parseDouble(vo.getStandardTime()) * order.getYpQty() + personAbility.getPrepareTime().doubleValue(); + break; + } + } + + } + + }else if(partType == WorkOrderEnum.STATUS_PART_TYPE_3.getCode()){ + //芯数为子件插针数量 + List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); + if(CollectionUtils.isNotEmpty(partRelationList)){ + Double quota = 0.0; + for(PartRelationEntity partRelation : partRelationList){ + PartEntity childPart = partService.getById(partRelation.getChildPartId()); + if(DsPartConstant.SIN_TER_TYPE_CZ.equals(childPart.getSinTerType())){ + //双面印字芯数需乘以2 + quota = "3".equals(childPart.getIsPrint()) ? childPart.getQuota()*2 : childPart.getQuota(); + break; + } + } + for(PersonAbilityEntity personAbility : personAbilityList){ + List voList = JsonUtil.readValue(personAbility.getStandardTime(), new TypeReference>() {}); + for(PersonAbilityVO vo : voList){ + if(quota > vo.getStartNum() && quota <= vo.getEndNum()){ + personTime = Double.parseDouble(vo.getStandardTime()) * order.getYpQty() + personAbility.getPrepareTime().doubleValue(); + break; + } + } + + } + } + + }else{ + PersonAbilityEntity personAbility = personAbilityService.getOne(Wrappers.lambdaQuery() + .eq(PersonAbilityEntity::getWorkCenterId,craft.getWorkCenterId()) + .eq(PersonAbilityEntity::getCraftId,craft.getCaId()) + .eq(PersonAbilityEntity::getProcessId,craft.getPpsId())); + personTime = Double.parseDouble(personAbility.getStandardTime()) * order.getYpQty() + personAbility.getPrepareTime().doubleValue(); + } + } + return Math.ceil(personTime); + } + + + //玻璃封接组装 + public Double calPersonHoursByBlfjzz(YieldOrderEntity order,PartEntity part){ + Double result = 0.0; + if (part != null && part.getId() != null) { + List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); + List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); + List childPartList = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds)); + List partCz = childPartList.stream().filter(item -> DsPartConstant.SIN_TER_TYPE_CZ.equals(item.getSinTerType())).collect(Collectors.toList()); + List partBlb = childPartList.stream().filter(item -> DsPartConstant.SIN_TER_TYPE_BLB.equals(item.getSinTerType())).collect(Collectors.toList()); + boolean hb = false; + for (PartEntity part1 : partCz) { + hb = part1.getPartName().contains("焊杯"); + } + + double sumOfQuota = partCz.stream() + .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + .sum(); + int x = partCz.size(); + int y = partBlb.size(); + if (sumOfQuota <= 5) { + result = (5.5 * sumOfQuota + 20) / 60 + 0.8; + } + if (sumOfQuota <= 20 && sumOfQuota > 5) { + result = (5.8 * sumOfQuota + 20) / 60 + 0.8; + if (y > 2) { + result = 1.5 * result; + } + if (hb) { + result = result + 0.5 * sumOfQuota / 60 + 0.2; + } + if (x > 3) { + result = 1.2 * result + 3; + } + } + if (sumOfQuota <= 30 && sumOfQuota > 20) { + result = (6 * sumOfQuota + 20) / 60 + 0.8; + if (y > 2) { + result = 1.6 * result; + } + if (hb) { + result = result + (1 * sumOfQuota) / 60 + 0.2; + } + if (x > 3) { + result = 1.5 * result + 5; + } + } + if (sumOfQuota <= 50 && sumOfQuota > 30) { + result = (6.2 * sumOfQuota + 25) / 60 + 1.3; + if (y > 2) { + result = 1.8 * result; + } + if (hb) { + result = result + (2 * sumOfQuota) / 60 + 0.3; + } + if (x > 3) { + result = 1.8 * result + 6; + } + } + if (sumOfQuota <= 80 && sumOfQuota > 50) { + result = (6.4 * sumOfQuota + 25) / 60 + 1.5; + if (y > 2) { + result = 2 * result; + } + if (hb) { + result = result + (3 * sumOfQuota) / 60 + 0.5; + } + if (x > 3) { + result = 2.2 * result + 9; + } + } + if (sumOfQuota <= 100 && sumOfQuota > 80) { + result = (6.5 * sumOfQuota + 25) / 60 + 1.8; + if (y > 2) { + result = 2 * result; + } + if (hb) { + result = result + (3.5 * sumOfQuota) / 60 + 0.7; + } + if (x > 3) { + result = 2.5 * result + 12; + } + } + if (sumOfQuota > 100) { + result = (6.6 * sumOfQuota + 60) / 60 + 2.1; + if (y > 2) { + result = 2 * result; + } + if (hb) { + result = result + (4 * sumOfQuota) / 60 + 1; + } + if (x > 3) { + result = 2.5 * result + 15; + } + } + + } + return Math.ceil(result * order.getYpQty()); + } + + //箱式排腊玻化工序 + public Double calPersonHoursByXsplbh(YieldOrderEntity order,PartEntity part){ + Double result = 0.0; + if (part != null && part.getId() != null && part.getBlbDiameter() != null) { + Double n = part.getBlbDiameter(); + double y = 0.0; + if (n <= 10) { + y = 1.0; + } + if (n <= 20 && n > 10) { + y = 2.0; + } + if (n <= 30 && n > 20) { + y = 3.0; + } + if (n <= 40 && n > 30) { + y = 4.0; + } + if (n <= 50 && n > 40) { + y = 5.0; + } + if (n <= 60 && n > 50) { + y = 6.0; + } + result = 0.6 + 0.6 * Math.pow(1.2, y); + } + return Math.ceil(result * order.getYpQty() + 19); + } + //玻璃封接卸模 + public Double calPersonHoursByBlfjxm(YieldOrderEntity order,PartEntity part){ + Double result = 0.0; + if (part != null && part.getId() != null) { + List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); + List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); + List childPartList = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds)); + if (childPartList != null && childPartList.size() > 0) { + double n = 0; + boolean pzm = false; + for (PartEntity childPart : childPartList) { + if (childPart.getPartCode().contains("21E8-716")) { + n = n + childPart.getQuota(); + } + pzm = childPart.getSinTerType().equals(DsPartConstant.SIN_TER_TYPE_KT) && childPart.getConfigCode().equals("M4"); + } + if (n <= 2) { + List partCz = childPartList.stream().filter(item -> DsPartConstant.SIN_TER_TYPE_CZ.equals(item.getSinTerType())).collect(Collectors.toList()); + if (partCz != null && partCz.size() > 0) { + double sumOfQuota = partCz.stream() + .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + .sum(); + double y = 0; + if (sumOfQuota <= 5) { + y = 0; + } + if (sumOfQuota > 5 && sumOfQuota <= 20) { + y = 1.0; + } + if (sumOfQuota > 20 && sumOfQuota <= 30) { + y = 2.0; + } + if (sumOfQuota > 30 && sumOfQuota <= 50) { + y = 3.0; + } + if (sumOfQuota > 50 && sumOfQuota <= 80) { + y = 4.0; + } + if (sumOfQuota > 80) { + y = 5.0; + } + result = 2 + Math.pow(1.2, y); + } + } + if (n > 2) { + List partCz = childPartList.stream().filter(item -> DsPartConstant.SIN_TER_TYPE_CZ.equals(item.getSinTerType())).collect(Collectors.toList()); + if (partCz != null && partCz.size() > 0) { + double sumOfQuota = partCz.stream() + .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + .sum(); + double y = 0; + if (sumOfQuota <= 5) { + y = 0; + } + if (sumOfQuota > 5 && sumOfQuota <= 20) { + y = 1.0; + } + if (sumOfQuota > 20 && sumOfQuota <= 30) { + y = 2.0; + } + if (sumOfQuota > 30 && sumOfQuota <= 50) { + y = 3.0; + } + if (sumOfQuota > 50 && sumOfQuota <= 80) { + y = 4.0; + } + if (sumOfQuota > 80 && sumOfQuota <= 100) { + y = 5.0; + } + if (sumOfQuota > 100) { + y = 6.0; + } + if (pzm) { + result = 1.5 * (5.3 + Math.pow(2.2, y)); + } else { + result = 5.3 + Math.pow(2.2, y); + } + } + } + } + } + return Math.ceil(result * order.getYpQty() + 3); + } + + //玻璃封接灌胶 + public Double calPersonHoursByBlfjgj(YieldOrderEntity order,PartEntity part){ + Double result = 0.0; + if (part != null && part.getId() != null&&part.getExternalDiameter() != null) { + Double n = part.getExternalDiameter(); + if (part.getKeyInfo().contains("聚矽硅烷")) { + if(n<=20){ + result=2.0; + } + if(n<=40&&n>20){ + result=2.5; + } + if(n<=60&&n>40){ + result=3.0; + } + if(n<=80&&n>60){ + result=4.0; + } + if(n>80){ + result=5.0; + } + } + if (part.getKeyInfo().contains("绝缘清漆")||part.getKeyInfo().contains("陶瓷保护剂")) { + if(n<=20){ + result=1.0; + } + if(n<=40&&n>20){ + result=1.3; + } + if(n<=60&&n>40){ + result=1.5; + } + if(n<=80&&n>60){ + result=2.0; + } + if(n>80){ + result=2.3; + } + } + } + return Math.ceil(result * order.getYpQty() + 4); + } + + //真空炉灌胶 + public Double calPersonHoursByZklgj(YieldOrderEntity order,PartEntity part){ + Double result = 0.0; + if (part != null && part.getId() != null && part.getExternalDiameter() != null) { + List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); + List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); + List partCz = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds).eq(PartEntity::getSinTerType,DsPartConstant.SIN_TER_TYPE_CZ)); + boolean hb = false; + for (PartEntity childPart : partCz) { + hb = childPart.getPartName().contains("双头"); + } + Double n = part.getExternalDiameter(); + double sumOfQuota = partCz.stream() + .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + .sum(); + if (!hb) { + if (n <= 15) { + result = 6.6 + 1.5 * sumOfQuota; + } + if (n <= 30 && n > 15) { + result = 8.6 + 1.5 * sumOfQuota; + } + if (n <= 50 && n > 30) { + result = 11.6 + 1.5 * sumOfQuota; + } + if (n <= 80 && n > 50) { + result = 13.6 + 1.5 * sumOfQuota; + } + if (n > 80) { + result = 15.6 + 1.5 * sumOfQuota; + } + result = result * order.getYpQty() + 7; + } else { + if (n <= 15) { + result = 6.6 + 3.5 * sumOfQuota; + } + if (n <= 30 && n > 15) { + result = 8.6 + 3.5 * sumOfQuota; + } + if (n <= 50 && n > 30) { + result = 11.6 + 3.5 * sumOfQuota; + } + if (n <= 80 && n > 50) { + result = 13.6 + 3.5 * sumOfQuota; + } + if (n > 80) { + result = 15.6 + 3.5 * sumOfQuota; + } + result = result * order.getYpQty() + 10; + } + } + return Math.ceil(result); + } + //单侧折针、双侧折针 + public Double calPersonHoursByZz(YieldOrderEntity order,PartEntity part,String processName){ + Double result = 0.0; + if (part != null && part.getId() != null) { + List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); + List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); + List partCz = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds).eq(PartEntity::getSinTerType,DsPartConstant.SIN_TER_TYPE_CZ)); + if (partCz != null && partCz.size() > 0) { + double n = 0; + for (PartEntity childPart : partCz) { + if (childPart.getPartCode().contains("21ET8")) { + n = n + childPart.getQuota(); + } + } + if (processName.equals("单侧折针")) { + result = (130 + 20 * n) / 60; + } else { + result = (130 + 35 * 2 * n) / 60; + } + } + } + return Math.ceil(result * order.getYpQty() + 2); + } + + public static List mergeYieldOrderList(List originalList) { + // 空值校验 + if (originalList == null || originalList.isEmpty()) { + return new ArrayList<>(); + } + + // 用于临时存储合并后的对象,key为partCode+prodIdent + Map mergeMap = new HashMap<>(); + + for (YieldOrderEntity entity : originalList) { + // 空对象跳过 + if (entity == null) { + continue; + } + + // 生成唯一key(partCode和prodIdent组合) + String key = entity.getPartCode() + "_" + entity.getProductIdent(); + + if (mergeMap.containsKey(key)) { + // key已存在,累加ypQty + YieldOrderEntity existEntity = mergeMap.get(key); + Integer newQty = existEntity.getYpQty() + entity.getYpQty(); + existEntity.setYpQty(newQty); + } else { + // key不存在,直接放入Map + mergeMap.put(key, entity); + } + } + + // 将Map的值转换为List返回 + return new ArrayList<>(mergeMap.values()); + } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/EquipAbilityVO.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/EquipAbilityVO.java index 0f86560c..8d18bde9 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/EquipAbilityVO.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/EquipAbilityVO.java @@ -43,4 +43,8 @@ public class EquipAbilityVO extends EquipAbilityEntity { @Serial private static final long serialVersionUID = 1L; + private Integer startNum; + + private Integer endNum; + } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/PersonAbilityVO.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/PersonAbilityVO.java index 2887f127..d298c560 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/PersonAbilityVO.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/PersonAbilityVO.java @@ -43,4 +43,8 @@ public class PersonAbilityVO extends PersonAbilityEntity { @Serial private static final long serialVersionUID = 1L; + private Integer startNum; + + private Integer endNum; + } From 81535de8c8fc0651060c3feb27d8cee8bc77f186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Wed, 18 Mar 2026 17:16:12 +0800 Subject: [PATCH 23/38] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/pojo/vo/UnBingVo.java | 4 ++ .../service/impl/DsTaskingServiceImpl.java | 2 +- .../order/service/IYieldOrderService.java | 3 +- .../service/impl/YieldOrderServiceImpl.java | 4 +- .../desk/produce/mapper/WorkOrderMapper.java | 2 +- .../desk/produce/mapper/WorkOrderMapper.xml | 7 ++- .../service/impl/MacToolUseServiceImpl.java | 25 ++++++--- .../service/impl/PdaSaveServiceImpl.java | 51 +++++++++---------- 8 files changed, 59 insertions(+), 39 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java index 804836ae..74e176df 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java @@ -1,5 +1,6 @@ package org.springblade.desk.produce.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -7,8 +8,11 @@ import java.util.List; @Data public class UnBingVo { + @Schema(description = "挂具编号") private String rsCode; + @Schema(description = "飞靶编号") private String fsCode; + @Schema(description = "设备编号") private String deviceCode; } 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 d9c583da..5aa5ac63 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 @@ -975,7 +975,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl { /** * 根据 零件号 和 批次号查询 + * * @param partCode * @param batchNo * @return */ - YieldOrder selectByPartCOdeAndBatchNo(String partCode, String batchNo); + YieldOrder selectByPartCOdeAndBatchNo(String partCode, String batchNo, String reworkOrder); /** *

方法名: getNewCardNo

diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index d6890d39..a990f6aa 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -716,8 +716,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl { List queryByReadStatusPage(IPage page, QueryByReadStatusDTO query); - YieldOrder selectByPartCOdeAndBatchNo(@Param("partCode") String partCode,@Param("batchNo") String batchNo); + YieldOrder selectByPartCOdeAndBatchNo(@Param("partCode") String partCode, @Param("batchNo") String batchNo, @Param("reworkOrder") String reworkOrder); WorkOrderEntity selectByYoId(@Param("yoId") Long yoId); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml index 54914217..ea47b6d7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml @@ -185,7 +185,12 @@ ORDER BY a.CREATE_TIME DESC + + 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 23edd3eb..62f21014 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 @@ -83,4 +83,8 @@ public interface DsCraftMapper extends BaseMapper { DsCraftEntity selectDsCraftByPartCodeAndVersion(@Param("partCode")Long partCode,@Param("partVersion")String partVersion); List selectOldMesCraftByOldMesPartId(@Param("oldMesPartId") Long oldMesPartId); + + List selectDsCraftByPartIdAndRoamNo(@Param("partId") Long partId,@Param("roamNo") String roamNo); + + DsCraftEntity selectDscraftByReworkOrder(@Param("changeNo") String changeNo); } 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 index 75931eaf..eb64af32 100644 --- 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 @@ -60,7 +60,12 @@ public interface PrReworkProcessMapper extends BaseMapper */ List exportPrReworkProcess(@Param("ew") Wrapper queryWrapper); - List selectPrReworkProcess(@Param("reworkOrder")String reworkOrder, - @Param("partCode")String partCode, - @Param("batchNo")String batchNo); + List selectPrReworkProcess(@Param("reworkOrder") String reworkOrder, + @Param("partCode") String partCode, + @Param("batchNo") String batchNo); + + List selectPrReworkProcessReworkNo(@Param("reworkOrder") String reworkOrder, + @Param("partCode") String partCode, + @Param("batchNo") String batchNo, + @Param("reworkNo") String reworkNo); } 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 index 215614cf..7739d0fc 100644 --- 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 @@ -52,5 +52,13 @@ and PART_CODE = #{partCode} and BATCH_NO = #{batchNo} + 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 acc10646..3bb3705c 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 @@ -191,4 +191,19 @@ public interface IDsCraftService extends BaseService { * @return */ List selectOldMesCraftByOldMesPartId(Long oldMesPartId); + + /** + * 根据零件ID和B号查询工艺 + * @param partId + * @param roamNo + * @return + */ + List selectDsCraftByPartIdAndRoamNo(Long partId, String roamNo); + + /** + * 获取返工工艺 + * @param changeNo + * @return + */ + DsCraftEntity getReworkCraft(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 01a5b1ab..6374de1c 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 @@ -29,9 +29,7 @@ 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.DsPartExcel; -import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; -import org.springblade.desk.dashboard.pojo.entity.DsPartSub; -import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity; +import org.springblade.desk.dashboard.pojo.entity.*; import org.springblade.desk.dashboard.pojo.vo.*; import java.util.List; @@ -251,5 +249,23 @@ public interface IDsPartService extends BaseService { * @param partVersion 版本号 * @return */ - boolean selectPartCraft(String partCode,String roamNo,String rank,String partVersion); + PartCraftVO selectPartCraft(String partCode, String roamNo, String rank, String partVersion); + + + /** + * 根据 零件号 返工单号 查询零件工艺信息 + * @param partCode 零件号 + * @param reworkOrder 返工单号 + * @param batchNo 批次号 + * @param reworkNo 路线编号 + * @return + */ + List selectReworkPartCraft(String partCode, String reworkOrder,String batchNo,String reworkNo); + + /** + * 获取零件最新版本号 + * @param partCode + * @return + */ + DsPartVersionEntity getNewPartVersion(String partCode); } 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 index ceda52ed..2e8e2df1 100644 --- 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 @@ -71,4 +71,14 @@ public interface IPrReworkProcessService extends BaseService selectPrReworkProcess(String reworkOrder, String partCode, String batchNo); JSONArray treeProcess(ReworkProcessDTO prReworkProcess); + + /** + * 获取返工工序 + * @param reworkOrder + * @param partCode + * @param batchNo + * @param reworkNo + * @return + */ + List selectPrReworkProcess(String reworkOrder, String partCode, String batchNo,String reworkNo); } 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 1ece1de8..e1757aa2 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 @@ -357,4 +357,14 @@ public class DsCraftServiceImpl extends BaseServiceImpl selectDsCraftByPartIdAndRoamNo(Long partId, String roamNo) { + return craftMapper.selectDsCraftByPartIdAndRoamNo(partId,roamNo); + } + + @Override + public DsCraftEntity getReworkCraft(String changeNo) { + return craftMapper.selectDscraftByReworkOrder(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 147cd8e5..868aa236 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 @@ -1,9 +1,11 @@ package org.springblade.desk.dashboard.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; @@ -13,6 +15,7 @@ import org.springblade.desk.dashboard.constant.TaskingConstant; import org.springblade.desk.dashboard.excel.DsPartExcel; import org.springblade.desk.dashboard.mapper.DsPartMapper; import org.springblade.desk.dashboard.pojo.entity.*; +import org.springblade.desk.dashboard.pojo.enums.PartCraftStatusEnum; import org.springblade.desk.dashboard.pojo.vo.*; import org.springblade.desk.dashboard.service.*; import org.springblade.desk.dashboard.utils.DateUtils; @@ -40,6 +43,7 @@ import java.util.stream.Collectors; * @author BladeX * @since 2025-11-12 */ +@Slf4j @Service public class DsPartServiceImpl extends BaseServiceImpl implements IDsPartService { @@ -85,6 +89,9 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartPage(IPage page, DsPartVO dsPart) { @@ -574,7 +581,144 @@ public class DsPartServiceImpl extends BaseServiceImpl dsCraftList = craftService.selectDsCraftByPartIdAndRoamNo(partEntity.getId(), roamNo); + + // 5. 如果没有工艺,创建维护任务并返回null + if (CollectionUtils.isEmpty(dsCraftList)) { + createMaintainTask(partEntity, partVersionEntity); + return PartCraftVO.build(PartCraftStatusEnum.NO_CRAFT_INFO.getCode()); + } + + // 6. 按优先级查询工艺 + DsCraftEntity craftByRank = selectCraftByPriority(dsCraftList, rank); + if (craftByRank == null) { + return PartCraftVO.build(PartCraftStatusEnum.NO_CRAFT_RANK_INFO.getCode()); + } + + // 7. 查询工序 + List processEntities = processService.selectDsProcessByCraftId(craftByRank.getId()); + if (CollectionUtils.isEmpty(processEntities)) { + return PartCraftVO.build(PartCraftStatusEnum.NO_PROCEDURE_INFO.getCode()); + } + + // 8. 返回工艺 + return PartCraftVO.build(PartCraftStatusEnum.SUCCESS.getCode(),craftByRank); + + } + + @Override + public List selectReworkPartCraft(String partCode, String reworkOrder,String batchNo,String reworkNo) { + if (StringUtils.isEmpty(partCode) || StringUtils.isEmpty(reworkOrder) || StringUtils.isEmpty(batchNo) || StringUtils.isEmpty(reworkNo) ) { + return null; + } + // 1.查询返工工艺 + DsCraftEntity craftEntity = craftService.getReworkCraft(reworkOrder); + if (Objects.isNull(craftEntity)) { + return null; + } + + // 2.查询返工工序 + List reworkProcessEntityList = prReworkProcessService.selectPrReworkProcess(reworkOrder, partCode, batchNo,reworkNo); + if(CollectionUtils.isEmpty(reworkProcessEntityList)){ + return null; + } + + return reworkProcessEntityList; } + + @Override + public DsPartVersionEntity getNewPartVersion(String partCode) { + if (StringUtils.isEmpty(partCode)) { + List partVersionEntityList = partVersionService.selectByPartCode(partCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + return maxEntity.get(); + } + } + return null; + } + + /** + * 创建维护任务 + */ + private void createMaintainTask(DsPartEntity partEntity, DsPartVersionEntity partVersionEntity) { + DsTaskingEntity dsTaskingEntity = new DsTaskingEntity(); + dsTaskingEntity.setPartCode(partEntity.getPartCode()); + dsTaskingEntity.setPartName(partEntity.getPartName()); + dsTaskingEntity.setTaskStatus(TaskingConstant.TASK_STATUS_WAIT); + dsTaskingEntity.setTaskType(TaskingConstant.MAINTAIN_TASK); + if (partVersionEntity != null) { + dsTaskingEntity.setVersion(partVersionEntity.getPartVersion()); + } + boolean taskingSave = taskingService.save(dsTaskingEntity); + if (!taskingSave) { + log.error("创建维护任务失败,零件编码:{}", partEntity.getPartCode()); + } + } + + /** + * 根据优先级选择工艺 + * 优先级规则:指定级别 > 未指定时按 2级→1级→3级 + */ + private DsCraftEntity selectCraftByPriority(List craftList, String rank) { + if (!StringUtils.isEmpty(rank)) { + // 指定了工艺级别,直接返回对应级别工艺 + return getCraftByRank(craftList, rank); + } + + // 未指定级别,按 2级→1级→3级 优先级查询 + String[] priorityRanks = {"2", "1", "3"}; + for (String priorityRank : priorityRanks) { + DsCraftEntity craft = getCraftByRank(craftList, priorityRank); + if (craft != null) { + return craft; + } + } + + return null; + } + + /** + * 从工艺列表中筛选指定级别的工艺 + */ + private DsCraftEntity getCraftByRank(List craftList, String rank) { + if (CollectionUtils.isEmpty(craftList) || StringUtils.isEmpty(rank)) { + return null; + } + return craftList.stream() + .filter(craft -> rank.equals(craft.getRank())) + .findFirst() + .orElse(null); + } + + + + } 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 d9c583da..342ea7b6 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 @@ -322,14 +322,14 @@ public class DsTaskingServiceImpl extends BaseServiceImpl selectPrReworkProcess(String reworkOrder, String partCode, String batchNo) { - return reworkProcessMapper.selectPrReworkProcess(reworkOrder,partCode,batchNo); + return reworkProcessMapper.selectPrReworkProcess(reworkOrder, reworkOrder,partCode); } @Override @@ -76,4 +76,9 @@ public class PrReworkProcessServiceImpl extends BaseServiceImpl selectPrReworkProcess(String reworkOrder, String partCode, String batchNo, String reworkNo) { + return reworkProcessMapper.selectPrReworkProcessReworkNo(reworkOrder,partCode,batchNo,reworkNo); + } + } From fdfe9e75d981fd3c5372d2355bd8b88635db0db4 Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Wed, 18 Mar 2026 19:48:49 +0800 Subject: [PATCH 25/38] =?UTF-8?q?=E7=83=A7=E7=BB=93=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=9C=AA=E5=AE=8C=E6=88=90002?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/mapper/WorkPlanMapper.xml | 24 +++++++++---------- .../service/impl/AuditFileServiceImpl.java | 8 +++++-- .../system/controller/UserController.java | 9 +++++++ 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml index c9d36bb8..e2de88e0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml @@ -75,8 +75,8 @@ select a.PART_CODE, a.BATCH_NO, a.WORK_QTY, a.area, a.sumArea, a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type from ( - select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.PO_AREA as area, - sum(b.WORK_QTY*d.PO_AREA) over() as sumArea, a.MTN_CODE, d.prod_ident,c.wo_code,f.material,d.yield_type + select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.YP_AREA as area, + sum(b.WORK_QTY*d.YP_AREA) over() as sumArea, a.MTN_CODE, d.PRODUCT_IDENT as prod_ident,c.wo_code,f.material,d.yield_type from MES_MAC_TOOL_USE a inner join MES_WORK_PLAN b on a.WP_ID = b.ID inner join MES_WORK_ORDER c on b.WO_ID = c.ID @@ -163,7 +163,7 @@ select a.PART_CODE, a.BATCH_NO, a.WORK_QTY as qua, a.area, a.sumArea as totalArea,a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type from ( - select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.PO_AREA as area, - sum(b.WORK_QTY*d.PO_AREA) over() as sumArea, - a.MTN_CODE, d.prod_ident,c.wo_code,f.material,d.yield_type from MES_MAC_TOOL_USE a - inner join MES_WORK_PLAN b on a.WP_ID = b.WP_ID + select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.YP_AREA as area, + sum(b.WORK_QTY*d.YP_AREA) over() as sumArea, + a.MTN_CODE, d.PRODUCT_IDENT as prod_ident,c.wo_code,f.material,d.yield_type from MES_MAC_TOOL_USE a + inner join MES_WORK_PLAN b on a.WP_ID = b.ID inner join MES_WORK_ORDER c on b.WO_ID = c.ID inner join MES_YIELD_ORDER d on c.YO_ID = d.ID inner join ds_part f on d.part_code = f.part_code where a.MTN_CODE in( select a.MTN_CODE from MES_MAC_TOOL_USE a - left join DE_EQUIPMENT_CARD b on a.EQUIPMENT_CARD = b.ID + left join MES_EQUIPMENT_CARD b on a.EQUIPMENT_CARD = b.ID where a.WP_ID = #{wpId} and b.CATEGORYS = '产线设备' @@ -225,11 +225,11 @@ - + select a.* from MES_MAC_TOOL_USE a left join MES_WORK_PLAN wp on a.WP_ID = wp.ID - where wp.Id=#{wpId} and a.mtu_index=#{indexNum} order by a.Id + where a.WP_ID=#{wpId} and a.mtu_index=#{indexNum} order by a.Id + 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 62f21014..82c0f289 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 @@ -71,7 +71,7 @@ public interface DsCraftMapper extends BaseMapper { List selectCraft(@Param("partId")Long partId,@Param("rank")String rank); - DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank); + DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank,@Param("roamNo") String roamNo); DsCraftEntity getReworkCraft(@Param("partId")Long partId,@Param("changeNo") String changeNo); /** @@ -87,4 +87,6 @@ public interface DsCraftMapper extends BaseMapper { List selectDsCraftByPartIdAndRoamNo(@Param("partId") Long partId,@Param("roamNo") String roamNo); DsCraftEntity selectDscraftByReworkOrder(@Param("changeNo") String changeNo); + + List selectDsCraftByPartIdAndRank(@Param("partId")Long partId, @Param("rank")String rank); } 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 c9c67543..cbdce1b4 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 @@ -140,15 +140,15 @@ 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 index 7739d0fc..b5d3f8f9 100644 --- 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 @@ -51,6 +51,7 @@ and REWORK_CODE = #{reworkOrder} and PART_CODE = #{partCode} and BATCH_NO = #{batchNo} + order by PROCESS_NO + select nvl(sum(a.weight),0) from MES_PLATE_AROUND a where a.wp_id in ( select b.wp_id from MES_WORK_ORDER b where b.yo_id = #{id} ) + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java new file mode 100644 index 00000000..e83d6404 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java @@ -0,0 +1,17 @@ +package org.springblade.desk.produce.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.produce.pojo.entity.HandoverRecord; +import org.springblade.desk.produce.pojo.vo.PrintWarehousingVO; + +import java.util.List; + +/** + * 移交记录 服务类 + * + * @author BladeX + */ +public interface IHandoverRecordService extends BaseService { + + List handoverRecordPrint(List longList); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java index b67bbd16..fb56fe1d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java @@ -35,7 +35,7 @@ public interface IPlateAroundService extends BaseService { IPage queryDelLogRecord(IPage page, PlateAroundDto plateAroundDto); - void savePlateFrontEnter(List plateArounds); + void savePlateFrontEnter(List plateArounds, Short paType); DsPartEntity getByPartCode(String partCode); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java index b322c44f..6f7b4522 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java @@ -8,6 +8,7 @@ import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO; import org.springblade.scheduling.pojo.entity.WorkPlanEntity; import org.springblade.desk.produce.pojo.vo.WorkPlanVO; +import java.util.Date; import java.util.List; /** @@ -43,4 +44,9 @@ public interface IWorkPlanService extends BaseService { WorkPlan findMaxHostWorkUnitByWoId(Long id, int i); void verifyMakeUnit(WorkPlan prWorkPlan); + + /** + * 工序完成 + */ + void workPlanEnd(Long wpId, Date putStoreTime, Double makeQty); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java new file mode 100644 index 00000000..d4038646 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java @@ -0,0 +1,134 @@ +package org.springblade.desk.produce.service.impl; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.StringUtil; +import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.service.IYieldOrderService; +import org.springblade.desk.produce.mapper.HandoverRecordMapper; +import org.springblade.desk.produce.pojo.entity.HandoverRecord; +import org.springblade.desk.produce.pojo.entity.WorkOrder; +import org.springblade.desk.produce.pojo.vo.PrintWarehousingVO; +import org.springblade.desk.produce.service.IHandoverRecordService; +import org.springblade.desk.produce.service.IWorkOrderService; +import org.springblade.desk.produce.service.IWorkPlanService; +import org.springblade.erpdata.feign.IErpDataProduceClient; +import org.springblade.system.cache.UserCache; +import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.User; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +/** + * 移交记录 服务实现类 + * + * @author BladeX + * @since 2025-11-28 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class HandoverRecordServiceImpl extends BaseServiceImpl implements IHandoverRecordService { + + private final IWorkOrderService prWorkOrderService; + + private final IYieldOrderService yieldOrderService; + + private final IWorkPlanService workPlanService; + + private final IErpDataProduceClient erpDataProduceClient; + + @Override + @Transactional(rollbackFor = Exception.class) + public List handoverRecordPrint(List longList) { + if (CollectionUtils.isEmpty(longList)) { + return null; + } + List list = new ArrayList<>(); + HandoverRecord hr; + PrintWarehousingVO printWarehousing; + YieldOrder yo; + Double totalWeight; + Date date = new Date(); + for (Long i : longList) { + hr = this.getById(i); + // 保存打印时间、更新打印标记 + hr.setPrintTime(date); + hr.setPrintFlag(1); + + printWarehousing = new PrintWarehousingVO(); + printWarehousing.setHrCode(hr.getHrCode()); + printWarehousing.setHrType(hr.getHrType()); + printWarehousing.setWoCode(hr.getWoCode()); + printWarehousing.setUseDept(hr.getRecDept()); + printWarehousing.setProdIdent(hr.getProdIdent()); + printWarehousing.setPartCode(hr.getPartCode()); + printWarehousing.setBatchNo(hr.getBatchNo()); + printWarehousing.setHandoverQty(String.valueOf(hr.getHandoverQty())); + printWarehousing.setRecDept(hr.getRecDept()); + User user = UserCache.getUser(hr.getCreateUser()); + printWarehousing.setCreateMan(user != null ? user.getRealName() : ""); + printWarehousing.setTableDate(DateFormatUtils.format(hr.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + printWarehousing.setMemo(hr.getMemo()); + + // 打印结束最后一道工序 + WorkOrder wo = prWorkOrderService.getById(hr.getWoId()); + printWarehousing.setScrapQty(wo.getScrapQty().toString()); + printWarehousing.setTestQty(wo.getTestQty().toString()); + //手动创建的在打票时改为已交接 + yo = yieldOrderService.getById(wo.getYoId()); + prWorkOrderService.updateStatus(Collections.singletonList(wo.getId()), WorkOrder.RUN_STATUS_COMPLETED, AuthUtil.getUserId(), ""); + // 如果不是第一次打印,保存第一次打印时间 + if (wo.getPutStoreTime() != null) { + workPlanService.workPlanEnd(wo.getWpId(), wo.getPutStoreTime(), wo.getMakeQty()); + } else { + workPlanService.workPlanEnd(wo.getWpId(), new Date(), wo.getMakeQty()); + } + + printWarehousing.setPoCode(yo.getYpCode()); + printWarehousing.setMakeQty(String.valueOf(yo.getYpQty())); + printWarehousing.setPlate(yo.getPlate()); + printWarehousing.setPartName(yo.getPartName()); + printWarehousing.setPlanUser(yo.getPlanUser()); + printWarehousing.setProductTypePart(yo.getProductType()); + printWarehousing.setPrimaryCraft(yo.getPrimaryCraft()); + //zxh 20241212 保管员取值根据是否更改接受部门增加分支 + if (hr.getRecDept().matches("[0-9]+")) { + // 2025-07-23 线上迁移 + log.info("getCustodianByRecDept开始时间{}", System.currentTimeMillis()); +// String custodianByRecDept = this.getCustodianByRecDept(yo.getPartCode(), hr.getRecDept()); + // 2025-07-23 线上迁移 + log.info("getCustodianByRecDept结束时间{}", System.currentTimeMillis()); +// printWarehousing.setCustodian(custodianByRecDept); + } else { + printWarehousing.setCustodian(yo.getCustodian()); + } + + // 委托车间 + printWarehousing.setEntrustDept(yo.getEntrustDept()); + //zxh 20241212 更改入库单中产品系列取值 + printWarehousing.setProductType(yo.getProductType()); + // 重量合计 + totalWeight = baseMapper.getPaSumWeight(yo.getId()); + printWarehousing.setWeight(totalWeight != 0 ? totalWeight : null); + + list.add(printWarehousing); + } + return list; + } + + private String getCustodianByRecDept(String partCode, String recDept) { + R byPartCode = erpDataProduceClient.getCustodianByRecDept(partCode, recDept); + return byPartCode.getData(); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index 48c4657c..0c94f12c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -410,7 +410,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl mtuList = macToolUseService.listByParams(bsRackSet.getId(), bsFeiBaSet != null ? bsFeiBaSet.getId() : null, equipmentCard != null ? equipmentCard.getId() : null, null); + List mtuList = macToolUseService.listByParams(bsRackSet != null ? bsRackSet.getId() : null, bsFeiBaSet != null ? bsFeiBaSet.getId() : null, equipmentCard != null ? equipmentCard.getId() : null, null); macToolUseService.unMacToolUseBind(mtuList); this.unBindDetail(mtuList); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java index d5d1a2a5..3c0d02bd 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java @@ -12,6 +12,10 @@ import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.desk.basic.pojo.entity.Oem; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.service.IOemService; +import org.springblade.desk.basic.service.ITeamSetService; import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.service.IDsPartService; @@ -59,6 +63,10 @@ public class PlateAroundServiceImpl extends BaseServiceImpl queryByReadStatus(IPage page, PlateAroundDto plateAroundDto) { return page.setRecords(baseMapper.queryByReadStatus(page, plateAroundDto)); @@ -176,28 +184,27 @@ public class PlateAroundServiceImpl extends BaseServiceImpl list) { - if (list == null || list.size() == 0) { + public void savePlateFrontEnter(List list, Short paType) { + if (CollectionUtils.isEmpty(list)) { return; } int next = 0; List woList = new ArrayList<>(list.size()); WorkOrder wo; Date date = new Date(); - Short paType = PlateAround.CUR_STATUS_NEW; for (PlateAround plateAround : list) { this.savePlateAround(AuthUtil.getUser(), plateAround, paType, next, Boolean.FALSE); if (paType.equals(PlateAround.AFTER_PLAN_IN)) { WorkPlan prWorkPlan = workPlanMapper.selectById(plateAround.getWpId()); wo = workOrderService.getById(prWorkPlan.getWoId()); - wo.setHandoverTime( date); + wo.setHandoverTime(date); woList.add(wo); // 计算主工序对应的金额 //bsTeamWagesLevelService.countTeamSalary(wo.getWoId()); } - if (paType.equals(PlateAround.AFTER_PLAN_IN)) { - // prHandoverRecordService.saveHandoverRecord(woList, AuthUtil.getUser()); - } + } + if (paType.equals(PlateAround.AFTER_PLAN_IN)) { + // prHandoverRecordService.saveHandoverRecord(woList, AuthUtil.getUser()); } } @@ -231,7 +238,7 @@ public class PlateAroundServiceImpl extends BaseServiceImpl plateAroundList= baseMapper.selectList(Wrappers.lambdaQuery(). + List plateAroundList = baseMapper.selectList(Wrappers.lambdaQuery(). likeLeft(PlateAround::getPaCode, codePattern).orderByAsc(PlateAround::getPaCode)); String maxCode = plateAroundList.size() > 0 ? plateAroundList.get(0).getPaCode() : null; if (maxCode != null) { @@ -408,10 +415,11 @@ public class PlateAroundServiceImpl extends BaseServiceImpl { + + public static HandoverRecordWrapper build() { + return new HandoverRecordWrapper(); + } + + @Override + public HandoverRecord entityVO(HandoverRecord handoverRecord) { + HandoverRecord handoverRecordVO = Objects.requireNonNull(BeanUtil.copyProperties(handoverRecord, HandoverRecord.class)); +// User createUser = UserCache.getUser(workOrderVO.getCreateUser()); +// User updateUser = UserCache.getUser(workOrderVO.getUpdateUser()); +// workOrderVO.setCreateUserName(createUser.getName()); +// workOrderVO.setUpdateUserName(updateUser.getName()); + return handoverRecordVO; + } + + public IPage listHandoverRecordVO(IPage pages) { + List handoverRecords = pages.getRecords(); + for (HandoverRecord handoverRecord : handoverRecords) { + handoverRecord.setHrTypeName(HandoverRecord.hrTypeMap.get(handoverRecord.getHrType())); + handoverRecord.setStatusName(HandoverRecord.runStatusMap.get(handoverRecord.getStatus())); + User user = UserCache.getUser(handoverRecord.getCreateUser()); + handoverRecord.setCreateName(user != null ? user.getRealName() : ""); + } + pages.setRecords(handoverRecords); + return pages; + } + + +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java index 072dfed7..0d084e8c 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java @@ -50,4 +50,10 @@ public class ErpDataProduceClient implements IErpDataProduceClient { public R getVersionByPartCode(String partCode) { return R.data(erpDataProduceService.getVersionByPartCode(partCode)); } + + @Override + public R getCustodianByRecDept(String partCode, String recDept) { + return R.data(erpDataProduceService.getCustodianByRecDept(partCode, recDept)); + } + } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java index e6f27808..f9783317 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java @@ -23,4 +23,6 @@ public interface ErpDataProduceMapper extends Mapper { Map getProductAppareaByPartCode(String partCode); String getVersionByPartCode(String partCode); + + String getCustodianByRecDept(String partCode, String recDept); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml index 17d7b3d3..0ec275d2 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml @@ -70,4 +70,12 @@ select b.version from (select version from dba_mgr.drwversion@erp_mes_link a where a.drwpartno in ( select drwpartno from dba_mgr.t_prtbasdef@erp_mes_link where prtno = #{partCode})) b where rownum=1 + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java index a1f5f332..24d7c8f6 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java @@ -22,4 +22,6 @@ public interface IErpDataProduceService { Map getProductAppareaByPartCode(String partCode); String getVersionByPartCode(String partCode); + + String getCustodianByRecDept(String partCode, String recDept); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java index 08370dc0..c7b28bbc 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java @@ -41,4 +41,9 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { public String getVersionByPartCode(String partCode) { return erpDataProduceMapper.getVersionByPartCode(partCode); } + + @Override + public String getCustodianByRecDept(String partCode, String recDept) { + return erpDataProduceMapper.getCustodianByRecDept(partCode, recDept); + } } From 023ae2beba289a516a21a2bc719c8a67df1d72fa Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Fri, 20 Mar 2026 12:05:25 +0800 Subject: [PATCH 38/38] =?UTF-8?q?=E8=BF=87=E7=A8=8B=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/dto/PrintThicknessChildCraft.java | 132 ++++++++++++++++++ .../pojo/dto/PrintThicknessCraftCard.java | 121 ++++++++++++++++ .../entity/MesRbFilePreserveSlotEntity.java | 2 + .../desk/produce/mapper/WorkPlanMapper.java | 10 +- .../desk/produce/mapper/WorkPlanMapper.xml | 27 +++- .../controller/InspectionTaskController.java | 83 +++++++++++ .../service/IInspectionTaskService.java | 5 +- .../impl/InspectionTaskServiceImpl.java | 85 ++++++++++- 8 files changed, 454 insertions(+), 11 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessChildCraft.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessCraftCard.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessChildCraft.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessChildCraft.java new file mode 100644 index 00000000..bbf91e73 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessChildCraft.java @@ -0,0 +1,132 @@ +package org.springblade.desk.produce.pojo.dto; + +public class PrintThicknessChildCraft implements java.io.Serializable { + /** + * @return 程式编号 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String code; + /** + * @return 名称一 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String gauge_value1; + /** + * @return 参数一 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + + private String gauge_value2; + /** + * @return 名称二 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String gauge_value3; + /** + * @return 参数二 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String gauge_value4; + /** + * @return 名称三 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String gauge_value5; + /** + * @return 参数三 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + + private String gauge_value6; + /** + * @return 名称设备编码 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String deviceName; + /** + * @return 参数检测时间 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String update_time; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getGauge_value1() { + return gauge_value1; + } + + public void setGauge_value1(String gauge_value1) { + this.gauge_value1 = gauge_value1; + } + + public String getGauge_value2() { + return gauge_value2; + } + + public void setGauge_value2(String gauge_value2) { + this.gauge_value2 = gauge_value2; + } + + public String getGauge_value3() { + return gauge_value3; + } + + public void setGauge_value3(String gauge_value3) { + this.gauge_value3 = gauge_value3; + } + + public String getGauge_value4() { + return gauge_value4; + } + + public void setGauge_value4(String gauge_value4) { + this.gauge_value4 = gauge_value4; + } + + public String getGauge_value5() { + return gauge_value5; + } + + public void setGauge_value5(String gauge_value5) { + this.gauge_value5 = gauge_value5; + } + + public String getGauge_value6() { + return gauge_value6; + } + + public void setGauge_value6(String gauge_value6) { + this.gauge_value6 = gauge_value6; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getUpdate_time() { + return update_time; + } + + public void setUpdate_time(String update_time) { + this.update_time = update_time; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessCraftCard.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessCraftCard.java new file mode 100644 index 00000000..ea0fd657 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessCraftCard.java @@ -0,0 +1,121 @@ +package org.springblade.desk.produce.pojo.dto; + +import java.util.List; + + +public class PrintThicknessCraftCard implements java.io.Serializable { + /** + * @Description: 测厚明细 + * @Author cdl + * @CreateTime 2024/3/7 11:08 + */ + List thicknessList; + /** + * 主槽流程卡号 + */ + private String mainCardNo; + /** + * 主槽零件号 + */ + private String mainPartCode; + /** + * 主槽批次号 + */ + private String mainBatchNo; + /** + * 主槽车间订单号 + */ + private String mainWoCode; + /** + * 流程卡号 + */ + private String cardNo; + /** + * 零件号 + */ + private String partCode; + /** + * 批次号 + */ + private String batchNo; + /** + * 车间订单号 + */ + private String woCode; + + public PrintThicknessCraftCard(List thicknessList) { + this.thicknessList = thicknessList; + } + + public List getThicknessList() { + return thicknessList; + } + + public void setThicknessList(List thicknessList) { + this.thicknessList = thicknessList; + } + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public String getPartCode() { + return partCode; + } + + public void setPartCode(String partCode) { + this.partCode = partCode; + } + + public String getBatchNo() { + return batchNo; + } + + public void setBatchNo(String batchNo) { + this.batchNo = batchNo; + } + + public String getWoCode() { + return woCode; + } + + public void setWoCode(String woCode) { + this.woCode = woCode; + } + + public String getMainCardNo() { + return mainCardNo; + } + + public void setMainCardNo(String mainCardNo) { + this.mainCardNo = mainCardNo; + } + + public String getMainPartCode() { + return mainPartCode; + } + + public void setMainPartCode(String mainPartCode) { + this.mainPartCode = mainPartCode; + } + + public String getMainBatchNo() { + return mainBatchNo; + } + + public void setMainBatchNo(String mainBatchNo) { + this.mainBatchNo = mainBatchNo; + } + + public String getMainWoCode() { + return mainWoCode; + } + + public void setMainWoCode(String mainWoCode) { + this.mainWoCode = mainWoCode; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java index 17c0a5df..5ab2e78f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java @@ -65,4 +65,6 @@ public class MesRbFilePreserveSlotEntity extends BaseEntity { private String keepMan; @TableField(exist = false) private List childrenList; +// @TableField(exist = false) +// List childrenListNew; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java index e0e6e632..1ae0708c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java @@ -9,6 +9,7 @@ import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO; import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO; +import org.springblade.desk.quality.pojo.entity.ProReTemplate; import org.springblade.desk.quality.pojo.entity.ReviewSheet; import org.springblade.desk.quality.pojo.entity.WorkPlanItem; import org.springblade.desk.quality.pojo.entity.WorkPlanItemDetail; @@ -54,12 +55,15 @@ public interface WorkPlanMapper extends BaseMapper { WorkPlan getConcatMrByWpId(Long wpId); List listPrByWpIdIndex(Long wpId, Integer index,boolean aTrue); List getDataByWpIdAndIndexList(Long wpId, String indexNum); + List getDataByWpIdAndIndexListNew(Long wpId); + List listPrByWpIdIndexAndMtnCode(Long wpId, Integer indexNum,String mtnCode); List getBoxInfoByWpIdMtnCodeList(Long wpId); List getByRfpsId(Long rfpsId); MacToolUse getHangNumIsNull(Long wpId); MacToolUse getDataByWpIdAndIndex(Long wpId, String numberIndex); - List getDataByWcIdAndPpsId(Long wcId, Long ppsId,boolean aTrue); +// List getDataByWcIdAndPpsId(Long wcId, Long ppsId,boolean aTrue); + List getDataByWcIdAndPpsId(Long wcId, Long ppsId, boolean aTrue); List getByRfpId(Long rfpId); // MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long wpId); @@ -80,4 +84,8 @@ public interface WorkPlanMapper extends BaseMapper { List listByWpiIdMes(Long wpiId); List getQcReviewSheetListMes(String partCode,String batchNo); + +// List getByOtherWpIdMes(Long woId); + + List getByRfpsIdMesNew(Long id); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml index 1235c2c1..8b465963 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml @@ -228,6 +228,10 @@ select * from MES_WORK_ORDER a inner join MES_YIELD_ORDER b on a.yo_id = b.id and a.yo_id = #{yoId} + + @@ -246,6 +250,12 @@ where a.WP_ID=#{wpId} and a.mtu_index=#{indexNum} order by a.Id + + - + select from QA_PRO_RE_TEMPLATE a where 1=1 and a.WC_ID = #{wcId} - and a.PPS_ID = #{ppsId} and a.LINE = 2 + and a.PPS_ID = #{ppsId} and a.LINE = 0 @@ -275,7 +293,8 @@ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java index ecc0197a..94fa00c6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java @@ -3,6 +3,7 @@ */ package org.springblade.desk.quality.controller; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -11,6 +12,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.Data; @@ -36,9 +38,16 @@ import org.springblade.desk.dashboard.service.IDsPartService; import org.springblade.desk.dashboard.service.IDsPartVersionService; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.service.IYieldOrderService; +import org.springblade.desk.produce.mapper.WorkPlanMapper; +import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO; +import org.springblade.desk.produce.pojo.dto.PrintThicknessCraftCard; +import org.springblade.desk.produce.pojo.entity.MacToolUse; +import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity; +import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity; import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.service.IMacToolUseService; +import org.springblade.desk.produce.service.IMesRbFilePreserveSlotService; import org.springblade.desk.produce.service.IWorkPlanService; import org.springblade.desk.quality.constant.InspectionTaskConst; import org.springblade.desk.quality.constant.QAModuleConst; @@ -54,6 +63,7 @@ import org.springblade.desk.quality.service.IInspectionTaskService; import org.springblade.desk.quality.service.IReviewSheetSubService; import org.springblade.desk.quality.service.InspectionTaskService2; import org.springblade.desk.quality.wrapper.InspectionTaskDetailWrapper; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -95,6 +105,8 @@ public class InspectionTaskController extends BladeController { IDsPartService dsPartService; @Resource private IYieldOrderService yieldOrderService; + @Resource + private WorkPlanMapper workPlanMapper; /** * [检验任务] 详情 */ @@ -218,6 +230,77 @@ public class InspectionTaskController extends BladeController { } + @Operation(summary = "测厚数据打印") + @PostMapping(value = "/thicknessPrint") + public void thicknessPrint(@RequestBody JSONObject data, HttpServletRequest request, HttpServletResponse response) { + + List idArr = JSONArray.parseArray(data.get("idArr").toString(), Long.class); + Short exportType = data.getShort("exportType"); + if (idArr == null || idArr.size() == 0) { + return; + } + String reportId = data.getString("reportId"); + if (reportId == null) { + return; + } + List list = service.printThicknessList(idArr); +// this.export(reportId, exportType, "流程卡打印", list, null, request, response); + } + + @Resource + private IMesRbFilePreserveSlotService mesRbFilePreserveSlotService; + + @Operation(summary = "获取热表电子档案维护-槽子明细及对应的明细") + @RequestMapping(value = "/getByRfpId/{pssId}", method = RequestMethod.GET) + public R getByRfpId(@PathVariable Long pssId) { + + List preserveSlotList = new ArrayList<>(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PPS_ID", pssId); + List workPlanList = workPlanMapper.selectList(queryWrapper); + WorkPlan plan = new WorkPlan(); + if(null != workPlanList && workPlanList.size() > 0){ + plan = workPlanList.get(0); + } + + if(plan != null && plan.getId() != null){ + List toolUseList = workPlanMapper.getDataByWpIdAndIndexListNew(plan.getId()); + for(MacToolUse toolUse : toolUseList){ + List list = mesRbFilePreserveSlotService.getByRfpId(Long.valueOf(toolUse.getRfpId())); + preserveSlotList.addAll(list); + } + } + + + JSONObject obj = new JSONObject(); +// List preserveSlotList = workPlanMapper.getByRfpId(rfpId); + Integer insertIndex = 0; + if (preserveSlotList.size() > 0) { + List childrenList; + List childrenListNew = new ArrayList<>(); + for (MesRbFilePreserveSlotEntity dsRbFilePreserveSlot : preserveSlotList) { + if(null != dsRbFilePreserveSlot.getInsertIndex()){ + if(Integer.parseInt(dsRbFilePreserveSlot.getInsertIndex()) > insertIndex){ + insertIndex = Integer.parseInt(dsRbFilePreserveSlot.getInsertIndex()); + } + } + + childrenList = service.getByRfpsIdMesNew(dsRbFilePreserveSlot.getId()); + for(MesRbFilePreserveDetailEntity children : childrenList){ + MesRbFilePreserveDetailDTO childrenDTO = new MesRbFilePreserveDetailDTO(); + BeanUtils.copyProperties(children, childrenDTO); + childrenListNew.add(childrenDTO); + } + dsRbFilePreserveSlot.setChildrenList(childrenListNew); + } + } + obj.put("preserveSlotList",preserveSlotList); + obj.put("insertIndex",insertIndex); + return R.data(obj); + } + + /** * [检验任务] 自定义分页 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java index 36b23497..7ae11ed3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java @@ -12,6 +12,8 @@ import org.apache.ibatis.annotations.Param; import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; +import org.springblade.desk.produce.pojo.dto.PrintThicknessCraftCard; +import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity; import org.springblade.desk.quality.excel.InspectionTaskExcel; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.request.InspectionTaskSearch; @@ -123,5 +125,6 @@ public interface IInspectionTaskService extends BaseService { InspectionTask refreshStatusAndQty(Long id); Object pagePrintSjEleFiles(Long woId, Integer yieldType,List planList, List moduleList); - + List printThicknessList(List idArr); + List getByRfpsIdMesNew(Long rfpsId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java index a7d4fb07..46cd62de 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java @@ -48,10 +48,7 @@ import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.WorkOrderMapper; import org.springblade.desk.produce.mapper.WorkPlanMapper; -import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO; -import org.springblade.desk.produce.pojo.dto.PrintChildCheck; -import org.springblade.desk.produce.pojo.dto.PrintChildCheckChild; -import org.springblade.desk.produce.pojo.dto.TaskDataDto; +import org.springblade.desk.produce.pojo.dto.*; import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.service.IMesEquipmentCardService; @@ -707,7 +704,19 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl dsRbFilePreserveList = null; +// List dsRbFilePreserveList = null; +// if (workPlan.getPpsId() != null){ +// BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId()); +// if("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) { +// dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(null, +// workPlan.getPpsId(), Boolean.TRUE); +// } else { +// dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(bsCenterTeam.getWcId(), +// workPlan.getPpsId(), Boolean.TRUE); +// } +// } + + List dsRbFilePreserveList = null; if (workPlan.getPpsId() != null){ BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId()); if("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) { @@ -719,7 +728,9 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl 0) { + //00000000000000 preserveSlotList = workPlanMapper.getByRfpId(dsRbFilePreserveList.get(0).getId()); qcProduceRunsList = workPlanMapper.listPrByWpIdIndex(workPlan.getId(), 2, Boolean.TRUE); List runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId()); @@ -1640,6 +1651,70 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl printThicknessList(List idArr) { + List pcdLst = new ArrayList<>(); +// for (Long woId : idArr) { +// List thicknessList = new ArrayList<>(); +// PrintThicknessChildCraft printThicknessChildCraft; +// List prItemDetails = null; +// // 获取与本单同槽相关订单的工序 +// List byOtherWpId = workPlanMapper.getByOtherWpIdMes(woId); +// // 2025-07-23 线上迁移 +//// byOtherWpId.add(woId); +// String wpIdStr = ""; +// if (byOtherWpId == null || byOtherWpId.size() == 0) { +// continue; +// } +// wpIdStr = StringUtils.join(byOtherWpId, ","); +// +// // 拿出工序对应的测厚数据 +// prItemDetails = prItemDetailService.listByWpIdAndCode(wpIdStr, "镀后测厚"); +// if (prItemDetails != null && prItemDetails.size() > 0) { +// for (PrItemDetail prItemDetail : prItemDetails) { +// printThicknessChildCraft = new PrintThicknessChildCraft(); +// printThicknessChildCraft.setCode(prItemDetail.getGaugeValue7()); +// printThicknessChildCraft.setGauge_value1(prItemDetail.getGaugeValue1()); +// printThicknessChildCraft.setGauge_value2(prItemDetail.getGaugeValue2()); +// printThicknessChildCraft.setGauge_value3(prItemDetail.getGaugeValue3()); +// printThicknessChildCraft.setGauge_value4(prItemDetail.getGaugeValue4()); +// printThicknessChildCraft.setGauge_value5(prItemDetail.getGaugeValue5() != null ? +// prItemDetail.getGaugeValue5() : null); +// printThicknessChildCraft.setGauge_value6(prItemDetail.getGaugeValue6()); +// printThicknessChildCraft.setDeviceName(prItemDetail.getGaugeValue8()); +// printThicknessChildCraft.setUpdate_time(prItemDetail.getUpdateTime() != null ? +// DateTime.date2String(prItemDetail.getUpdateTime(), true, true) : null); +// thicknessList.add(printThicknessChildCraft); +// } +// } +// // 组装打印集合 +// PrintThicknessCraftCard pcd = new PrintThicknessCraftCard(thicknessList); +// WorkOrder wo = workOrderMapper.selectById(woId); +// pcd.setBatchNo(wo.getBatchNo()); +// pcd.setCardNo(wo.getPjYieldOrder().getCardNo()); +// pcd.setPartCode(wo.getPjYieldOrder().getPartCode()); +// pcd.setWoCode(wo.getWoCode()); +// // 填写主槽信息 +// if (prItemDetails != null && prItemDetails.size() > 0) { +// PrItemDetail prItemDetail = prItemDetails.get(0); +// PrWorkOrder prWorkOrder = prItemDetail.getPrWorkPlanItem().getPrWorkPlan().getPrWorkOrder(); +// pcd.setMainBatchNo(prWorkOrder.getBatchNo()); +// pcd.setMainCardNo(prWorkOrder.getPjYieldOrder().getCardNo()); +// pcd.setMainPartCode(prWorkOrder.getPjYieldOrder().getPartCode()); +// pcd.setMainWoCode(prWorkOrder.getWoCode()); +// } +// pcdLst.add(pcd); +// } + return pcdLst; + } + + @Override + public List getByRfpsIdMesNew(Long id) { + + List list = workPlanMapper.getByRfpsIdMesNew(id); + return list; + } + private JSONObject metalParts(Long woId) { JSONObject obj = new JSONObject(); // 子件订单信息