liweidong
liweidong-hj 2 months ago
parent 799439d3ba
commit 4ebef2495e
  1. 4
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 29
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/AccumulateTankSolutionRefinement.java
  3. 30
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/DsTaskBillProcessor.java
  4. 29
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/PerformPeriodicTankSolutionRefinement.java
  5. 30
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/PlanTankSolutionRefinement.java
  6. 30
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/ReworkTaskProcessor.java
  7. 44
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IBatchPreservePlanClient.java
  8. 28
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IDsTaskBillClient.java
  9. 8
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java
  10. 98
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsModelProjectEntity.java
  11. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java
  12. 15
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProDetailEntity.java
  13. 23
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessEntity.java
  14. 15
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/PrReworkProcessEntity.java
  15. 9
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/BsCompilationCompletedVO.java
  16. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsModelAndDetailVO.java
  17. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartSynthesisVO.java
  18. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartVO.java
  19. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartVersionVO.java
  20. 19
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsProDetailVO.java
  21. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsProModelDetailListVO.java
  22. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsProModelVO.java
  23. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsProcessVO.java
  24. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsCraftController.java
  25. 69
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsModelProjectController.java
  26. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsProModelController.java
  27. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsSpecialProController.java
  28. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java
  29. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/BatchPreservePlanClient.java
  30. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/DsTaskBillClient.java
  31. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java
  32. 50
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsModelProjectMapper.java
  33. 37
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ModelProjectMapper.xml
  34. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
  35. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProDetailMapper.xml
  36. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml
  37. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java
  38. 61
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsModelProjectService.java
  39. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProModelService.java
  40. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java
  41. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java
  42. 92
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java
  43. 68
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsModelProjectServiceImpl.java
  44. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
  45. 194
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProModelServiceImpl.java
  46. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java
  47. 30
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java

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

@ -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.IBatchPreservePlanClient;
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 AccumulateTankSolutionRefinement implements BasicProcessor {
@Resource
private IBatchPreservePlanClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
client.createAccumulateClassTask();
return new ProcessResult(true);
}
}

@ -0,0 +1,30 @@
package org.springblade.job.processor.dashboard;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.dashboard.feign.IBatchPreservePlanClient;
import org.springblade.desk.dashboard.feign.IDsTaskBillClient;
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 DsTaskBillProcessor implements BasicProcessor {
@Resource
private IDsTaskBillClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
client.createCraSpecTask();
return new ProcessResult(true);
}
}

@ -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.IBatchPreservePlanClient;
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 PerformPeriodicTankSolutionRefinement implements BasicProcessor {
@Resource
private IBatchPreservePlanClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
client.createPeriodicalClassTask();
return new ProcessResult(true);
}
}

@ -0,0 +1,30 @@
package org.springblade.job.processor.dashboard;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.dashboard.feign.IBatchPreservePlanClient;
import org.springblade.desk.quality.feign.ICycleTestTaskClient;
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 PlanTankSolutionRefinement implements BasicProcessor {
@Resource
private IBatchPreservePlanClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
client.createPlanClassTask();
return new ProcessResult(true);
}
}

@ -0,0 +1,30 @@
package org.springblade.job.processor.dashboard;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.dashboard.feign.IDsTaskBillClient;
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 ReworkTaskProcessor implements BasicProcessor {
@Resource
private IPartClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
client.reworkTask();
return new ProcessResult(true);
}
}

@ -0,0 +1,44 @@
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 java.util.List;
/**
* @author liweidong
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IBatchPreservePlanClient {
String API_PREFIX = "/feign/client/batchPreservePlan";
String CREATE_PLAN_CLASS_TASK = API_PREFIX + "/createPlanClassTask";
String CREATE_PERIODICAL_CLASS_TASK = API_PREFIX + "/createPeriodicalClassTask";
String CREATE_ACCUMULATE_CLASS_TASK = API_PREFIX + "/createAccumulateClassTask";
/**
* 槽液精细化-计划类-任务发起
*/
@GetMapping(CREATE_PLAN_CLASS_TASK)
void createPlanClassTask();
/**
* 槽液精细化-定期类-任务发起
*/
@GetMapping(CREATE_PERIODICAL_CLASS_TASK)
void createPeriodicalClassTask();
/**
* 槽液精细化-累计类-任务发起
*/
@GetMapping(CREATE_ACCUMULATE_CLASS_TASK)
void createAccumulateClassTask();
}

@ -0,0 +1,28 @@
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 java.util.List;
/**
* @author liweidong
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IDsTaskBillClient {
String API_PREFIX = "/feign/client/taskBill";
String CREATE_CRA_SPEC_TASK = API_PREFIX + "/createCraSpecTask";
/**
* 过程项任务
*/
@GetMapping(CREATE_CRA_SPEC_TASK)
void createCraSpecTask();
}

@ -24,6 +24,8 @@ public interface IPartClient {
String BATCH_PARTS = API_PREFIX + "/batchParts";
String REWORK_TASK = API_PREFIX + "/reworkTask";
/**
* 获取零件信息
* @param partCode 零件号
@ -48,4 +50,10 @@ public interface IPartClient {
*/
@GetMapping(BATCH_PARTS)
public List<DsPartEntity> batchParts(List<Long> ids);
/**
* 返工任务同步
*/
@GetMapping(REWORK_TASK)
void reworkTask();
}

