Merge branch 'develop-QA'

develop-QA
Tom Li 3 months ago
commit 00171c4436
  1. 25
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/CycleTestTaskGenOneTimeProcessor.java
  2. 17
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/constant/FormulaAviatorConst.java
  3. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/constant/FormulaConst.java
  4. 11
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/PlatingVO.java
  5. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/constant/InspectionTaskConst.java
  6. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/ICycleTestTaskClient.java
  7. 17
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/ILquidTankTaskClient.java
  8. 10
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/CycleTestTask.java
  9. 9
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java
  10. 14
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/CycleTestSearch.java
  11. 13
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/CycleTestTaskSearch.java
  12. 17
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/JobExt.java
  13. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/CycleTestTaskVO.java
  14. 36
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/CycleTestVO.java
  15. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskDetailVO.java
  16. 31
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/LiquidTankReportDetailVO.java
  17. 9
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/LiquidTankReportVO.java
  18. 8
      blade-service/blade-desk/pom.xml
  19. 29
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/aviator/config/AviatorConfig.java
  20. 46
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/aviator/func/CustomFunctionRegistry.java
  21. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/aviator/service/AviatorService.java
  22. 60
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/AviatorController.java
  23. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java
  24. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java
  25. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java
  26. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java
  27. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java
  28. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java
  29. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java
  30. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/AuditFileController.java
  31. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/CycleTestController.java
  32. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/CycleTestItemController.java
  33. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/CycleTestTaskController.java
  34. 309
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankReportController.java
  35. 234
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/CycleTestExcel.java
  36. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/CycleTestItemExcel.java
  37. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/CycleTestTaskExcel.java
  38. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/CycleTestTaskClient.java
  39. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/LiquidTankTaskClient.java
  40. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/CycleTestItemMapper.xml
  41. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/CycleTestMapper.java
  42. 76
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/CycleTestMapper.xml
  43. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/CycleTestTaskMapper.xml
  44. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java
  45. 45
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestService2.java
  46. 29
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestTaskService2.java
  47. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ICycleTestService.java
  48. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankReportService.java
  49. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankTaskCopyService.java
  50. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankTaskService.java
  51. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IRelTankReportItemService.java
  52. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/CycleTestServiceImpl.java
  53. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  54. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankReportServiceImpl.java
  55. 34
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskCopyServiceImpl.java
  56. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskServiceImpl.java
  57. 41
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/JobExtUtil.java
  58. 37
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/LiquidTankReportDetailWrapper.java

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

@ -0,0 +1,17 @@
package org.springblade.desk.basic.constant;
public interface FormulaAviatorConst {
/**
* 添加点
*/
String ADD = "add";
/**
* 测量值
*/
String TEST = "test";
/**
* 体积
*/
String VOL = "vol";
}

@ -5,9 +5,9 @@ public interface FormulaConst {
/**
*
*/
final Integer TYPE_1 = 1;
Integer TYPE_1 = 1;
/**
*
*/
final Integer TYPE_2 = 2;
Integer TYPE_2 = 2;
}

@ -3,6 +3,7 @@
*/
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.Plating;
@ -21,4 +22,14 @@ public class PlatingVO extends Plating {
@Serial
private static final long serialVersionUID = 1L;
/**
* [镀种分类]Name
*/
@Schema(description = "[镀种分类]Name")
private Long bcName;
/**
* [镀种小类]Name
*/
@Schema(description = "[镀种小类]Name")
private Long subClassName;
}