@ -0,0 +1,98 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.dashboard.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
/**
* 工艺模版明细 项目信息 实体类
*
* @author BladeX
* @since 2025-11-12
*/
@Data
@TableName("DS_MODEL_PROJECT")
@Schema(description = "DsModelProject对象")
@EqualsAndHashCode(callSuper = true)
public class DsModelProjectEntity extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 工艺模版明细ID
*/
@Schema(description = "工艺模版明细ID")
private Long modelDetailId;
/**
* 项目编号
*/
@Schema(description = "项目编号")
private String projectCode;
/**
* 项目名称
*/
@Schema(description = "项目名称")
private String projectName;
/**
* 标准
*/
@Schema(description = "标准")
private String projectStandard;
/**
* 标准名称
*/
@Schema(description = "标准名称")
private String projectStandardName;
/**
* 工时定额
*/
@Schema(description = "工时定额")
private Long proHours;
/**
* 准备工时
*/
@Schema(description = "准备工时")
private Long prepareHours;
/**
* 备注
*/
@Schema(description = "备注")
private String remarks;
/**
* 实验编号
*/
@Schema(description = "实验编号")
private String trialNo;
}

@ -311,4 +311,11 @@ public class DsPartEntity extends BaseEntity {
@Schema(description = "零件状态")
private String pfStatus = "1";
/**
* 是否电镀
*/
@Schema(description = "是否电镀")
private String isElectroplating;
}

@ -25,6 +25,7 @@
*/
package org.springblade.desk.dashboard.pojo.entity;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.annotation.TableName;
@ -59,6 +60,7 @@ public class DsProDetailEntity extends BaseEntity {
*/
@Schema(description = "工序号")
private String processNo;
/**
* 工序代码
*/
@ -100,4 +102,17 @@ public class DsProDetailEntity extends BaseEntity {
@Schema(description = "备注")
private String remarks;
/**
* 工序ID
*/
@Schema(description = "工序ID")
private Long ppsId;
/**
* 工艺能力id
*/
@Schema(description = "工艺能力id")
private Long caId;
}

@ -25,12 +25,15 @@
*/
package org.springblade.desk.dashboard.pojo.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
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;
/**
@ -112,15 +115,21 @@ public class DsProcessEntity extends BaseEntity {
private String trialNo;
/**
* 工序ID
*/
@Schema(description = "工序ID")
private Long ppsId;
/**
* 工艺能力id
*/
@Schema(description = "工艺能力id")
private Long caId;
@JSONField(name = "ppsId")
public String getPpsIdStr() {
return this.ppsId == null ? null : this.ppsId.toString();
}
@JSONField(name = "caId")
public String getCaIdStr() {
return this.caId == null ? null : this.caId.toString();
}
}

@ -25,6 +25,7 @@
*/
package org.springblade.desk.dashboard.pojo.entity;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.annotation.TableName;
@ -167,5 +168,19 @@ public class PrReworkProcessEntity extends BaseEntity {
@Schema(description = "加工班组名称")
private String makeTeamName;
@JSONField(name = "ppsId")
public String getPpsIdStr() {
return this.ppsId == null ? null : this.ppsId.toString();
}
@JSONField(name = "caId")
public String getCaIdStr() {
return this.caId == null ? null : this.caId.toString();
}
@JSONField(name = "makeTeam")
public String getMakeTeamStr() {
return this.makeTeam == null ? null : this.makeTeam.toString();
}
}

@ -30,9 +30,14 @@ public class BsCompilationCompletedVO {
/**
* 工序集合
*/
private List<DsProcessEntity> processList;
private List<DsProcessVO> processList;
/**
* 工序删除ID集合
*/
private List<Long> deleteIds;
private List<Long> processDeleteIds;
/**
* 项目删除ID集合
*/
private List<Long> projectDeleteIds;
}

@ -49,6 +49,6 @@ public class DsModelAndDetailVO {
/**
* 工艺模版明细集合
*/
List<DsProDetailEntity> dsProDetailEntityList;
List<DsProDetailVO> proDetailVOList;
}

@ -54,4 +54,9 @@ public class DsPartSynthesisVO{
*/
private String partVersion;
/**
* 子件信息
*/
private List<DsPartVO> dsPartVOList;
}

@ -84,6 +84,12 @@ public class DsPartVO extends DsPartEntity {
@Schema(description = "子件信息")
private List<DsPartVersionVO> children;
/**
* 修改人
*/
@Schema(description = "修改人")
private String updateUserStr;
public String getPartVersion() {
return this.partVersion;
}
@ -94,4 +100,5 @@ public class DsPartVO extends DsPartEntity {
}

@ -49,4 +49,10 @@ public class DsPartVersionVO extends DsPartEntity {
@Schema(description = "零件版本号")
private String partVersion;
/**
* 修改人
*/
@Schema(description = "修改人")
private String updateUserStr;
}

@ -25,10 +25,21 @@
*/
package org.springblade.desk.dashboard.pojo.vo;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.alibaba.fastjson.serializer.SerializeWriter;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springblade.desk.dashboard.pojo.entity.DsModelProjectEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProDetailEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity;
import java.io.IOException;
import java.io.Serial;
import java.lang.reflect.Type;
import java.util.List;
/**
* 工艺模版明细表 视图实体类
@ -42,4 +53,12 @@ public class DsProDetailVO extends DsProDetailEntity {
@Serial
private static final long serialVersionUID = 1L;
private List<DsModelProjectEntity> modelProjectList;
private String ppsIdStr;
private String caIdStr;
}

@ -42,6 +42,10 @@ public class DsProModelDetailListVO {
private DsProModelEntity promodel;
private List<DsProDetailEntity> tableData;
private List<DsProDetailVO> tableData;
private List<Long> detailIdList;
private List<Long> modelProjectIdList;
}

@ -49,4 +49,7 @@ public class DsProModelVO extends DsProModelEntity {
@Schema(description = "镀种分类")
private String platingTypeStr;
@Schema(description = "修改人")
private String updateUserStr;
}

@ -42,4 +42,6 @@ import java.util.List;
public class DsProcessVO extends DsProcessEntity {
@Serial
private static final long serialVersionUID = 1L;
private List<DsProcessProjectVO> processProjectList;
}

@ -163,4 +163,14 @@ public class DsCraftController extends BladeController {
return ResultInfo.ok(dsCraftService.getToolsByPartId(partId));
}
/**
* 一键删除全套工艺
*/
@PostMapping("/craftBatchRemoval")
@Operation(summary = "逻辑删除", description = "传入ids")
public R craftBatchRemoval(@Parameter(description = "主键", required = true) @RequestParam String id) {
return R.status(dsCraftService.craftBatchRemoval(id));
}
}

@ -0,0 +1,69 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.dashboard.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.excel.DsProcessProjectExcel;
import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity;
import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
import org.springblade.desk.dashboard.service.IDsProcessProjectService;
import org.springblade.desk.dashboard.wrapper.DsProcessProjectWrapper;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 工序项目信息表 控制器
*
* @author BladeX
* @since 2025-11-12
*/
@RestController
@AllArgsConstructor
@RequestMapping("/DsModelProject")
@Tag(name = "工艺模版项目表", description = "工艺模版项目表接口")
public class DsModelProjectController extends BladeController {
}