@ -6,7 +6,6 @@ public interface InspectionTaskConst {
* 热表
*/
Integer FROM_TYPE_RB = 1;
/**
* 烧结
*/
@ -28,4 +27,9 @@ public interface InspectionTaskConst {
* NA
*/
Integer CHECK_RESULT_NA = 3;
/**
* 烧结包装防护
*/
String PROCESS_NAME_SJBZFH = "烧结包装防护";
}

@ -13,8 +13,6 @@ public interface ICycleTestTaskClient {
String GENERATE_AUTO = API_PREFIX + "/generate-auto";
String GENERATE_ONE_TIME = API_PREFIX + "/generate-one-time";
String CHECK_REMIND = API_PREFIX + "/check-redmind";
String CHECK_OUT = API_PREFIX + "/check-out";
@ -22,9 +20,6 @@ public interface ICycleTestTaskClient {
@GetMapping(GENERATE_AUTO)
void generateAuto();
@GetMapping(GENERATE_ONE_TIME)
void generateOneTime();
@GetMapping(CHECK_REMIND)
void checkRemind();

@ -13,13 +13,18 @@ public interface ILquidTankTaskClient {
String API_PREFIX = "/feign/client/qa/lquid-tank-task";
String GENERATE = API_PREFIX + "/generate";
String GENERATE_AUTO = API_PREFIX + "/generate-auto";
String TIMEOUT = API_PREFIX + "/timeout";
String CHECK_REMIND = API_PREFIX + "/check-redmind";
@GetMapping(GENERATE)
public List generate();
String CHECK_OUT = API_PREFIX + "/check-out";
@GetMapping(TIMEOUT)
public List timeout();
@GetMapping(GENERATE_AUTO)
void generateAuto();
@GetMapping(CHECK_REMIND)
void checkRemind();
@GetMapping(CHECK_OUT)
void checkOut();
}

@ -309,4 +309,14 @@ public class CycleTestTask extends BaseEntity {
*/
@Schema(description = "超期原因")
private String reasonForOut;
/**
* 临期天数
*/
@Schema(description = "临期天数")
private Integer dayToPlanedFinish;
/**
* 超期天数
*/
@Schema(description = "超期天数")
private Integer dayToOut;
}

@ -167,6 +167,10 @@ public class InspectionTask extends BaseEntity {
* 接收日期
*/
public static final String COL_RECEIVE_DATE = "RECEIVE_DATE";
/**
* [工序]名称
*/
public static final String COL_PROCESS_NAME = "PROCESS_NAME";
/**
* [检验任务]编码
@ -343,4 +347,9 @@ public class InspectionTask extends BaseEntity {
*/
@Schema(description = "接收日期")
private LocalDateTime receiveDate;
/**
* 工序名称
*/
@Schema(description = "工序名称")
private String processName;
}

@ -0,0 +1,14 @@
package org.springblade.desk.quality.pojo.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springblade.desk.quality.pojo.entity.CycleTest;
import org.springblade.desk.quality.pojo.vo.CycleTestVO;
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class CycleTestSearch extends CycleTestVO {
}

@ -30,7 +30,6 @@ public class CycleTestTaskSearch extends CycleTestTask {
private Date createTimeEnd;
@Schema(description = "状态数组")
private List<Integer> statusList;
/**
* [周期试验项目]名称
*/
@ -63,6 +62,18 @@ public class CycleTestTaskSearch extends CycleTestTask {
@JsonDeserialize(using = LocalDateTimeEndOfDayDeserializer.class)
@Schema(description = "一次性任务生成日期-结束")
private LocalDateTime oneTimeGenDateEnd;
/**
* 一次性任务生成日期-开始
*/
@JsonDeserialize(using = DateBeginOfDayDeserializer.class)
@Schema(description = "生成日期-开始")
private Date genDatetimeStart;
/**
* 一次性任务生成日期-结束
*/
@JsonDeserialize(using = DateEndOfDayDeserializer.class)
@Schema(description = "生成日期-结束")
private Date genDatetimeEnd;
/**
* 下发时间-开始
*/

@ -2,17 +2,28 @@ package org.springblade.desk.quality.pojo.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Data
@EqualsAndHashCode
@ToString
public class JobExt {
/**
*
*/
public static final Integer WEEK = 1;
/**
*
*/
public static final Integer MONTH = 2;
/**
*
*/
public static final Integer YEAR = 3;
/**
* 自定义CRON
*/
public static final Integer CUSTOM = 4;
/**

@ -3,10 +3,12 @@
*/
package org.springblade.desk.quality.pojo.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.quality.pojo.entity.CycleTestTask;
import org.springblade.desk.util.json.serializer.IntegerAllToStringSerializer;
import java.io.Serial;
import java.time.LocalDateTime;
@ -61,8 +63,9 @@ public class CycleTestTaskVO extends CycleTestTask {
/**
* 临期天数
*/
@JsonSerialize(using = IntegerAllToStringSerializer.class)
@Schema(description = "临期天数")
private String countDayToPlanedFinish;
private Integer countDayToPlanedFinish;
/**
* 填报[附件]附件地址
*/

@ -6,6 +6,7 @@ package org.springblade.desk.quality.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springblade.desk.quality.pojo.entity.CycleTest;
import java.io.Serial;
@ -18,61 +19,34 @@ import java.io.Serial;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class CycleTestVO extends CycleTest {
@Serial
private static final long serialVersionUID = 1L;
/**
* [周期试验项目]名称
*/
@Schema(description = "[周期试验项目]名称")
private String cycleTestItemName;
/**
* [周期试验项目]试验条件
*/
@Schema(description = "[周期试验项目]试验条件")
private String cycleTestItemCondition;
/**
* [周期试验标准]id
*/
@Schema(description = "[周期试验标准]id")
private Long cycleTestStandardId;
/**
* [周期试验标准]名称
*/
@Schema(description = "[周期试验标准]名称")
private String cycleTestStandardName;
/**
* [周期试验标准][附件]id
*/
@Schema(description = "[周期试验标准][附件]id")
private Long cycleTestStandardAttachId;
/**
* 工艺员[用户]姓名
*/
@Schema(description = "工艺员[用户]姓名")
private String processUserName;
/**
* 试验技术员[用户]姓名
*/
@Schema(description = "试验技术员[用户]姓名")
private String testUserName;
/**
* 更新[用户]姓名
*/
@Schema(description = "更新[用户]姓名")
private String updateUserName;
/**
* 试验件类型 名称
*/
@Schema(description = "试验件类型 名称")
private String testTypeName;
/**
* [周期试验标准]
*/
@Schema(description = "standard")
@Schema(description = "[周期试验标准]")
private CycleTestStandardVO standard;
@Schema(description = "[镀种]多个名称")
private String plateNames;
@Schema(description = "试验周期")
private String jobExtShowText;
}

@ -28,12 +28,6 @@ public class InspectionTaskDetailVO extends InspectionTask {
@Serial
private static final long serialVersionUID = 1L;
/**
* todo:
*/
@Schema(description = "工序名称")
private String processName = "工序名称A";
private InspectionTaskListVO orderInfo;
private List<RemindMsg> remindMsgList;

@ -0,0 +1,31 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.quality.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.quality.pojo.entity.LiquidTankReport;
import org.springblade.desk.quality.pojo.entity.LiquidTankTaskCopy;
import java.io.Serial;
import java.util.List;
/**
* [槽液报告] 视图实体类
*
* @author Tom Shuo
* @since 2025-12-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class LiquidTankReportDetailVO extends LiquidTankReport {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "维护人")
private String updateUserRealName;
@Schema(description = "复制槽液任务列表")
private List<LiquidTankTaskCopyVO> copyList;
}

@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
import org.springblade.desk.quality.pojo.entity.LiquidTankReport;
import java.io.Serial;
import java.util.List;
/**
* [槽液报告] 视图实体类
@ -19,9 +20,9 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class LiquidTankReportVO extends LiquidTankReport {
@Serial
private static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "维护人")
private String updateUserRealName;
@Schema(description = "维护人")
private String updateUserRealName;
}

@ -110,6 +110,14 @@
<groupId>org.springblade</groupId>
<artifactId>blade-scheduling-api</artifactId>
</dependency>
<!-- Source: https://mvnrepository.com/artifact/com.googlecode.aviator/aviator -->
<!-- SpringBoot 3 + JDK 17 项目必须使用Aviator 5.3.0 及以上版本,低版本存在兼容性和功能限制 -->
<!-- Aviator表达式引擎核心依赖 -->
<dependency>
<groupId>com.googlecode.aviator</groupId>
<artifactId>aviator</artifactId>
<version>5.4.3</version>
</dependency>
</dependencies>
<build>

@ -0,0 +1,29 @@
package org.springblade.desk.basic.aviator.config;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
import com.googlecode.aviator.Options;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AviatorConfig {
@Bean
public AviatorEvaluatorInstance aviatorEvaluatorInstance() {
AviatorEvaluatorInstance instance = AviatorEvaluator.newInstance();
// 核心配置项
instance.setOption(Options.USE_USER_ENV_AS_TOP_ENV_DIRECTLY, true); // 环境变量透传
// instance.setOption(Options.MAX_CACHE_SIZE, 2000); // 表达式缓存大小
instance.setOption(Options.TRACE_EVAL, false); // 生产环境关闭追踪
// JDK17+ 优化配置
instance.setOption(Options.OPTIMIZE_LEVEL, AviatorEvaluator.EVAL); // 优化级别
// 开启表达式缓存,提升性能
instance.setCachedExpressionByDefault(true);
// 注册自定义函数(如有)
// instance.addFunction(new YourCustomFunction());
return instance;
}
}

@ -0,0 +1,46 @@
package org.springblade.desk.basic.aviator.func;
import com.googlecode.aviator.AviatorEvaluatorInstance;
import com.googlecode.aviator.runtime.function.AbstractFunction;
import com.googlecode.aviator.runtime.type.AviatorObject;
import com.googlecode.aviator.runtime.type.AviatorString;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = false)
@Slf4j
public class CustomFunctionRegistry implements InitializingBean {
@Resource
private AviatorEvaluatorInstance aviatorEvaluator;
@Override
public void afterPropertiesSet() throws Exception {
// 注册自定义函数
// 此时 aviatorEvaluator 已被注入
aviatorEvaluator.addFunction(new AbstractFunction() {
@Override
public String getName() {
return "myCustomFunc";
}
@Override
public AviatorObject call(Map<String, Object> env, AviatorObject arg1) {
String value = (String) arg1.getValue(env);
return new AviatorString("自定义结果: " + value);
}
});
}
}

@ -0,0 +1,32 @@
package org.springblade.desk.basic.aviator.service;
import com.googlecode.aviator.AviatorEvaluatorInstance;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = false)
@Slf4j
public class AviatorService {
@Resource
private AviatorEvaluatorInstance aviatorEvaluator;
public Object evaluateExpression(String expression, Map<String, Object> variables) {
try {
return aviatorEvaluator.execute(expression, variables);
} catch (Exception e) {
throw new RuntimeException("表达式执行失败: " + e.getMessage(), e);
}
}
}

@ -0,0 +1,60 @@
package org.springblade.desk.basic.controller;
import com.googlecode.aviator.AviatorEvaluatorInstance;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.basic.aviator.service.AviatorService;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
import java.util.Map;
@RestController
@RequestMapping(BAModuleConst.CONTROLLER_PREFIX + "/Aviator")
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Slf4j
@Tag(name = "Aviator", description = "Aviator接口")
public class AviatorController {
@Resource
private AviatorService aviatorService;
@Resource
private AviatorEvaluatorInstance aviatorEvaluator;
/**
* {
* "expression": "a + b * (c - d)",
* "variables": {
* "a": 5,
* "b": 2,
* "c": 10,
* "d": 3
* }
* }
*
* @param request
* @return
*/
@PostMapping("/evaluate")
public Object evaluate(@RequestBody Map<String, Object> request) {
String expression = (String) request.get("expression");
Map<String, Object> variables = (Map<String, Object>) request.get("variables");
return aviatorService.evaluateExpression(expression, variables);
}
@GetMapping("/customFunc")
public Object customFunc() {
// 直接使用注册的自定义函数
return aviatorEvaluator.execute(
"myCustomFunc('Hello')",
Collections.emptyMap()
);
}
}

@ -18,6 +18,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
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.mp.support.Condition;
@ -116,6 +117,7 @@ public class BasicClazzController extends BladeController {
public R<List<BasicClazzVO>> listForSelectPlatingAssort() {
LambdaQueryWrapper<BasicClazz> qw = Wrappers.lambdaQuery();
qw.eq(BasicClazz::getBizType, BasicClazzConst.TYPE_PLATING_ASSORT);
qw.eq(BasicClazz::getIsDeleted, CommonConstant.DELETE_FALSE);
List<BasicClazz> list = service.list(qw);
List<BasicClazzVO> listVO = BasicClazzWrapper.build().listVO(list);
return R.data(listVO);

@ -35,7 +35,6 @@ import org.springblade.desk.basic.pojo.vo.PlatingVO;
import org.springblade.desk.basic.service.IPlatingService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.PlatingWrapper;
import org.springblade.desk.quality.pojo.entity.ReviewDuty;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -46,7 +45,7 @@ import java.util.stream.Collectors;
/**
* [镀种] 控制器
*
* mes v1: bs_plating
* @author Tom Shuo
* @since 2026-01-05
*/

@ -41,6 +41,7 @@ import java.util.stream.Collectors;
/**
* [生产标识] 控制器
* mes v1:
*
* @author Tom Shuo
* @since 2025-12-22

@ -41,6 +41,7 @@ import java.util.stream.Collectors;
/**
* [班组用户关联] 控制器
* mes v1: 二期新加
*
* @author Tom Shuo
* @since 2026-01-13

@ -40,6 +40,7 @@ import java.util.Map;
/**
* [班组] 控制器
* mes v1: bs_team_set
*
* @author Tom Shuo
* @since 2025-12-16
*/

@ -40,6 +40,7 @@ import java.util.Map;
/**
* [作业中心] 控制器
* mes v1: bs_work_center
*
* @author Tom Shuo
* @since 2025-12-16
*/

@ -40,6 +40,7 @@ import java.util.Map;
/**
* [作业槽] 控制器
* mes v1:
*
* @author Tom Shuo
* @since 2025-12-16
*/

@ -84,7 +84,6 @@ public class AuditFileController extends BladeController {
Query query) {
// QueryWrapper<AuditFile> qw = Condition.getQueryWrapper(map, AuditFile.class);
AuditFileSearch search = BeanUtil.toBeanIgnoreError(map, AuditFileSearch.class);
log.info("search = " + search);
IPage<AuditFile> pages = service.listSearch(Condition.getPage(query), search);
IPage<AuditFileVO> pagesVO = AuditFileWrapper.build().pageVO(pages);
pagesVO.getRecords()

@ -3,6 +3,7 @@
*/
package org.springblade.desk.quality.controller;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -27,8 +28,10 @@ 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.CycleTestExcel;
import org.springblade.desk.quality.pojo.entity.AuditFile;
import org.springblade.desk.quality.pojo.entity.CycleTest;
import org.springblade.desk.quality.pojo.request.CycleTestBatUpdateCycle;
import org.springblade.desk.quality.pojo.request.CycleTestSearch;
import org.springblade.desk.quality.pojo.request.CycleTestSubmit;
import org.springblade.desk.quality.pojo.vo.CycleTestVO;
import org.springblade.desk.quality.service.CycleTestService2;
@ -41,6 +44,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* [周期试验] 控制器
@ -49,11 +53,11 @@ import java.util.Map;
* @since 2025-11-17
*/
@RestController
@RequestMapping(QAModuleConst.CONTROLLER_PREFIX + "/CycleTest")
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Slf4j
@RequestMapping(QAModuleConst.CONTROLLER_PREFIX + "/CycleTest")
@Tag(name = "[QA][周期试验]", description = "[周期试验]接口")
public class CycleTestController extends BladeController {
@ -81,9 +85,17 @@ public class CycleTestController extends BladeController {
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "list分页", description = "传入cycleTest")
public R<IPage<CycleTestVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> cycleTest,
public R<IPage<CycleTestVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> map,
Query query) {
return service2.list(cycleTest, query);
// 填充bean
CycleTestSearch search = BeanUtil.toBeanIgnoreError(map, CycleTestSearch.class);
log.info("search = " + search);
IPage<CycleTestVO> pagesVO = service.listSearch(Condition.getPage(query), search);
pagesVO.getRecords()
.stream()
.peek(service2::setVOValue)
.collect(Collectors.toList());
return R.data(pagesVO);
}
/**
@ -186,16 +198,22 @@ public class CycleTestController extends BladeController {
@GetMapping("/export-excel")
@ApiOperationSupport(order = 8)
@Operation(summary = "导出数据", description = "传入cycleTest")
public void exportCycleTest(@Parameter(hidden = true) @RequestParam Map<String, Object> cycleTest,
public void exportCycleTest(@Parameter(hidden = true) @RequestParam Map<String, Object> map,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<CycleTest> queryWrapper = Condition.getQueryWrapper(cycleTest, CycleTest.class);
// QueryWrapper<CycleTest> queryWrapper = Condition.getQueryWrapper(cycleTest, CycleTest.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(CycleTest::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(CycleTestEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<CycleTestExcel> list = service.exportCycleTest(queryWrapper);
CycleTestSearch search = BeanUtil.toBeanIgnoreError(map, CycleTestSearch.class);
log.info("search = " + search);
List<CycleTestVO> listVO = service.listSearchWithoutPage(search);
listVO.stream()
.peek(service2::setVOValue)
.collect(Collectors.toList());
List<CycleTestExcel> listExcel = BeanUtil.copyToList(listVO, CycleTestExcel.class);
ExcelUtil.export(response, "[周期试验]数据" + DateUtil.time(),
"[周期试验]数据表", list, CycleTestExcel.class);
"[周期试验]数据表", listExcel, CycleTestExcel.class);
}
@PostMapping("/update-process-user-bat")

@ -3,6 +3,7 @@
*/
package org.springblade.desk.quality.controller;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -80,8 +81,7 @@ public class CycleTestItemController extends BladeController {
@ApiOperationSupport(order = 2)
@Operation(summary = "list分页", description = "传入cycleTestItem")
public R<IPage<CycleTestItemVO>> list(
@Parameter(hidden = true) @RequestParam Map<String, Object> cycleTestItem,
Query query) {
@Parameter(hidden = true) @RequestParam Map<String, Object> cycleTestItem, Query query) {
return service2.list(cycleTestItem, query);
}
@ -151,9 +151,11 @@ public class CycleTestItemController extends BladeController {
// queryWrapper.lambda().eq(CycleTestItem::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(CycleTestItemEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<CycleTestItemExcel> list = service.exportCycleTestItem(queryWrapper);
List<CycleTestItemVO> listVO = service2.listWithoutPage(cycleTestItem);
List<CycleTestItemExcel> listExcel = BeanUtil.copyToList(listVO, CycleTestItemExcel.class);
ExcelUtil.export(response, "[周期试验项目]数据" + DateUtil.time(),
"[周期试验项目]数据表", list,
"[周期试验项目]数据表", listExcel,
CycleTestItemExcel.class);
}

@ -168,9 +168,8 @@ public class CycleTestTaskController extends BladeController {
//}
//queryWrapper.lambda().eq(CycleTestTaskEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<CycleTestTaskVO> list = service.listSearchWithoutPage(search);
// todo:excel格式
// excel 导出字段
List<CycleTestTaskExcel> listExcel = BeanUtil.copyToList(list, CycleTestTaskExcel.class);
ExcelUtil.export(response, "[周期试验任务]数据" + DateUtil.time(),
"[周期试验任务]数据表", listExcel, CycleTestTaskExcel.class);
@ -219,10 +218,10 @@ public class CycleTestTaskController extends BladeController {
return service.fill(id, isDone, testDate, testAttachId, reasonForNo, reasonForOut);
}
@GetMapping("/testAuto")
@GetMapping("/generateAuto")
@ApiOperationSupport(order = 12)
@Operation(summary = "testAuto", description = "")
public R testAuto() {
@Operation(summary = "generateAuto", description = "")
public R generateAuto() {
service.generateAuto();
return R.success();
}

@ -28,8 +28,11 @@ import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.quality.constant.QAModuleConst;
import org.springblade.desk.quality.excel.LiquidTankReportExcel;
import org.springblade.desk.quality.pojo.entity.LiquidTankReport;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportDetailVO;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportVO;
import org.springblade.desk.quality.service.ILiquidTankReportService;
import org.springblade.desk.quality.service.ILiquidTankTaskCopyService;
import org.springblade.desk.quality.wrapper.LiquidTankReportDetailWrapper;
import org.springblade.desk.quality.wrapper.LiquidTankReportWrapper;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@ -54,179 +57,183 @@ import java.util.Map;
public class LiquidTankReportController extends BladeController {
@Resource
private ILiquidTankReportService service;
/**
* [槽液报告] 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 10)
@Operation(summary = "详情", description = "传入LiquidTankReport Obj")
public R<LiquidTankReportVO> detail(LiquidTankReport liquidTankReport) {
QueryWrapper<LiquidTankReport> qw = Condition.getQueryWrapper(liquidTankReport);
LiquidTankReport detail = service.getOne(qw);
LiquidTankReportVO detailVO = LiquidTankReportWrapper.build().entityVO(detail);
return R.data(detailVO);
}
/**
* [槽液报告] list分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 20)
@Operation(summary = "list分页", description = "传入LiquidTankReport Obj")
public R<IPage<LiquidTankReportVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> liquidTankReport,
Query query) {
private ILiquidTankReportService service;
@Resource
private ILiquidTankTaskCopyService liquidTankTaskCopyService;
/**
* [槽液报告] 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 10)
@Operation(summary = "详情", description = "传入LiquidTankReport Obj")
public R<LiquidTankReportDetailVO> detail(LiquidTankReport liquidTankReport) {
QueryWrapper<LiquidTankReport> qw = Condition.getQueryWrapper(liquidTankReport);
LiquidTankReport detail = service.getOne(qw);
LiquidTankReportDetailVO detailVO = LiquidTankReportDetailWrapper.build().entityVO(detail);
// 直接查询明细列表
detailVO.setCopyList(liquidTankTaskCopyService.getListByLiquidTankReportId(detailVO.getId()));
return R.data(detailVO);
}
/**
* [槽液报告] list分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 20)
@Operation(summary = "list分页", description = "传入LiquidTankReport Obj")
public R<IPage<LiquidTankReportVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> liquidTankReport,
Query query) {
QueryWrapper<LiquidTankReport> qw = Condition.getQueryWrapper(liquidTankReport, LiquidTankReport.class);
IPage<LiquidTankReport> pages = service.page(Condition.getPage(query), qw);
IPage<LiquidTankReportVO> pagesVO = LiquidTankReportWrapper.build().pageVO(pages);
return R.data(pagesVO);
}
/**
* [槽液报告] page分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 21)
@Operation(summary = "page分页", description = "传入LiquidTankReport Obj")
public R<IPage<LiquidTankReportVO>> page(LiquidTankReportVO liquidTankReport, Query query) {
IPage<LiquidTankReportVO> pagesVO = service.selectLiquidTankReportPage(
Condition.getPage(query), liquidTankReport
);
return R.data(pagesVO);
}
/**
IPage<LiquidTankReport> pages = service.page(Condition.getPage(query), qw);
IPage<LiquidTankReportVO> pagesVO = LiquidTankReportWrapper.build().pageVO(pages);
return R.data(pagesVO);
}
/**
* [槽液报告] page分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 21)
@Operation(summary = "page分页", description = "传入LiquidTankReport Obj")
public R<IPage<LiquidTankReportVO>> page(LiquidTankReportVO liquidTankReport, Query query) {
IPage<LiquidTankReportVO> pagesVO = service.selectLiquidTankReportPage(
Condition.getPage(query), liquidTankReport
);
return R.data(pagesVO);
}
/**
* [槽液报告] list下拉选择
*/
@GetMapping("/listForSelect")
@ApiOperationSupport(order = 22)
@Operation(summary = "list下拉选择", description = "")
@Operation(summary = "list下拉选择", description = "")
public R<List<LiquidTankReportVO>> listForSelect() {
List<LiquidTankReport> list = service.list();
List<LiquidTankReportVO> listVO = LiquidTankReportWrapper.build().listVO(list);
return R.data(listVO);
List<LiquidTankReport> list = service.list();
List<LiquidTankReportVO> listVO = LiquidTankReportWrapper.build().listVO(list);
return R.data(listVO);
}
/**
* [槽液报告] 新增一条
*/
@PostMapping("/save")
@ApiOperationSupport(order = 30)
@Operation(summary = "新增一条", description = "传入LiquidTankReport Obj")
public R save(@Valid @RequestBody LiquidTankReport addOne) {
addOne.setId(null);
return R.status(service.save(addOne));
}
/**
* [槽液报告] 新增一条
*/
@PostMapping("/save")
@ApiOperationSupport(order = 30)
@Operation(summary = "新增一条", description = "传入LiquidTankReport Obj")
public R save(@Valid @RequestBody LiquidTankReport addOne) {
addOne.setId(null);
return R.status(service.save(addOne));
}
/**
/**
* [槽液报告] 新增批量
*/
@PostMapping("/saveBat")
@ApiOperationSupport(order = 31)
@Operation(summary = "新增批量", description = "传入LiquidTankReport List")
public R saveBat(@Valid @RequestBody List<LiquidTankReport> addList) {
addList.forEach(one -> {
one.setId(null);
});
return R.status(service.saveBatch(addList));
}
/**
* [槽液报告] 修改一条
*/
@PostMapping("/update")
@ApiOperationSupport(order = 40)
@Operation(summary = "修改一条", description = "传入LiquidTankReport Obj")
public R update(@Valid @RequestBody LiquidTankReport updateOne) {
return R.status(service.updateById(updateOne));
}
@PostMapping("/saveBat")
@ApiOperationSupport(order = 31)
@Operation(summary = "新增批量", description = "传入LiquidTankReport List")
public R saveBat(@Valid @RequestBody List<LiquidTankReport> addList) {
addList.forEach(one -> {
one.setId(null);
});
return R.status(service.saveBatch(addList));
}
/**
* [槽液报告] 修改一条
*/
@PostMapping("/update")
@ApiOperationSupport(order = 40)
@Operation(summary = "修改一条", description = "传入LiquidTankReport Obj")
public R update(@Valid @RequestBody LiquidTankReport updateOne) {
return R.status(service.updateById(updateOne));
}
/**
* [槽液报告] 修改批量
*/
@PostMapping("/updateBat")
@ApiOperationSupport(order = 41)
@Operation(summary = "修改批量", description = "传入LiquidTankReport List")
@Operation(summary = "修改批量", description = "传入LiquidTankReport List")
public R updateBat(@Valid @RequestBody List<LiquidTankReport> updateList) {
return R.status(service.updateBatchById(updateList));
}
/**
* [槽液报告] 新增或修改一条
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 50)
@Operation(summary = "新增或修改一条", description = "传入LiquidTankReport Obj")
public R submit(@Valid @RequestBody LiquidTankReport mergeOne) {
return R.status(service.saveOrUpdate(mergeOne));
}
/**
/**
* [槽液报告] 新增或修改一条
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 50)
@Operation(summary = "新增或修改一条", description = "传入LiquidTankReport Obj")
public R submit(@Valid @RequestBody LiquidTankReport mergeOne) {
return R.status(service.saveOrUpdate(mergeOne));
}
/**
* [槽液报告] 新增或修改批量
*/
@PostMapping("/submitBat")
@ApiOperationSupport(order = 51)
@Operation(summary = "新增或修改批量", description = "传入LiquidTankReport List")
public R submitBat(@Valid @RequestBody List<LiquidTankReport> mergeList) {
return R.status(service.saveOrUpdateBatch(mergeList));
}
/**
* [槽液报告] 逻辑删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 61)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(service.deleteLogic(Func.toLongList(ids)));
}
/**
* [槽液报告] 导出Excel
*/
@GetMapping("/exportExcel")
@ApiOperationSupport(order = 70)
@Operation(summary = "导出Excel", description = "传入LiquidTankReport")
public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> liquidTankReport,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<LiquidTankReport> qw = Condition.getQueryWrapper(liquidTankReport, LiquidTankReport.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(LiquidTankReport::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(LiquidTankReportEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<LiquidTankReportExcel> list = service.exportLiquidTankReport(qw);
ExcelUtil.export(response, "[槽液报告]数据" + DateUtil.time(),
"[槽液报告]数据表", list, LiquidTankReportExcel.class);
}
/**
@PostMapping("/submitBat")
@ApiOperationSupport(order = 51)
@Operation(summary = "新增或修改批量", description = "传入LiquidTankReport List")
public R submitBat(@Valid @RequestBody List<LiquidTankReport> mergeList) {
return R.status(service.saveOrUpdateBatch(mergeList));
}
/**
* [槽液报告] 逻辑删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 61)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(service.deleteLogic(Func.toLongList(ids)));
}
/**
* [槽液报告] 导出Excel
*/
@GetMapping("/exportExcel")
@ApiOperationSupport(order = 70)
@Operation(summary = "导出Excel", description = "传入LiquidTankReport")
public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> liquidTankReport,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<LiquidTankReport> qw = Condition.getQueryWrapper(liquidTankReport, LiquidTankReport.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(LiquidTankReport::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(LiquidTankReportEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<LiquidTankReportExcel> list = service.exportLiquidTankReport(qw);
ExcelUtil.export(response, "[槽液报告]数据" + DateUtil.time(),
"[槽液报告]数据表", list, LiquidTankReportExcel.class);
}
/**
* [槽液报告] 下载Excel模板
*/
@GetMapping("/downloadExcelTemplate")
@ApiOperationSupport(order = 71)
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<org.springframework.core.io.Resource> downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
"Excel/QA/ImportTemplate-CycleTestItem.xls",
"导入模版-周期试验项目.xls");
}
/**
* [槽液报告] 导入Excel
*/
@PostMapping("/importExcel")
@ApiOperationSupport(order = 72)
@Operation(summary = "导入Excel", description = "MultipartFile")
public R importExcel(@RequestParam("file") MultipartFile file) {
R checkR = ExcelExtUtil.importExcelCheck(file);
if (checkR != null) {
return checkR;
}
List<LiquidTankReport> importList = ExcelUtil.read(
file, 0, 1, LiquidTankReport.class
);
return R.status(service.saveBatch(importList));
}
@GetMapping("/downloadExcelTemplate")
@ApiOperationSupport(order = 71)
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<org.springframework.core.io.Resource> downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
"Excel/QA/ImportTemplate-CycleTestItem.xls",
"导入模版-周期试验项目.xls");
}
/**
* [槽液报告] 导入Excel
*/
@PostMapping("/importExcel")
@ApiOperationSupport(order = 72)
@Operation(summary = "导入Excel", description = "MultipartFile")
public R importExcel(@RequestParam("file") MultipartFile file) {
R checkR = ExcelExtUtil.importExcelCheck(file);
if (checkR != null) {
return checkR;
}
List<LiquidTankReport> importList = ExcelUtil.read(
file, 0, 1, LiquidTankReport.class
);
return R.status(service.saveBatch(importList));
}
}

@ -8,12 +8,14 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
/**
@ -28,193 +30,49 @@ import java.time.LocalDateTime;
@ContentRowHeight(18)
public class CycleTestExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;
/**
* [周期试验]编码
*/
@ColumnWidth(20)
@ExcelProperty("[周期试验]编码")
private String code;
/**
* [周期试验]类型
*/
@ColumnWidth(20)
@ExcelProperty("[周期试验]类型")
private Long cycleTestType;
/**
* 名称
*/
@ColumnWidth(20)
@ExcelProperty("名称")
private String name;
/**
* [班组]id
*/
@ColumnWidth(20)
@ExcelProperty("[班组]id")
private BigDecimal teamId;
/**
* [供应商]id
*/
@ColumnWidth(20)
@ExcelProperty("[供应商]id")
private BigDecimal supplierId;
/**
* [周期试验项目]id
*/
@ColumnWidth(20)
@ExcelProperty("[周期试验项目]id")
private BigDecimal cycleTestItemId;
/**
* 试验件类型-[1]:零件;[2]:试片;
*/
@ColumnWidth(20)
@ExcelProperty("试验件类型-[1]:零件;[2]:试片;")
private BigDecimal testType;
/**
* 工艺员[用户]id
*/
@ColumnWidth(20)
@ExcelProperty("工艺员[用户]id")
private BigDecimal processUserId;
/**
* 试验技术员[用户]id
*/
@ColumnWidth(20)
@ExcelProperty("试验技术员[用户]id")
private BigDecimal testUserId;
/**
* [镀种]id
*/
@ColumnWidth(20)
@ExcelProperty("[镀种]id")
private BigDecimal plateId;
/**
* 生成任务说明
*/
@ColumnWidth(20)
@ExcelProperty("生成任务说明")
private String descGenTask;
/**
* 临期提醒说明
*/
@ColumnWidth(20)
@ExcelProperty("临期提醒说明")
private String descRemind;
/**
* 提醒文本
*/
@ColumnWidth(20)
@ExcelProperty("提醒文本")
private String remindText;
/**
* 排序
*/
@ColumnWidth(20)
@ExcelProperty("排序")
private Long sort;
/**
* 备注
*/
@ColumnWidth(20)
@ExcelProperty("备注")
private String remark;
/**
* 上次试验日期
*/
@ColumnWidth(20)
@ExcelProperty("上次试验日期")
private LocalDateTime lastTestDate;
/**
* 生成任务JobId
*/
@ColumnWidth(20)
@ExcelProperty("生成任务JobId")
private String jobIdsGenTask;
/**
* 临期提醒JobId
*/
@ColumnWidth(20)
@ExcelProperty("临期提醒JobId")
private String jobIdsRemind;
/**
* 试验时长()
*/
@ColumnWidth(20)
@ExcelProperty("试验时长(天)")
private Long testDuration;
/**
* 提前下发()
*/
@ColumnWidth(20)
@ExcelProperty("提前下发(天)")
private Long genBefore;
/**
* 临期提醒()
*/
@ColumnWidth(20)
@ExcelProperty("临期提醒(天)")
private Long remind;
/**
* 定时类型-[1]:WEEK;[2]:MONTH;[3]:YEAR;[4]:CUSTOM;
*/
@ColumnWidth(20)
@ExcelProperty("定时类型-[1]:WEEK;[2]:MONTH;[3]:YEAR;[4]:CUSTOM;")
private Long jobType;
/**
* 定时WEEK值
*/
@ColumnWidth(20)
@ExcelProperty("定时WEEK值")
private String jobTypeWeekValue;
/**
* 定时MONTH值
*/
@ColumnWidth(20)
@ExcelProperty("定时MONTH值")
private String jobTypeMonthValue;
/**
* 定时YEAR值
*/
@ColumnWidth(20)
@ExcelProperty("定时YEAR值")
private String jobTypeYearValue;
/**
* 定时CUSTOM值
*/
@ColumnWidth(20)
@ExcelProperty("定时CUSTOM值")
private String jobTypeCustomValue;
/**
* 生成任务 json config
*/
@ColumnWidth(20)
@ExcelProperty("生成任务 json config")
private String jsonConfigGenTask;
/**
* 临期提醒 json config
*/
@ColumnWidth(20)
@ExcelProperty("临期提醒 json config")
private String jsonConfigRemind;
/**
* 是否顺延-[1]:;[0]:;
*/
@ColumnWidth(20)
@ExcelProperty("是否顺延-[1]:是;[0]:否;")
private Long isPutOff;
/**
* 最小试验数量
*/
@ColumnWidth(20)
@ExcelProperty("最小试验数量")
private Long minDoTestCount;
/**
* 试验件材料
*/
@ColumnWidth(20)
@ExcelProperty("试验件材料")
private String testMat;
@Schema(description = "[镀种]多个名称")
@ColumnWidth(20)
@ExcelProperty("镀种")
private String plateNames;
@Schema(description = "[周期试验项目]名称")
@ColumnWidth(20)
@ExcelProperty("试验项目")
private String cycleTestItemName;
@Schema(description = "[周期试验项目]试验条件")
@ColumnWidth(20)
@ExcelProperty("试验条件")
private String cycleTestItemCondition;
@Schema(description = "[周期试验标准]名称")
@ColumnWidth(20)
@ExcelProperty("试验标准")
private String cycleTestStandardName;
@Schema(description = "试验件类型 名称")
@ColumnWidth(20)
@ExcelProperty("试验件")
private String testTypeName;
@Schema(description = "试验件材料")
@ColumnWidth(20)
@ExcelProperty("试验件材料")
private String testMat;
@Schema(description = "试验周期")
@ColumnWidth(20)
@ExcelProperty("试验周期")
private String jobExtShowText;
@Schema(description = "最小试验数量")
@ColumnWidth(20)
@ExcelProperty("最小试验数量")
private Integer minDoTestCount;
@Schema(description = "提前下发天数")
@ColumnWidth(20)
@ExcelProperty("提前下发天数")
private Integer genBefore;
@ColumnWidth(20)
@ExcelProperty("超期提醒天数")
private Integer remind;
@ColumnWidth(20)
@ExcelProperty("更新时间")
private Date updateTime;
}

@ -45,6 +45,6 @@ public class CycleTestItemExcel implements Serializable {
* 试验标准
*/
@ColumnWidth(20)
@ExcelProperty("试验标准")
private String standard;
@ExcelProperty("执行标准")
private String cycleTestStandardName;
}

@ -76,7 +76,7 @@ public class CycleTestTaskExcel implements Serializable {
*/
@Schema(description = "工艺员[用户]姓名")
@ColumnWidth(20)
@ExcelProperty("状态")
@ExcelProperty("工艺员")
private String processUserName;
/**
* 任务生成时间

@ -17,11 +17,6 @@ public class CycleTestTaskClient implements ICycleTestTaskClient {
service.generateAuto();
}
@Override
public void generateOneTime() {
service.generateOneTime();
}
@Override
public void checkRemind() {
service.checkRemind();

@ -3,6 +3,9 @@ package org.springblade.desk.quality.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.quality.pojo.entity.LiquidTankTask;
import org.springblade.desk.quality.service.ILiquidTankService;
import org.springblade.desk.quality.service.ILiquidTankTaskService;
import org.springblade.desk.quality.service.LiquidTankService2;
import org.springblade.desk.quality.service.LiquidTankTaskService222;
import org.springframework.web.bind.annotation.RestController;
@ -13,16 +16,21 @@ import java.util.List;
public class LiquidTankTaskClient implements ILquidTankTaskClient {
@Resource
private LiquidTankTaskService222 service;
private ILiquidTankTaskService service;
@Override
public List<LiquidTankTask> generate() {
return null;// todo:
public void generateAuto() {
service.generateAuto();
}
@Override
public List<LiquidTankTask> timeout() {
return service.timeout();
public void checkRemind() {
service.checkRemind();
}
@Override
public void checkOut() {
service.checkOut();
}
}

@ -18,7 +18,7 @@
<select id="selectCycleTestItemPage" resultMap="cycleTestItemResultMap">
SELECT *
FROM QA_CYCLE_TEST_ITEM
WHERE is_deleted = 0
WHERE IS_DELETED = 0
<if test="q.name != null and q.name != ''">
AND NAME LIKE '%' || #{q.name} || '%'
</if>

@ -9,7 +9,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.quality.excel.CycleTestExcel;
import org.springblade.desk.quality.pojo.entity.CycleTest;
import org.springblade.desk.quality.pojo.request.CycleTestSearch;
import org.springblade.desk.quality.pojo.vo.CycleTestVO;
import org.springblade.desk.quality.pojo.vo.InspectionTaskListVO;
import java.util.List;
@ -37,4 +39,8 @@ public interface CycleTestMapper extends BaseMapper<CycleTest> {
* @return List<CycleTestExcel>
*/
List<CycleTestExcel> exportCycleTest(@Param("ew") Wrapper<CycleTest> queryWrapper);
List<CycleTestVO> listSearch(IPage<CycleTestVO> page, @Param("q") CycleTestSearch q);
List<CycleTestVO> listSearchWithoutPage(@Param("q") CycleTestSearch q);
}

@ -42,7 +42,7 @@
<select id="selectCycleTestPage" resultMap="cycleTestResultMap">
SELECT *
FROM QA_CYCLE_TEST
WHERE is_deleted = 0
WHERE IS_DELETED = 0
<if test="q.cycleTestItemId != null and q.cycleTestItemId != 0">
AND CYCLE_TEST_ITEM_ID = #{q.cycleTestItemId}
</if>
@ -54,4 +54,78 @@
SELECT *
FROM QA_CYCLE_TEST ${ew.customSqlSegment}
</select>
<select id="listSearch"
resultType="org.springblade.desk.quality.pojo.vo.CycleTestVO">
SELECT t.*
FROM QA_CYCLE_TEST t
-- 用户 bl_user
LEFT JOIN BLADE_USER bl_user on t.PROCESS_USER_ID = bl_user.ID
-- 试验项目 item
LEFT JOIN QA_CYCLE_TEST_ITEM item ON t.CYCLE_TEST_ITEM_ID = item.ID
-- 试验标准 std
LEFT JOIN QA_CYCLE_TEST_STANDARD std ON item.CYCLE_TEST_STANDARD_ID = std.ID
WHERE (
t.IS_DELETED = 0
)
<if test="q.cycleTestItemId != null">
AND t.CYCLE_TEST_ITEM_ID = #{q.cycleTestItemId}
</if>
<if test="q.plateId != null and q.plateId != ''">
AND ',' || t.PLATE_IDS || ',' LIKE '%,' || #{q.plateId} || ',%'
</if>
<if test="q.testType != null and q.testType != 0">
AND t.TEST_TYPE = #{q.testType}
</if>
<if test="q.cycleTestItemCondition != null and q.cycleTestItemCondition != ''">
AND item.CONDITION LIKE '%' || #{q.cycleTestItemCondition} || '%'
</if>
<if test="q.cycleTestStandardName != null and q.cycleTestStandardName != ''">
AND std.NAME LIKE '%' || #{q.cycleTestStandardName} || '%'
</if>
<if test="q.processUserId != null">
AND t.PROCESS_USER_ID = #{q.processUserId}
</if>
<if test="q.jobType != null">
AND t.JOB_TYPE = #{q.jobType}
</if>
ORDER BY t.ID DESC
</select>
<select id="listSearchWithoutPage"
resultType="org.springblade.desk.quality.pojo.vo.CycleTestVO">
SELECT t.*
FROM QA_CYCLE_TEST t
-- 用户 bl_user
LEFT JOIN BLADE_USER bl_user on t.PROCESS_USER_ID = bl_user.ID
-- 试验项目 item
LEFT JOIN QA_CYCLE_TEST_ITEM item ON t.CYCLE_TEST_ITEM_ID = item.ID
-- 试验标准 std
LEFT JOIN QA_CYCLE_TEST_STANDARD std ON item.CYCLE_TEST_STANDARD_ID = std.ID
WHERE (
t.IS_DELETED = 0
)
<if test="q.cycleTestItemId != null">
AND t.CYCLE_TEST_ITEM_ID = #{q.cycleTestItemId}
</if>
<if test="q.plateId != null and q.plateId != ''">
AND ',' || t.PLATE_IDS || ',' LIKE '%,' || #{q.plateId} || ',%'
</if>
<if test="q.testType != null and q.testType != 0">
AND t.TEST_TYPE = #{q.testType}
</if>
<if test="q.cycleTestItemCondition != null and q.cycleTestItemCondition != ''">
AND item.CONDITION LIKE '%' || #{q.cycleTestItemCondition} || '%'
</if>
<if test="q.cycleTestStandardName != null and q.cycleTestStandardName != ''">
AND std.NAME LIKE '%' || #{q.cycleTestStandardName} || '%'
</if>
<if test="q.processUserId != null">
AND t.PROCESS_USER_ID = #{q.processUserId}
</if>
<if test="q.jobType != null">
AND t.JOB_TYPE = #{q.jobType}
</if>
ORDER BY t.ID DESC
</select>
</mapper>

@ -37,6 +37,8 @@
<result column="FLAG_APPROACH" property="flagApproach"/>
<result column="FLAG_OUT" property="flagOut"/>
<result column="REASON_FOR_OUT" property="reasonForOut"/>
<result column="DAY_TO_PLANED_FINISH" property="dayToPlanedFinish"/>
<result column="DAY_TO_OUT" property="dayToOut"/>
</resultMap>
<select id="selectCycleTestTaskPage" resultMap="cycleTestTaskResultMap">
@ -103,12 +105,21 @@
<if test="q.createTimeEnd != null">
AND t.CREATE_TIME &lt;= #{q.createTimeEnd}
</if>
<if test="q.genDatetimeStart != null">
AND t.CREATE_TIME &gt;= #{q.genDatetimeStart}
</if>
<if test="q.genDatetimeEnd != null">
AND t.CREATE_TIME &lt;= #{q.genDatetimeEnd}
</if>
<if test="q.testType != null">
AND t.TEST_TYPE = #{q.testType}
</if>
<if test="q.code != null and q.code != ''">
AND t.CODE LIKE '%' || #{q.code} || '%'
</if>
<if test="q.cycleTestItemId != null">
AND item.ID = #{q.cycleTestItemId}
</if>
<if test="q.cycleTestItemName != null and q.cycleTestItemName != ''">
AND item.NAME LIKE '%' || #{q.cycleTestItemName} || '%'
</if>
@ -145,6 +156,12 @@
<if test="q.finishDateEnd != null">
AND t.FINISH_DATE &lt;= #{q.finishDateEnd}
</if>
<if test="q.dayToPlanedFinish != null">
AND t.DAY_TO_PLANED_FINISH = #{q.dayToPlanedFinish}
</if>
<if test="q.dayToOut != null">
AND t.DAY_TO_OUT = #{q.dayToOut}
</if>
ORDER BY t.STATUS ASC,t.CREATE_TIME ASC
</select>
@ -187,12 +204,21 @@
<if test="q.createTimeEnd != null">
AND t.CREATE_TIME &lt;= #{q.createTimeEnd}
</if>
<if test="q.genDatetimeStart != null">
AND t.CREATE_TIME &gt;= #{q.genDatetimeStart}
</if>
<if test="q.genDatetimeEnd != null">
AND t.CREATE_TIME &lt;= #{q.genDatetimeEnd}
</if>
<if test="q.testType != null">
AND t.TEST_TYPE = #{q.testType}
</if>
<if test="q.code != null and q.code != ''">
AND t.CODE LIKE '%' || #{q.code} || '%'
</if>
<if test="q.cycleTestItemId != null">
AND item.ID = #{q.cycleTestItemId}
</if>
<if test="q.cycleTestItemName != null and q.cycleTestItemName != ''">
AND item.NAME LIKE '%' || #{q.cycleTestItemName} || '%'
</if>
@ -229,6 +255,12 @@
<if test="q.finishDateEnd != null">
AND t.FINISH_DATE &lt;= #{q.finishDateEnd}
</if>
<if test="q.dayToPlanedFinish != null">
AND t.DAY_TO_PLANED_FINISH = #{q.dayToPlanedFinish}
</if>
<if test="q.dayToOut != null">
AND t.DAY_TO_OUT = #{q.dayToOut}
</if>
ORDER BY t.STATUS ASC,t.CREATE_TIME ASC
</select>
</mapper>

@ -47,9 +47,7 @@ public class CycleTestItemService2 {
* @param query
* @return
*/
public R<IPage<CycleTestItemVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> map,
Query query) {
public R<IPage<CycleTestItemVO>> list(Map<String, Object> map, Query query) {
QueryWrapper<CycleTestItem> qw = Condition.getQueryWrapper(map, CycleTestItem.class);
qw.orderByDesc(BaseCol.ID);
IPage<CycleTestItem> pages = service.page(Condition.getPage(query), qw);
@ -61,6 +59,23 @@ public class CycleTestItemService2 {
return R.data(pagesVO);
}
/**
* list 不分页
*
* @param map
* @return
*/
public List<CycleTestItemVO> listWithoutPage(Map<String, Object> map) {
QueryWrapper<CycleTestItem> qw = Condition.getQueryWrapper(map, CycleTestItem.class);
qw.orderByDesc(BaseCol.ID);
List<CycleTestItem> pages = service.list(qw);
List<CycleTestItemVO> pagesVO = CycleTestItemWrapper.build().listVO(pages);
pagesVO.stream()
.peek(this::setVOValue)
.collect(Collectors.toList());
return pagesVO;
}
/**
* search
*

@ -1,5 +1,6 @@
package org.springblade.desk.quality.service;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Parameter;
@ -19,9 +20,11 @@ import org.springblade.desk.quality.pojo.entity.CycleTest;
import org.springblade.desk.quality.pojo.entity.CycleTestItem;
import org.springblade.desk.quality.pojo.entity.CycleTestStandard;
import org.springblade.desk.quality.pojo.request.CycleTestBatUpdateCycle;
import org.springblade.desk.quality.pojo.request.CycleTestSearch;
import org.springblade.desk.quality.pojo.request.JobExt;
import org.springblade.desk.quality.pojo.vo.CycleTestVO;
import org.springblade.desk.quality.pojo.vo.CycleTestStandardVO;
import org.springblade.desk.quality.util.JobExtUtil;
import org.springblade.desk.quality.wrapper.CycleTestStandardWrapper;
import org.springblade.desk.quality.wrapper.CycleTestWrapper;
import org.springblade.resource.feign.IAttachClient;
@ -128,20 +131,18 @@ public class CycleTestService2 {
}
/**
* list
* list 不分页
*
* @param cycleTest
* @param query
* @return
*/
public R<IPage<CycleTestVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> cycleTest,
Query query) {
IPage<CycleTest> pages = service.page(Condition.getPage(query),
Condition.getQueryWrapper(cycleTest, CycleTest.class).orderByAsc(BaseCol.ID)
);
IPage<CycleTestVO> pagesVO = CycleTestWrapper.build().pageVO(pages);
pagesVO.getRecords().stream().peek(this::setVOValue).collect(Collectors.toList());
return R.data(pagesVO);
public List<CycleTestVO> listWithoutPage(Map<String, Object> cycleTest) {
QueryWrapper<CycleTest> qw = Condition.getQueryWrapper(cycleTest, CycleTest.class);
qw.orderByAsc(BaseCol.ID);
List<CycleTest> pages = service.list(qw);
List<CycleTestVO> pagesVO = CycleTestWrapper.build().listVO(pages);
pagesVO.stream().peek(this::setVOValue).collect(Collectors.toList());
return pagesVO;
}
/**
@ -194,16 +195,22 @@ public class CycleTestService2 {
{
StringBuilder names = new StringBuilder();
List<Long> idList = Func.toLongList(vo.getPlateIds());
idList.forEach(id -> {
names.append(platingService.getById(id).getPlating());
names.append(",");
});
String namesF = names.toString();
if (StringUtils.isNotBlank(namesF) && StringUtils.endsWith(namesF, ",")) {
// 去掉结尾,
StringUtils.removeEnd(namesF, ",");
// 循环拼接
for (int i = 0; i < idList.size(); i++) {
names.append(platingService.getById(idList.get(i)).getPlating());
if (i != idList.size() - 1) { // 去掉结尾,
names.append(",");
}
}
vo.setPlateNames(names.toString());
}
//
{
if (vo.getJobType() != null && vo.getJobType() != 0) {
JobExt je = new JobExt();
BeanUtil.copyProperties(vo, je);
vo.setJobExtShowText(JobExtUtil.getShowText(je));
}
vo.setPlateNames(namesF);
}
}
}

@ -278,10 +278,6 @@ public class CycleTestTaskService2 {
return true;
}
public void generateOneTime() {
List<CycleTest> ctList = cycleTestService.list();
}
/**
* 手动生成
*
@ -472,15 +468,10 @@ public class CycleTestTaskService2 {
.toInstant();
return mapper.selectCount(
new LambdaQueryWrapper<CycleTestTask>()
.between(CycleTestTask::getCreateTime,
Date.from(leftInstant), Date.from(rightInstant))
.between(CycleTestTask::getCreateTime, Date.from(leftInstant), Date.from(rightInstant))
);
}
private LocalDate issueDate(CycleTestTask t) {
return null;
}
/**
* 任务计划结束日期/超期日期
*
@ -514,7 +505,7 @@ public class CycleTestTaskService2 {
}
/**
* 临期天数
* 计算临期天数
* 临期天数 0时红色
* 临期天数 0~7 橙色
* 临期天数 >= 7时黄色
@ -526,18 +517,18 @@ public class CycleTestTaskService2 {
* @param id
* @return
*/
public String getCountDayToOut(Long id) {
public Integer getCountDayToOut(Long id) {
CycleTestTask task = service.getById(id);
if (Objects.equals(task.getStatus(), CycleTestTaskConst.S_PENDING_ACCEPT) ||
Objects.equals(task.getStatus(), CycleTestTaskConst.S_PENDING_TEST)) {
LocalDate outLD = getOutDate(id);
if (outLD == null) {
return "";
return 0;
}
long daysDiff = ChronoUnit.DAYS.between(LocalDate.now(), outLD);
return "" + (int) daysDiff;
return (int) daysDiff;
}
return "";
return 0;
}
/**
@ -563,9 +554,12 @@ public class CycleTestTaskService2 {
if (todayLD.isEqual(remindLD) || (todayLD.isAfter(remindLD) && todayLD.isBefore(outLD))) {
task.setFlagOut(BaseValue.NO);
task.setFlagApproach(BaseValue.YES);
// 更新状态
service.updateById(task);
// todo:消息中心 进行临期提醒
}
// 设置临期天数
task.setDayToPlanedFinish(getCountDayToOut(task.getId()));
// 更新状态
service.updateById(task);
}
}
@ -591,6 +585,7 @@ public class CycleTestTaskService2 {
if (todayLD.isEqual(outLD) || todayLD.isAfter(outLD)) {
task.setFlagOut(BaseValue.YES);
task.setFlagApproach(BaseValue.NO);
// todo:消息中心 进行超期提醒
// 更新状态
service.updateById(task);
}

@ -10,6 +10,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.desk.quality.excel.CycleTestExcel;
import org.springblade.desk.quality.excel.CycleTestExcelImport;
import org.springblade.desk.quality.pojo.entity.CycleTest;
import org.springblade.desk.quality.pojo.request.CycleTestSearch;
import org.springblade.desk.quality.pojo.request.CycleTestSubmit;
import org.springblade.desk.quality.pojo.vo.CycleTestVO;
import org.springframework.web.multipart.MultipartFile;
@ -41,6 +42,10 @@ public interface ICycleTestService extends BaseService<CycleTest> {
*/
List<CycleTestExcel> exportCycleTest(Wrapper<CycleTest> queryWrapper);
IPage<CycleTestVO> listSearch(IPage<CycleTestVO> page, CycleTestSearch search);
List<CycleTestVO> listSearchWithoutPage(CycleTestSearch search);
/**
* VO
*

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.quality.excel.LiquidTankReportExcel;
import org.springblade.desk.quality.pojo.entity.LiquidTankReport;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportDetailVO;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportVO;
import java.util.List;

@ -45,4 +45,6 @@ public interface ILiquidTankTaskCopyService extends BaseService<LiquidTankTaskCo
R generateReport(@Valid @RequestBody List<LiquidTankTaskCopy> list);
R generateWave(@Valid @RequestBody List<LiquidTankTaskCopy> list);
List<LiquidTankTaskCopyVO> getListByLiquidTankReportId(Long liquidTankReportId);
}

@ -66,4 +66,10 @@ public interface ILiquidTankTaskService extends BaseService<LiquidTankTask> {
R finishFail(Long id, String finishReason);
void setVOValue(LiquidTankTaskVO vo);
void generateAuto();
void checkRemind();
void checkOut();
}

@ -19,20 +19,22 @@ import java.util.List;
* @since 2025-12-18
*/
public interface IRelTankReportItemService extends BaseService<RelTankReportItem> {
/**
* 自定义分页
*
* @param page 分页参数
* @param relTankReportItem 查询参数
* @return IPage<RelTankReportItemVO>
*/
IPage<RelTankReportItemVO> selectRelTankReportItemPage(IPage<RelTankReportItemVO> page, RelTankReportItemVO relTankReportItem);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<RelTankReportItemExcel>
*/
List<RelTankReportItemExcel> exportRelTankReportItem(Wrapper<RelTankReportItem> queryWrapper);
/**
* 自定义分页
*
* @param page 分页参数
* @param relTankReportItem 查询参数
* @return IPage<RelTankReportItemVO>
*/
IPage<RelTankReportItemVO> selectRelTankReportItemPage(IPage<RelTankReportItemVO> page,
RelTankReportItemVO relTankReportItem);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<RelTankReportItemExcel>
*/
List<RelTankReportItemExcel> exportRelTankReportItem(Wrapper<RelTankReportItem> queryWrapper);
}

@ -14,6 +14,8 @@ import lombok.EqualsAndHashCode;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.config.RoleConfig;
@ -23,6 +25,7 @@ import org.springblade.desk.quality.excel.listener.in.CycleTestListener;
import org.springblade.desk.quality.mapper.CycleTestMapper;
import org.springblade.desk.quality.pojo.entity.CycleTest;
import org.springblade.desk.quality.pojo.entity.CycleTestItem;
import org.springblade.desk.quality.pojo.request.CycleTestSearch;
import org.springblade.desk.quality.pojo.request.CycleTestSubmit;
import org.springblade.desk.quality.pojo.vo.CycleTestVO;
import org.springblade.desk.quality.service.ICycleTestItemService;
@ -35,6 +38,8 @@ import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* [周期试验] 服务实现类
@ -73,6 +78,16 @@ public class CycleTestServiceImpl extends BaseServiceImpl<CycleTestMapper, Cycle
return cycleTestList;
}
@Override
public IPage<CycleTestVO> listSearch(IPage<CycleTestVO> page, CycleTestSearch search) {
return page.setRecords(baseMapper.listSearch(page, search));
}
@Override
public List<CycleTestVO> listSearchWithoutPage(CycleTestSearch search) {
return baseMapper.listSearchWithoutPage(search);
}
@Override
public void setVOValue(CycleTestVO vo) {

@ -169,6 +169,12 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 新建 InspectionTask
InspectionTask task = new InspectionTask();
task.setId(null);
//
if (Objects.equals(fromType, InspectionTaskConst.FROM_TYPE_RB)) {
task.setProcessName(InspectionTaskConst.PROCESS_NAME_SJBZFH);
} else {
task.setProcessName("测试工序2000");
}
task.setStatus(InspectionTaskConst.CHECK_RESULT_TODO);
// todo: fake data
task.setWoId(2002227460172464129L);

@ -11,12 +11,17 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.basic.util.IdUtil;
import org.springblade.desk.quality.excel.LiquidTankReportExcel;
import org.springblade.desk.quality.mapper.LiquidTankReportMapper;
import org.springblade.desk.quality.pojo.entity.LiquidTankReport;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportDetailVO;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportVO;
import org.springblade.desk.quality.service.ILiquidTankReportService;
import org.springblade.desk.quality.service.ILiquidTankTaskCopyService;
import org.springblade.desk.quality.service.IRelTankReportItemService;
import org.springblade.system.feign.IUserClient;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.List;
@ -32,7 +37,11 @@ import java.util.List;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Slf4j
public class LiquidTankReportServiceImpl extends BaseServiceImpl<LiquidTankReportMapper, LiquidTankReport> implements ILiquidTankReportService {
public class LiquidTankReportServiceImpl extends BaseServiceImpl<LiquidTankReportMapper, LiquidTankReport>
implements ILiquidTankReportService {
@Resource
private IRelTankReportItemService relTankReportItemService;
@Resource
private IUserClient userClient;
@ -53,6 +62,8 @@ public class LiquidTankReportServiceImpl extends BaseServiceImpl<LiquidTankRepor
@Override
public void setVOValue(LiquidTankReportVO vo) {
vo.setUpdateUserRealName(userClient.userInfo(vo.getUpdateUser()).getData().getUser().getRealName());
if (IdUtil.isValid(vo.getUpdateUser())) {
vo.setUpdateUserRealName(userClient.userInfo(vo.getUpdateUser()).getData().getUser().getRealName());
}
}
}

@ -5,7 +5,9 @@ package org.springblade.desk.quality.service.impl;
import cn.hutool.core.bean.BeanUtil;
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;
@ -22,9 +24,11 @@ import org.springblade.desk.quality.pojo.vo.LiquidTankTaskCopyVO;
import org.springblade.desk.quality.pojo.vo.LiquidTankTaskVO;
import org.springblade.desk.quality.service.*;
import org.springblade.desk.quality.util.CodeUtil;
import org.springblade.desk.quality.wrapper.LiquidTankTaskCopyWrapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
@ -41,6 +45,9 @@ import java.util.List;
public class LiquidTankTaskCopyServiceImpl extends BaseServiceImpl<LiquidTankTaskCopyMapper, LiquidTankTaskCopy>
implements ILiquidTankTaskCopyService {
@Resource
private IWorkCenterService workCenterService;
@Resource
private ILiquidTankReportService reportService;
@Resource
@ -53,8 +60,7 @@ public class LiquidTankTaskCopyServiceImpl extends BaseServiceImpl<LiquidTankTas
private IRelTankReportItemService relReportItemService;
@Resource
private IRelTankWaveItemService relTankWaveItemService;
@Resource
private IWorkCenterService workCenterService;
@Override
public IPage<LiquidTankTaskCopyVO> selectLiquidTankTaskCopyPage(IPage<LiquidTankTaskCopyVO> page, LiquidTankTaskCopyVO liquidTankTaskCopy) {
@ -86,7 +92,7 @@ public class LiquidTankTaskCopyServiceImpl extends BaseServiceImpl<LiquidTankTas
}
WorkCenter wc = workCenterService.getById(list.get(0).getWorkCenterId());
if (wc == null) {
return R.fail("WorkCenter错误");
return R.fail("作业中心错误");
}
// 保存copy任务list数据
updateBatchById(list);
@ -103,7 +109,7 @@ public class LiquidTankTaskCopyServiceImpl extends BaseServiceImpl<LiquidTankTas
// 保存关联关系
relReportItemService.save(item);
}
return R.success();
return R.success("生成报告成功");
}
@Transactional
@ -114,7 +120,7 @@ public class LiquidTankTaskCopyServiceImpl extends BaseServiceImpl<LiquidTankTas
}
WorkCenter wc = workCenterService.getById(list.get(0).getWorkCenterId());
if (wc == null) {
return R.fail("WorkCenter错误");
return R.fail("作业中心错误");
}
// 保存copy任务list数据
updateBatchById(list);
@ -129,6 +135,22 @@ public class LiquidTankTaskCopyServiceImpl extends BaseServiceImpl<LiquidTankTas
// 保存关联关系
relTankWaveItemService.save(item);
}
return R.success();
return R.success("生成曲线成功");
}
@Override
public List<LiquidTankTaskCopyVO> getListByLiquidTankReportId(Long liquidTankReportId) {
LambdaQueryWrapper<RelTankReportItem> qw = Wrappers.lambdaQuery();
qw.eq(RelTankReportItem::getLiquidTankReportId, liquidTankReportId);
List<RelTankReportItem> relList = relReportItemService.list(qw);
List<LiquidTankTaskCopyVO> copyList = new ArrayList<>();
for (RelTankReportItem relOne : relList) {
Long taskId = relOne.getLiquidTankTaskId();
LiquidTankTaskCopy copy = getById(taskId);
LiquidTankTaskCopyVO copyVO = LiquidTankTaskCopyWrapper.build().entityVO(copy);
setVOValue(copyVO);
copyList.add(copyVO);
}
return copyList;
}
}

@ -293,17 +293,18 @@ public class LiquidTankTaskServiceImpl extends BaseServiceImpl<LiquidTankTaskMap
}
/**
* todo:
* 定时运行:每天00:00
* 周期性自动生成槽液任务
*
* @return 所有生成的任务
*/
public List<LiquidTankTask> generateAuto() {
public void generateAuto() {
log.info("========generate========start");
// 如果是节假日,则跳过生成。
// 如果是节假日,则跳过生成。 todo:
if (false) {
log.info("节假日,则跳过生成。");
return null;
return;
}
// 查询所有启用的槽液。
List<LiquidTank> tankList = liquidTankService.list(
@ -327,7 +328,16 @@ public class LiquidTankTaskServiceImpl extends BaseServiceImpl<LiquidTankTaskMap
rList.add(task);
}
log.info("========generate========end");
return rList;
}
@Override
public void checkRemind() {
// todo:
}
@Override
public void checkOut() {
// todo:
}
/**

@ -2,6 +2,7 @@ package org.springblade.desk.quality.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.quality.pojo.request.JobExt;
import java.time.*;
@ -244,6 +245,46 @@ public class JobExtUtil {
return dow == DayOfWeek.MONDAY;
}
/**
* JobExt 对象语义化界面表达
*
* @param je
* @return
*/
public static String getShowText(JobExt je) {
if (je == null) {
return "";
}
Integer type = je.getJobType();
if (type == null || type == 0) {
return "无效的类型";
}
StringBuilder sb = new StringBuilder();
if (type.equals(WEEK)) {
if (StringUtils.isBlank(je.getJobTypeWeekValue())) {
return "";
}
List<Integer> list = Func.toIntList(je.getJobTypeWeekValue());
sb.append(list.size());
sb.append("次/周");
} else if (type.equals(MONTH)) {
if (StringUtils.isBlank(je.getJobTypeMonthValue())) {
return "";
}
List<String> list = Func.toStrList(je.getJobTypeMonthValue());
sb.append(list.size());
sb.append("次/月");
} else if (type.equals(YEAR)) {
if (StringUtils.isBlank(je.getJobTypeYearValue())) {
return "";
}
List<String> list = Func.toStrList(je.getJobTypeYearValue());
sb.append(list.size());
sb.append("次/年");
}
return sb.toString();
}
/**
* 测试执行
*

@ -0,0 +1,37 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.quality.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.desk.quality.pojo.entity.LiquidTankReport;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportDetailVO;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportVO;
import java.util.Objects;
/**
* [槽液报告] 包装类,返回视图层所需的字段
*
* @author Tom Shuo
* @since 2025-12-18
*/
public class LiquidTankReportDetailWrapper extends BaseEntityWrapper<LiquidTankReport, LiquidTankReportDetailVO> {
public static LiquidTankReportDetailWrapper build() {
return new LiquidTankReportDetailWrapper();
}
@Override
public LiquidTankReportDetailVO entityVO(LiquidTankReport liquidTankReport) {
LiquidTankReportDetailVO VO = Objects.requireNonNull(BeanUtil.copyProperties(liquidTankReport, LiquidTankReportDetailVO.class));
//User createUser = UserCache.getUser(liquidTankReport.getCreateUser());
//User updateUser = UserCache.getUser(liquidTankReport.getUpdateUser());
//liquidTankReportVO.setCreateUserName(createUser.getName());
//liquidTankReportVO.setUpdateUserName(updateUser.getName());
return VO;
}
}
Loading…
Cancel
Save