@ -105,32 +105,13 @@ public class DsProModelController extends BladeController {
/**
* 工艺模版 新增
*/
@PostMapping("/save")
@PostMapping("/submit")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入dsProModel")
public R save(@RequestBody DsProModelDetailListVO modelDetailListVO) {
return R.data(dsProModelService.saveDsProModel(modelDetailListVO));
}
/**
* 工艺模版 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入dsProModel")
public R update(@RequestBody JSONObject data) {
return R.status(dsProModelService.update(data));
public R submit(@RequestBody DsProModelDetailListVO modelDetailListVO) {
return R.data(dsProModelService.submit(modelDetailListVO));
}
/**
* 工艺模版 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入dsProModel")
public R submit(@Valid @RequestBody DsProModelEntity dsProModel) {
return R.status(dsProModelService.saveOrUpdate(dsProModel));
}
/**
* 工艺模版 删除

@ -113,8 +113,8 @@ public class DsSpecialProController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入dsSpecialPro")
public R save(@Valid @RequestBody DsSpecialProEntity dsSpecialPro) {
return R.status(dsSpecialProService.save(dsSpecialPro));
public R save(@Valid @RequestBody List<DsSpecialProEntity> dsSpecialProList) {
return R.status(dsSpecialProService.saveBatch(dsSpecialProList));
}
/**

@ -277,9 +277,10 @@ public class DsTaskingController extends BladeController {
) {
DsCraftEntity craft = compilationCompleted.getCraft();
List<DsProcessEntity> processList = compilationCompleted.getProcessList();
List<Long> deleteIds = compilationCompleted.getDeleteIds();
return R.status(dsTaskingService.authorizedAccomplish(craft,processList,deleteIds));
List<DsProcessVO> processList = compilationCompleted.getProcessList();
List<Long> processDeleteIds = compilationCompleted.getProcessDeleteIds();
List<Long> projectDeleteIds = compilationCompleted.getProjectDeleteIds();
return R.status(dsTaskingService.authorizedAccomplish(craft,processList,processDeleteIds,projectDeleteIds));
}

@ -0,0 +1,40 @@
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.IDsBatchPreservePlanService;
import org.springblade.desk.dashboard.service.IDsPartRelationService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author liweidong
*/
@RestController
@Hidden()
public class BatchPreservePlanClient implements IBatchPreservePlanClient {
@Resource
private IDsBatchPreservePlanService batchPreservePlanService;
@Override
public void createPlanClassTask() {
batchPreservePlanService.createPlanClassTask();
}
@Override
public void createPeriodicalClassTask() {
batchPreservePlanService.createPeriodicalClassTask();
}
@Override
public void createAccumulateClassTask() {
batchPreservePlanService.createAccumulateClassTask();
}
}

@ -0,0 +1,25 @@
package org.springblade.desk.dashboard.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.dashboard.service.IDsBatchPreservePlanService;
import org.springblade.desk.dashboard.service.IDsTaskBillService;
import org.springframework.web.bind.annotation.RestController;
/**
* @author liweidong
*/
@RestController
@Hidden()
public class DsTaskBillClient implements IDsTaskBillClient {
@Resource
private IDsTaskBillService taskBillService;
@Override
public void createCraSpecTask() {
taskBillService.createCraSpecTask();
}
}

@ -6,6 +6,7 @@ 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.quality.feign.ILquidTankTaskClient;
import org.springblade.desk.quality.service.ILiquidTankTaskService;
import org.springframework.web.bind.annotation.RestController;
@ -22,6 +23,9 @@ public class PartClient implements IPartClient {
@Resource
private IDsPartRelationService partRelationService;
@Resource
private IDsTaskingService taskingService;
@Override
public DsPartEntity getPart(String partCode,String version) {
return partService.selectDsPartByPatCodeAndVersion(partCode,version);
@ -36,5 +40,10 @@ public class PartClient implements IPartClient {
public List<DsPartEntity> batchParts(List<Long> ids) {
return partService.selectDsPartByIds(ids);
}
@Override
public void reworkTask() {
taskingService.reworkTask();
}
}

@ -0,0 +1,50 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.dashboard.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.dashboard.excel.DsProcessProjectExcel;
import org.springblade.desk.dashboard.pojo.entity.DsModelProjectEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity;
import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
import java.util.List;
/**
*
* @author BladeX
* @since 2025-11-12
*/
public interface DsModelProjectMapper extends BaseMapper<DsModelProjectEntity> {
List<DsModelProjectEntity> selectByDetailId(@Param("detailId") Long detailId);
List<DsModelProjectEntity> selectByDetailIds(@Param("detailIds") List<Long> detailIds);
}

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.dashboard.mapper.DsModelProjectMapper">
<!-- 通用查询映射结果 -->
<resultMap id="dsProcessProjectResultMap" type="org.springblade.desk.dashboard.pojo.entity.DsModelProjectEntity">
<result column="ID" property="id"/>
<result column="MODEL_DETAIL_ID" property="modelDetailId"/>
<result column="PROJECT_CODE" property="projectCode"/>
<result column="PROJECT_NAME" property="projectName"/>
<result column="PROJECT_STANDARD" property="projectStandard"/>
<result column="PROJECT_STANDARD_NAME" property="projectStandardName"/>
<result column="PRO_HOURS" property="proHours"/>
<result column="PREPARE_HOURS" property="prepareHours"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="REMARKS" property="remarks"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
<result column="TRIAL_NO" property="trialNo"/>
</resultMap>
<select id="selectByDetailId" resultType="org.springblade.desk.dashboard.pojo.entity.DsModelProjectEntity">
select * from where IS_DELETED = 0 and MODEL_DETAIL_ID = #{detailId}
</select>
<select id="selectByDetailIds"
resultType="org.springblade.desk.dashboard.pojo.entity.DsModelProjectEntity">
select * from DS_MODEL_PROJECT where IS_DELETED = 0 and MODEL_DETAIL_ID in
<foreach collection="detailIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
</mapper>

@ -126,6 +126,7 @@
<result column="PF_STATUS" property="pfStatus"/>
<result column="PF_STATUS" property="pfStatus"/>
<result column="PART_VERSION" property="partVersion"/>
<result column="IS_ELECTROPLATING" property="isElectroplating"/>
</resultMap>
<update id="updateNextDueByIds">

@ -22,6 +22,8 @@
<result column="REMARKS" property="remarks"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
<result column="PPS_ID" property="ppsId"/>
<result column="CA_ID" property="caId"/>
</resultMap>
<update id="deleteDetailByModelIds">
UPDATE DS_PRO_DETAIL

@ -23,6 +23,8 @@
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
<result column="TRIAL_NO" property="trialNo"/>
<result column="PPS_ID" property="ppsId"/>
<result column="CA_ID" property="caId"/>
</resultMap>

@ -169,4 +169,11 @@ public interface IDsCraftService extends BaseService<DsCraftEntity> {
* @return
*/
DsCraftEntity getCraft(String partCode, String roamNo, String prodIdent, Integer priority, Integer rank, String partVersions);
/**
* 一键删除
* @param id
* @return
*/
boolean craftBatchRemoval(String id);
}

@ -0,0 +1,61 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.dashboard.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.excel.DsProcessProjectExcel;
import org.springblade.desk.dashboard.pojo.entity.DsModelProjectEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity;
import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
import java.util.List;
/**
* 工序项目信息表 服务类
*
* @author BladeX
* @since 2025-11-12
*/
public interface IDsModelProjectService extends BaseService<DsModelProjectEntity> {
/**
* 根据模版明细ID查询
* @param detailId
* @return
*/
List<DsModelProjectEntity> selectByDetailId(Long detailId);
/**
* 批量查询
* @param detailIds
* @return
*/
List<DsModelProjectEntity> selectByDetailIds(List<Long> detailIds);
}

@ -66,7 +66,7 @@ public interface IDsProModelService extends BaseService<DsProModelEntity> {
* @param detailListVO
* @return
*/
boolean saveDsProModel(DsProModelDetailListVO detailListVO);
boolean submit(DsProModelDetailListVO detailListVO);
/**
* 工艺模版详情

@ -85,8 +85,9 @@ public interface IDsProcessService extends BaseService<DsProcessEntity> {
* 新增修改工序信息
* @param craft
* @param processList
* @param deleteIds
* @param processDeleteIds
* @param projectDeleteIds
* @return
*/
boolean addOrEdit(DsCraftEntity craft, List<DsProcessEntity> processList, List<Long> deleteIds);
boolean addOrEdit(DsCraftEntity craft, List<DsProcessVO> processList, List<Long> processDeleteIds, List<Long> projectDeleteIds);
}

@ -28,13 +28,10 @@ package org.springblade.desk.dashboard.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.desk.dashboard.pojo.dto.DsTaskingDTO;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.pojo.vo.DsPartAuthorizedVO;
import org.springblade.desk.dashboard.pojo.vo.DsPartSynthesisVO;
import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO;
import org.springblade.desk.dashboard.pojo.vo.*;
import org.springblade.desk.dashboard.excel.DsTaskingExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
import java.util.List;
@ -156,10 +153,11 @@ public interface IDsTaskingService extends BaseService<DsTaskingEntity> {
* 工艺编制 完成
* @param craft 工艺
* @param processList 工序
* @param deleteIds 删除ID
* @return
* @param processDeleteIds
* @param projectDeleteIds 删除ID
* @return
*/
boolean authorizedAccomplish( DsCraftEntity craft, List<DsProcessEntity> processList, List<Long> deleteIds);
boolean authorizedAccomplish(DsCraftEntity craft, List<DsProcessVO> processList, List<Long> processDeleteIds, List<Long> projectDeleteIds);
/**
* 任务处理 编制 项目保存

@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
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;
@ -43,6 +44,7 @@ import org.springblade.desk.dashboard.pojo.vo.DsProcessSynthesisVO;
import org.springblade.desk.dashboard.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@ -70,6 +72,9 @@ public class DsCraftServiceImpl extends BaseServiceImpl<DsCraftMapper, DsCraftEn
@Autowired
IDsPartVersionService partVersionService;
@Autowired
DsCraftMapper craftMapper;
@Override
public IPage<DsCraftVO> selectDsCraftPage(IPage<DsCraftVO> page, DsCraftVO dsCraft) {
@ -248,4 +253,91 @@ public class DsCraftServiceImpl extends BaseServiceImpl<DsCraftMapper, DsCraftEn
// todo 如何查询工艺未确定
return null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean craftBatchRemoval(String id) {
if (StringUtils.isBlank(id)) {
throw new ServiceException("工艺ID不能为空");
}
Long craftId;
try {
craftId = Long.valueOf(id);
} catch (NumberFormatException e) {
throw new ServiceException("工艺ID格式错误: " + id);
}
//验证工艺是否存在
DsCraftEntity craftEntity = craftMapper.selectById(craftId);
if (craftEntity == null) {
throw new ServiceException("工艺信息不存在");
}
//查询工序
List<DsProcessEntity> processEntities = processService.selectDsProcessByCraftId(craftId);
if (processEntities.isEmpty()) {
return true;
}
List<Long> processIdList = processEntities.stream()
.map(DsProcessEntity::getId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
//查询
List<Object> allResults = batchQueryAssociations(processIdList);
@SuppressWarnings("unchecked")
List<DsProcessProjectEntity> processProjectEntities = (List<DsProcessProjectEntity>) allResults.get(0);
@SuppressWarnings("unchecked")
List<DsProcessMeasuringToolEntity> processMeasuringToolEntities = (List<DsProcessMeasuringToolEntity>) allResults.get(1);
@SuppressWarnings("unchecked")
List<DsProcessMoldToolEntity> processMoldToolEntities = (List<DsProcessMoldToolEntity>) allResults.get(2);
//按正确顺序删除
// 项目
if (!processProjectEntities.isEmpty()) {
List<Long> processProjectIdList = processProjectEntities.stream()
.map(DsProcessProjectEntity::getId)
.collect(Collectors.toList());
processProjectService.deleteLogic(processProjectIdList);
}
// 量具
if (!processMeasuringToolEntities.isEmpty()) {
List<Long> processMeasuringToolIdList = processMeasuringToolEntities.stream()
.map(DsProcessMeasuringToolEntity::getId)
.collect(Collectors.toList());
processMeasuringToolService.deleteLogic(processMeasuringToolIdList);
}
// 工装模具
if (!processMoldToolEntities.isEmpty()) {
List<Long> processMoldToolIdList = processMoldToolEntities.stream()
.map(DsProcessMoldToolEntity::getId)
.collect(Collectors.toList());
processMoldToolService.deleteLogic(processMoldToolIdList);
}
// 最后删除工序
processService.deleteLogic(processIdList);
return true;
}
/**
* 批量查询关联数据
*/
private List<Object> batchQueryAssociations(List<Long> processIds) {
List<Object> results = new ArrayList<>();
results.add(processProjectService.selectDsProcessProjectByProcessIds(processIds));
results.add(processMeasuringToolService.selectDsProcessMeasuringToolByProcessIds(processIds));
results.add(processMoldToolService.selectDsProcessMoldToolByProcessIds(processIds));
return results;
}
}

@ -0,0 +1,68 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.dashboard.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.excel.DsProcessProjectExcel;
import org.springblade.desk.dashboard.mapper.DsModelProjectMapper;
import org.springblade.desk.dashboard.mapper.DsProcessProjectMapper;
import org.springblade.desk.dashboard.pojo.entity.DsModelProjectEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity;
import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
import org.springblade.desk.dashboard.service.IDsModelProjectService;
import org.springblade.desk.dashboard.service.IDsProcessProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
* 工序项目信息表 服务实现类
*
* @author BladeX
* @since 2025-11-12
*/
@Service
public class DsModelProjectServiceImpl extends BaseServiceImpl<DsModelProjectMapper, DsModelProjectEntity> implements IDsModelProjectService {
@Autowired
DsModelProjectMapper modelProjectMapper;
@Override
public List<DsModelProjectEntity> selectByDetailId(Long detailId) {
return modelProjectMapper.selectByDetailId(detailId);
}
@Override
public List<DsModelProjectEntity> selectByDetailIds(List<Long> detailIds) {
return modelProjectMapper.selectByDetailIds(detailIds);
}
}

@ -20,6 +20,7 @@ import org.springblade.erpdata.feign.IErpDataPartClient;
import org.springblade.erpdata.feign.IErpDataSearchClient;
import org.springblade.erpdata.pojo.dto.AllocationDTO;
import org.springblade.system.feign.IUserClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -114,6 +115,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
List<DsPartVO> dsPartVOS = baseMapper.selectDsPartPage(page, dsPart);
if(!CollectionUtils.isEmpty(dsPartVOS)){
for (DsPartVO dsPartVO : dsPartVOS) {
dsPartVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVO.getUpdateUser())).getData().getUser().getName());
String isSintering = dsPartVO.getIsSintering();
if(TaskingConstant.IS_SINTERING.equals(isSintering)){
//查询子件信息
@ -122,6 +124,9 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
List<Long> idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(idList)){
List<DsPartVersionVO> dsPartEntityList = dsPartMapper.selectDsPartVersionByIds(idList);
for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) {
dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName());
}
dsPartVO.setChildren(dsPartEntityList);
}
}
@ -390,7 +395,24 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
.collect(Collectors.toList());
List<DsPartEntity> dsPartEntityList = dsPartMapper.selectDsPartByIds(idList);
dsPartSynthesisVO.setDsPartEntities(dsPartEntityList);
List<DsPartVO> 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.setDsPartEntity(partEntity);

@ -27,27 +27,28 @@ package org.springblade.desk.dashboard.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.entity.BsPlatingTypeEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProModelEntity;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.pojo.vo.DsModelAndDetailVO;
import org.springblade.desk.dashboard.pojo.vo.DsProDetailVO;
import org.springblade.desk.dashboard.pojo.vo.DsProModelDetailListVO;
import org.springblade.desk.dashboard.pojo.vo.DsProModelVO;
import org.springblade.desk.dashboard.excel.DsProModelExcel;
import org.springblade.desk.dashboard.mapper.DsProModelMapper;
import org.springblade.desk.dashboard.service.IBsPlatingTypeService;
import org.springblade.desk.dashboard.service.IDsProDetailService;
import org.springblade.desk.dashboard.service.IDsProModelService;
import org.springblade.desk.dashboard.service.*;
import org.springblade.system.feign.IUserClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* 工艺模版 服务实现类
@ -67,6 +68,15 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP
@Autowired
IDsProDetailService proDetailService;
@Autowired
IDsProcessProjectService processProjectService;
@Autowired
IDsModelProjectService modelProjectService;
@Autowired
IUserClient userClient;
@Override
public IPage<DsProModelVO> selectDsProModelPage(IPage<DsProModelVO> page, DsProModelVO dsProModel) {
List<DsProModelVO> DsProModelVO = baseMapper.selectDsProModelPage(page, dsProModel);
@ -74,6 +84,9 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP
if(null != dsProModelVO.getPlatingType()){
BsPlatingTypeEntity platingTypeEntity = platingTypeService.getById(dsProModelVO.getPlatingType());
dsProModelVO.setPlatingTypeStr(platingTypeEntity.getPlateType());
dsProModelVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsProModelVO.getUpdateUser())).getData().getUser().getName());
}
List<DsProDetailEntity> dsProDetailEntityList = proDetailService.selectDsProDetailByModelId(dsProModelVO.getId());
dsProModelVO.setProcessNum((long)dsProDetailEntityList.size());
@ -92,8 +105,10 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP
return dsProModelList;
}
@Override
public boolean saveDsProModel(DsProModelDetailListVO detailListVO) {
@Transactional(rollbackFor = Exception.class)
public boolean submit(DsProModelDetailListVO detailListVO) {
if(null == detailListVO){
throw new ServiceException("数据不能为空");
}
@ -105,13 +120,13 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP
promodel.setProcessNum((long) detailListVO.getTableData().size());
// 保存或更新模版
if(null != promodel.getId()){
boolean updateProModel = updateById(promodel);
if(!updateProModel){
throw new ServiceException("工艺模版修改失败");
}
}else {
//新增模版
boolean save = save(promodel);
if(!save){
throw new ServiceException("工艺模版新增失败");
@ -119,34 +134,125 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP
}
Long modelId = promodel.getId();
List<DsProDetailEntity> prodetailList = detailListVO.getTableData();
for (DsProDetailEntity tableDatum : prodetailList) {
if(null == tableDatum.getId()){
tableDatum.setModelId(modelId);
boolean saveBatch = proDetailService.save(tableDatum);
List<DsProDetailVO> prodetailList = detailListVO.getTableData();
if(!CollectionUtils.isEmpty(detailListVO.getModelProjectIdList())){
modelProjectService.deleteLogic(detailListVO.getModelProjectIdList());
}
if(!CollectionUtils.isEmpty(detailListVO.getDetailIdList())){
proDetailService.deleteLogic(detailListVO.getDetailIdList());
}
List<DsModelProjectEntity> allProjectsToSave = new ArrayList<>();
List<DsModelProjectEntity> allProjectsToUpdate = new ArrayList<>();
for (DsProDetailVO dsProDetailVO : prodetailList) {
if(null == dsProDetailVO.getId()){
// 新增明细
dsProDetailVO.setModelId(modelId);
boolean saveBatch = proDetailService.save(dsProDetailVO);
if(!saveBatch){
throw new ServiceException("工艺模版明细新增失败");
}
// 处理项目
List<DsModelProjectEntity> modelProjectList = dsProDetailVO.getModelProjectList();
if (CollectionUtils.isNotEmpty(modelProjectList)) {
Long detailId = dsProDetailVO.getId();
modelProjectList.forEach(project -> project.setModelDetailId(detailId));
allProjectsToSave.addAll(modelProjectList);
}
}else {
boolean update = proDetailService.updateById(tableDatum);
// 更新明细
boolean update = proDetailService.updateById(dsProDetailVO);
if(!update){
throw new ServiceException("工艺模版明细修改失败");
}
// 处理项目
List<DsModelProjectEntity> modelProjectList = dsProDetailVO.getModelProjectList();
if (CollectionUtils.isNotEmpty(modelProjectList)) {
Long detailId = dsProDetailVO.getId();
for (DsModelProjectEntity dsModelProjectEntity : modelProjectList) {
dsModelProjectEntity.setModelDetailId(detailId);
if(null == dsModelProjectEntity.getId()){
allProjectsToSave.add(dsModelProjectEntity);
}else {
allProjectsToUpdate.add(dsModelProjectEntity);
}
}
}
}
}
if (!allProjectsToSave.isEmpty()) {
boolean saveBatch1 = modelProjectService.saveBatch(allProjectsToSave);
if(!saveBatch1){
throw new ServiceException("工艺模版项目新增失败");
}
}
if (!allProjectsToUpdate.isEmpty()) {
boolean updateBatch = modelProjectService.updateBatchById(allProjectsToUpdate);
if(!updateBatch){
throw new ServiceException("工艺模版项目更新失败");
}
}
return true;
}
@Override
public DsModelAndDetailVO detail(Long id) {
// 工艺模版
DsProModelEntity dsProModelEntity = proModelMapper.selectById(id);
if (dsProModelEntity == null) {
throw new ServiceException("工艺模版不存在");
}
// 工艺模版明细
List<DsProDetailEntity> dsProDetailEntityList = proDetailService.selectDsProDetailByModelId(id);
//转换
List<DsProDetailVO> proDetailVOS = dsProDetailEntityList.stream()
.map(entity -> {
DsProDetailVO vo = new DsProDetailVO();
BeanUtils.copyProperties(entity, vo);
vo.setPpsIdStr(entity.getPpsId() != null ? entity.getPpsId().toString() : null);
vo.setCaIdStr(entity.getCaId() != null ? entity.getCaId().toString() : null);
return vo;
})
.collect(Collectors.toList());
if (!proDetailVOS.isEmpty()) {
List<Long> detailIds = proDetailVOS.stream()
.map(DsProDetailVO::getId)
.collect(Collectors.toList());
// 批量查询
List<DsModelProjectEntity> allProjects = modelProjectService.selectByDetailIds(detailIds);
//按detailId分组
Map<Long, List<DsModelProjectEntity>> projectMap = allProjects.stream()
.collect(Collectors.groupingBy(DsModelProjectEntity::getModelDetailId));
// 设置到VO
proDetailVOS.forEach(vo -> {
List<DsModelProjectEntity> projects = projectMap.get(vo.getId());
vo.setModelProjectList(projects != null ? projects : Collections.emptyList());
});
}
DsModelAndDetailVO dsModelAndDetailVO = new DsModelAndDetailVO();
dsModelAndDetailVO.setDsProModelEntity(dsProModelEntity);
dsModelAndDetailVO.setDsProDetailEntityList(dsProDetailEntityList);
dsModelAndDetailVO.setProDetailVOList(proDetailVOS);
return dsModelAndDetailVO;
}
@ -163,34 +269,34 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP
@Override
public boolean update(JSONObject data) {
if(null == data){
throw new ServiceException("数据不能为空");
}
DsProModelDetailListVO dsProModelDetailListVO = JSONObject.toJavaObject(data, DsProModelDetailListVO.class);
DsProModelEntity entity = new DsProModelEntity();
BeanUtils.copyProperties(dsProModelDetailListVO, entity);
entity.setProcessNum((long) dsProModelDetailListVO.getTableData().size());
//修改模版
boolean update = updateById(entity);
if(!update){
throw new ServiceException("工艺模版修改失败");
}
Long modelId = entity.getId();
List<DsProDetailEntity> tableData = dsProModelDetailListVO.getTableData();
for (DsProDetailEntity tableDatum : tableData) {
tableDatum.setModelId(modelId);
}
//删除原模版数据
boolean delete = proDetailService.deleteDetailByModelId(modelId);
if(!delete){
throw new ServiceException("工艺模版明细修改失败");
}
boolean saveBatch = proDetailService.saveBatch(tableData);
if(!saveBatch){
throw new ServiceException("工艺模版明细修改失败");
}
// if(null == data){
// throw new ServiceException("数据不能为空");
// }
// DsProModelDetailListVO dsProModelDetailListVO = JSONObject.toJavaObject(data, DsProModelDetailListVO.class);
// DsProModelEntity entity = new DsProModelEntity();
// BeanUtils.copyProperties(dsProModelDetailListVO, entity);
// entity.setProcessNum((long) dsProModelDetailListVO.getTableData().size());
// //修改模版
// boolean update = updateById(entity);
// if(!update){
// throw new ServiceException("工艺模版修改失败");
// }
//
// Long modelId = entity.getId();
//
// List<DsProDetailEntity> tableData = dsProModelDetailListVO.getTableData();
// for (DsProDetailEntity tableDatum : tableData) {
// tableDatum.setModelId(modelId);
// }
// //删除原模版数据
// boolean delete = proDetailService.deleteDetailByModelId(modelId);
// if(!delete){
// throw new ServiceException("工艺模版明细修改失败");
// }
// boolean saveBatch = proDetailService.saveBatch(tableData);
// if(!saveBatch){
// throw new ServiceException("工艺模版明细修改失败");
// }
return true;
}

@ -25,8 +25,8 @@
*/
package org.springblade.desk.dashboard.service.impl;
import com.baomidou.mybatisplus.core.injector.methods.DeleteByIds;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
import org.springblade.desk.dashboard.pojo.vo.DsProcessSynthesisVO;
import org.springblade.desk.dashboard.pojo.vo.DsProcessVO;
import org.springblade.desk.dashboard.excel.DsProcessExcel;
@ -116,9 +116,9 @@ public class DsProcessServiceImpl extends BaseServiceImpl<DsProcessMapper, DsPro
}
@Override
public boolean addOrEdit(DsCraftEntity craft, List<DsProcessEntity> processList, List<Long> deleteIds) {
public boolean addOrEdit(DsCraftEntity craft, List<DsProcessVO> processList, List<Long> processDeleteIds, List<Long> projectDeleteIds) {
if(!CollectionUtils.isEmpty(processList)){
for (DsProcessEntity process : processList) {
for (DsProcessVO process : processList) {
if (null != process.getId() ) {
DsCraftEntity craftEntity = craftService.getById(process.getCraftId());
DsPartEntity partEntity = partService.getById(craftEntity.getPartId());
@ -137,10 +137,25 @@ public class DsProcessServiceImpl extends BaseServiceImpl<DsProcessMapper, DsPro
process.setCraftId(craft.getId());
save(process);
}
List<DsProcessProjectVO> processProjectList = process.getProcessProjectList();
if(!CollectionUtils.isEmpty(processProjectList)){
for (DsProcessProjectVO dsProcessProjectVO : processProjectList) {
if(null == dsProcessProjectVO.getId()){
dsProcessProjectVO.setProcessId(process.getId());
boolean save = processProjectService.save(dsProcessProjectVO);
}else {
boolean update = processProjectService.updateById(dsProcessProjectVO);
}
}
}
}
}
if(!CollectionUtils.isEmpty(deleteIds)){
deleteLogic(deleteIds);
if(!CollectionUtils.isEmpty(processDeleteIds)){
deleteLogic(processDeleteIds);
}
if(!CollectionUtils.isEmpty(projectDeleteIds)){
processProjectService.deleteLogic(projectDeleteIds);
}
return true;
}

@ -43,7 +43,6 @@ import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springblade.erpdata.feign.IErpDataPartClient;
import org.springblade.erpdata.feign.IErpDataReworkTaskClient;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
@ -584,7 +583,24 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
.collect(Collectors.toList());
if(!CollectionUtils.isEmpty(idList)){
List<DsPartEntity> dsPartEntityList = partService.selectDsPartByIds(idList);
dsPartSynthesisVO.setDsPartEntities(dsPartEntityList);
List<DsPartVO> 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.setDsPartEntity(partEntity);
@ -754,12 +770,12 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
@Override
public boolean authorizedAccomplish( DsCraftEntity craft, List<DsProcessEntity> processList, List<Long> deleteIds) {
public boolean authorizedAccomplish(DsCraftEntity craft, List<DsProcessVO> processList, List<Long> processDeleteIds, List<Long> projectIds) {
//工艺
craftService.addOrEdit(craft);
//工序
processService.addOrEdit(craft,processList,deleteIds);
processService.addOrEdit(craft,processList,processDeleteIds,projectIds);
return true;
}
@ -1072,15 +1088,15 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
//删除返工项目
if(!CollectionUtils.isEmpty(processProjectDeleteIds)){
reworkProcessService.deleteLogic(processProjectDeleteIds);
processProjectService.deleteLogic(processProjectDeleteIds);
}
//删除返工量具
if(!CollectionUtils.isEmpty(processMeasuringToolDeleteIds)){
reworkProcessService.deleteLogic(processMeasuringToolDeleteIds);
processMeasuringToolService.deleteLogic(processMeasuringToolDeleteIds);
}
//删除返工量具
if(!CollectionUtils.isEmpty(processMoldToolDeleteIds)){
reworkProcessService.deleteLogic(processMoldToolDeleteIds);
processMoldToolService.deleteLogic(processMoldToolDeleteIds);
}
return true;

Loading…
Cancel
Save