周期性试验 修改。

develop-QA
Tom Li 5 months ago
parent 188d5c8ce6
commit 67a0062d61
  1. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/constant/BaseRequest.java
  2. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/constant/BaseValue.java
  3. 237
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/Plating.java
  4. 9
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/constant/CycleTestTaskConst.java
  5. 9
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/CycleTest.java
  6. 17
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/CycleTestTask.java
  7. 103
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/CycleTestTaskSearch.java
  8. 12
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetRedoScrapSearch.java
  9. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/CycleTestVO.java
  10. 12
      blade-service/blade-desk/pom.xml
  11. 332
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java
  12. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/CycleTestController.java
  13. 38
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/CycleTestTaskController.java
  14. 240
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/CycleTestTaskExcel.java
  15. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/CycleTestMapper.xml
  16. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/CycleTestTaskMapper.java
  17. 169
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/CycleTestTaskMapper.xml
  18. 77
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestTaskService2.java

@ -37,4 +37,8 @@ public interface BaseRequest {
* *
*/ */
String KEEP_USER_REAL_NAME = "keepUserRealName"; String KEEP_USER_REAL_NAME = "keepUserRealName";
/**
* status 状态集合
*/
String STATUS_LIST = "statusList";
} }

@ -16,6 +16,12 @@ public interface BaseValue {
*/ */
Long ADMIN_USER_ID = 1123598821738675201L; Long ADMIN_USER_ID = 1123598821738675201L;
/**
* Yes
*/
Integer YES = 1; Integer YES = 1;
/**
* No
*/
Integer NO = 0; Integer NO = 0;
} }

@ -24,134 +24,143 @@ import java.math.BigDecimal;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class Plating extends BaseEntity { public class Plating extends BaseEntity {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 配置码 * 配置码
*/ */
public static final String COL_CONFIG_NO = "CONFIG_NO"; public static final String COL_CONFIG_NO = "CONFIG_NO";
/** /**
* [镀种分类]id * [镀种分类]id
*/ */
public static final String COL_BC_ID = "BC_ID"; public static final String COL_BC_ID = "BC_ID";
/** /**
* 镀种 * 镀种
*/ */
public static final String COL_PLATING = "PLATING"; public static final String COL_PLATING = "PLATING";
/** /**
* 材料 * 材料
*/ */
public static final String COL_MATERIAL = "MATERIAL"; public static final String COL_MATERIAL = "MATERIAL";
/** /**
* 硬度 * 硬度
*/ */
public static final String COL_HARDNESS = "HARDNESS"; public static final String COL_HARDNESS = "HARDNESS";
/** /**
* 镀层编码 * 镀层编码
*/ */
public static final String COL_MAT_CODE = "MAT_CODE"; public static final String COL_MAT_CODE = "MAT_CODE";
/** /**
* 材料状态 * 材料状态
*/ */
public static final String COL_MAT_STATE = "MAT_STATE"; public static final String COL_MAT_STATE = "MAT_STATE";
/** /**
* 镀种小类 * 镀种小类
*/ */
public static final String COL_SUB_CLASS = "SUB_CLASS"; public static final String COL_SUB_CLASS = "SUB_CLASS";
/** /**
* 其他要求 * 其他要求
*/ */
public static final String COL_MEMO = "MEMO"; public static final String COL_MEMO = "MEMO";
/** /**
* 镀层代号 * 镀层代号
*/ */
public static final String COL_PLATE_CODE = "PLATE_CODE"; public static final String COL_PLATE_CODE = "PLATE_CODE";
/** /**
* 镀层物料 * 镀层物料
*/ */
public static final String COL_PLATE_GOODS_CODE = "PLATE_GOODS_CODE"; public static final String COL_PLATE_GOODS_CODE = "PLATE_GOODS_CODE";
/** /**
* 镀层厚度 * 镀层厚度
*/ */
public static final String COL_PLATE_THICKNESS = "PLATE_THICKNESS"; public static final String COL_PLATE_THICKNESS = "PLATE_THICKNESS";
/** /**
* 排序 * 排序
*/ */
public static final String COL_SORT = "SORT"; public static final String COL_SORT = "SORT";
/** /**
* 备注 * 备注
*/ */
public static final String COL_REMARK = "REMARK"; public static final String COL_REMARK = "REMARK";
/**
* 是否用于周期性试验
*/
public static final String COL_FLAG_CYCLE_TEST = "FLAG_CYCLE_TEST";
/** /**
* 配置码 * 配置码
*/ */
@Schema(description = "配置码") @Schema(description = "配置码")
private String configNo; private String configNo;
/** /**
* [镀种分类]id * [镀种分类]id
*/ */
@Schema(description = "[镀种分类]id") @Schema(description = "[镀种分类]id")
private Long bcId; private Long bcId;
/** /**
* 镀种 * 镀种
*/ */
@Schema(description = "镀种") @Schema(description = "镀种")
private String plating; private String plating;
/** /**
* 材料 * 材料
*/ */
@Schema(description = "材料") @Schema(description = "材料")
private String material; private String material;
/** /**
* 硬度 * 硬度
*/ */
@Schema(description = "硬度") @Schema(description = "硬度")
private String hardness; private String hardness;
/** /**
* 镀层编码 * 镀层编码
*/ */
@Schema(description = "镀层编码") @Schema(description = "镀层编码")
private String matCode; private String matCode;
/** /**
* 材料状态 * 材料状态
*/ */
@Schema(description = "材料状态") @Schema(description = "材料状态")
private String matState; private String matState;
/** /**
* 镀种小类 * 镀种小类
*/ */
@Schema(description = "镀种小类") @Schema(description = "镀种小类")
private Long subClass; private Long subClass;
/** /**
* 其他要求 * 其他要求
*/ */
@Schema(description = "其他要求") @Schema(description = "其他要求")
private String memo; private String memo;
/** /**
* 镀层代号 * 镀层代号
*/ */
@Schema(description = "镀层代号") @Schema(description = "镀层代号")
private String plateCode; private String plateCode;
/** /**
* 镀层物料 * 镀层物料
*/ */
@Schema(description = "镀层物料") @Schema(description = "镀层物料")
private String plateGoodsCode; private String plateGoodsCode;
/** /**
* 镀层厚度 * 镀层厚度
*/ */
@Schema(description = "镀层厚度") @Schema(description = "镀层厚度")
private String plateThickness; private String plateThickness;
/** /**
* 排序 * 排序
*/ */
@Schema(description = "排序") @Schema(description = "排序")
private Long sort; private Long sort;
/** /**
* 备注 * 备注
*/ */
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
/**
* 是否用于周期性试验
*/
@Schema(description = "是否用于周期性试验")
private Integer flagCycleTest;
} }

@ -46,5 +46,12 @@ public interface CycleTestTaskConst {
*/ */
String DICT_STATUS = "CycleTestTask-Status"; String DICT_STATUS = "CycleTestTask-Status";
/**
* 临期
*/
Integer FILTER_TYPE_APPROACH = 1;
/**
* 超期
*/
Integer FILTER_TYPE_OUT = 2;
} }

@ -155,6 +155,10 @@ public class CycleTest extends BaseEntity {
* [镀种]名称 * [镀种]名称
*/ */
public static final String COL_PLATE_NAME = "PLATE_NAME"; public static final String COL_PLATE_NAME = "PLATE_NAME";
/**
* [镀种]ids
*/
public static final String COL_PLATE_IDS = "PLATE_IDS";
/** /**
* [周期试验]编码 * [周期试验]编码
@ -316,4 +320,9 @@ public class CycleTest extends BaseEntity {
*/ */
@Schema(description = "[镀种]名称") @Schema(description = "[镀种]名称")
private String plateName; private String plateName;
/**
* [镀种]ids
*/
@Schema(description = "[镀种]ids")
private String plateIds;
} }

@ -141,10 +141,18 @@ public class CycleTestTask extends BaseEntity {
* [周期试验]id * [周期试验]id
*/ */
public static final String COL_CYCLE_TEST_ID = "CYCLE_TEST_ID"; public static final String COL_CYCLE_TEST_ID = "CYCLE_TEST_ID";
/**
* 临期标记
*/
public static final String COL_FLAG_APPROACH = "FLAG_APPROACH"; public static final String COL_FLAG_APPROACH = "FLAG_APPROACH";
/**
* 超期标记
*/
public static final String COL_FLAG_OUT = "FLAG_OUT"; public static final String COL_FLAG_OUT = "FLAG_OUT";
/**
* 超期原因
*/
public static final String COl_REASON_FOR_OUT = "REASON_FOR_OUT";
/** /**
* [周期试验任务]编码 * [周期试验任务]编码
@ -296,4 +304,9 @@ public class CycleTestTask extends BaseEntity {
*/ */
@Schema(description = "超期标记") @Schema(description = "超期标记")
private Integer flagOut; private Integer flagOut;
/**
* 超期原因
*/
@Schema(description = "超期原因")
private String reasonForOut;
} }

@ -0,0 +1,103 @@
package org.springblade.desk.quality.pojo.request;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springblade.desk.quality.pojo.entity.CycleTestTask;
import org.springblade.desk.util.json.deserializer.DateBeginOfDayDeserializer;
import org.springblade.desk.util.json.deserializer.DateEndOfDayDeserializer;
import org.springblade.desk.util.json.deserializer.LocalDateTimeBeginOfDayDeserializer;
import org.springblade.desk.util.json.deserializer.LocalDateTimeEndOfDayDeserializer;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class CycleTestTaskSearch extends CycleTestTask {
@Schema(description = "过滤类型 1临期2超期")
private Integer filterType = 0;
@JsonDeserialize(using = DateBeginOfDayDeserializer.class)
@Schema(description = "创建时间-开始")
private Date createTimeStart;
@JsonDeserialize(using = DateEndOfDayDeserializer.class)
@Schema(description = "创建时间-结束")
private Date createTimeEnd;
@Schema(description = "状态数组")
private List<Integer> statusList;
/**
* [周期试验项目]名称
*/
@Schema(description = "[周期试验项目]名称")
private String cycleTestItemName;
/**
* [周期试验项目]试验条件
*/
@Schema(description = "[周期试验项目]试验条件")
private String cycleTestItemCondition;
/**
* [周期试验标准]名称
*/
@Schema(description = "[周期试验项目]试验标准")
private String cycleTestStandardName;
/**
* 工艺员[用户]姓名
*/
@Schema(description = "工艺员[用户]姓名")
private String processUserName;
/**
* 一次性任务生成日期-开始
*/
@JsonDeserialize(using = LocalDateTimeBeginOfDayDeserializer.class)
@Schema(description = "一次性任务生成日期-开始")
private LocalDateTime oneTimeGenDateStart;
/**
* 一次性任务生成日期-结束
*/
@JsonDeserialize(using = LocalDateTimeEndOfDayDeserializer.class)
@Schema(description = "一次性任务生成日期-结束")
private LocalDateTime oneTimeGenDateEnd;
/**
* 下发时间-开始
*/
@JsonDeserialize(using = LocalDateTimeBeginOfDayDeserializer.class)
@Schema(description = "下发时间-开始")
private LocalDateTime issueDateStart;
/**
* 下发时间-结束
*/
@JsonDeserialize(using = LocalDateTimeEndOfDayDeserializer.class)
@Schema(description = "下发时间-结束")
private LocalDateTime issueDateEnd;
/**
* 接收时间-开始
*/
@JsonDeserialize(using = LocalDateTimeBeginOfDayDeserializer.class)
@Schema(description = "接收时间-开始")
private LocalDateTime acceptDateStart;
/**
* 接收时间-结束
*/
@JsonDeserialize(using = LocalDateTimeEndOfDayDeserializer.class)
@Schema(description = "接收时间-结束")
private LocalDateTime acceptDateEnd;
/**
* 完成时间-开始
*/
@JsonDeserialize(using = LocalDateTimeBeginOfDayDeserializer.class)
@Schema(description = "完成时间-开始")
private LocalDateTime finishDateStart;
/**
* 完成时间-结束
*/
@JsonDeserialize(using = LocalDateTimeEndOfDayDeserializer.class)
@Schema(description = "完成时间-结束")
private LocalDateTime finishDateEnd;
}

@ -25,20 +25,20 @@ public class ReviewSheetRedoScrapSearch extends ReviewSheet {
/** /**
* 使用 toReviewDate 字段 * 使用 toReviewDate 字段
*/ */
@Schema(description = "创建提请时间-开始")
@JsonDeserialize(using = LocalDateTimeBeginOfDayDeserializer.class) @JsonDeserialize(using = LocalDateTimeBeginOfDayDeserializer.class)
@Schema(description = "创建提请时间-开始")
private LocalDateTime createTimeStart; private LocalDateTime createTimeStart;
@JsonDeserialize(using = DateBeginOfDayDeserializer.class)
@Schema(description = "创建时间-开始")
private Date baseCreateTimeStart;
/** /**
* 使用 toReviewDate 字段 * 使用 toReviewDate 字段
*/ */
@Schema(description = "创建提请时间-结束")
@JsonDeserialize(using = LocalDateTimeEndOfDayDeserializer.class) @JsonDeserialize(using = LocalDateTimeEndOfDayDeserializer.class)
@Schema(description = "创建提请时间-结束")
private LocalDateTime createTimeEnd; private LocalDateTime createTimeEnd;
@Schema(description = "创建时间-开始")
@JsonDeserialize(using = DateBeginOfDayDeserializer.class)
private Date baseCreateTimeStart;
@Schema(description = "创建时间-结束")
@JsonDeserialize(using = DateEndOfDayDeserializer.class) @JsonDeserialize(using = DateEndOfDayDeserializer.class)
@Schema(description = "创建时间-结束")
private Date baseCreateTimeEnd; private Date baseCreateTimeEnd;
@Schema(description = "提请人员[用户]真名") @Schema(description = "提请人员[用户]真名")
private String createUserRealName; private String createUserRealName;

@ -73,4 +73,7 @@ public class CycleTestVO extends CycleTest {
*/ */
@Schema(description = "standard") @Schema(description = "standard")
private CycleTestStandardVO standard; private CycleTestStandardVO standard;
@Schema(description = "[镀种]ids")
private String plateIds;
} }

@ -76,6 +76,12 @@
<groupId>com.videasoft</groupId> <groupId>com.videasoft</groupId>
<artifactId>vwebfrk-base</artifactId> <artifactId>vwebfrk-base</artifactId>
<version>1.4.6-RELEASE</version> <version>1.4.6-RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.olap4j</groupId>
<artifactId>olap4j</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.codehaus.groovy</groupId> <groupId>org.codehaus.groovy</groupId>
@ -97,6 +103,12 @@
<groupId>com.lowagie</groupId> <groupId>com.lowagie</groupId>
<artifactId>itext</artifactId> <artifactId>itext</artifactId>
<version>2.1.7</version> <version>2.1.7</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>

@ -3,8 +3,10 @@
*/ */
package org.springblade.desk.basic.controller; package org.springblade.desk.basic.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -16,6 +18,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
@ -25,12 +28,14 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst; import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.constant.BaseValue;
import org.springblade.desk.basic.excel.PlatingExcel; import org.springblade.desk.basic.excel.PlatingExcel;
import org.springblade.desk.basic.pojo.entity.Plating; import org.springblade.desk.basic.pojo.entity.Plating;
import org.springblade.desk.basic.pojo.vo.PlatingVO; import org.springblade.desk.basic.pojo.vo.PlatingVO;
import org.springblade.desk.basic.service.IPlatingService; import org.springblade.desk.basic.service.IPlatingService;
import org.springblade.desk.basic.util.ExcelExtUtil; import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.PlatingWrapper; import org.springblade.desk.basic.wrapper.PlatingWrapper;
import org.springblade.desk.quality.pojo.entity.ReviewDuty;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -55,184 +60,199 @@ import java.util.stream.Collectors;
public class PlatingController extends BladeController { public class PlatingController extends BladeController {
@Resource @Resource
private IPlatingService service; private IPlatingService service;
/** /**
* [镀种] 详情 * [镀种] 详情
*/ */
@GetMapping("/detail") @GetMapping("/detail")
@ApiOperationSupport(order = 10) @ApiOperationSupport(order = 10)
@Operation(summary = "详情", description = "传入Plating Obj") @Operation(summary = "详情", description = "传入Plating Obj")
public R<PlatingVO> detail(Plating plating) { public R<PlatingVO> detail(Plating plating) {
QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating); QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating);
Plating detail = service.getOne(qw); Plating detail = service.getOne(qw);
PlatingVO detailVO = PlatingWrapper.build().entityVO(detail); PlatingVO detailVO = PlatingWrapper.build().entityVO(detail);
service.setVOValue(detailVO); service.setVOValue(detailVO);
return R.data(detailVO); return R.data(detailVO);
} }
/** /**
* [镀种] list分页 * [镀种] list分页
*/ */
@GetMapping("/list") @GetMapping("/list")
@ApiOperationSupport(order = 20) @ApiOperationSupport(order = 20)
@Operation(summary = "list分页", description = "传入Plating Obj") @Operation(summary = "list分页", description = "传入Plating Obj")
public R<IPage<PlatingVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> plating, public R<IPage<PlatingVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> plating,
Query query) { Query query) {
QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating, Plating.class); QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating, Plating.class);
IPage<Plating> pages = service.page(Condition.getPage(query), qw); IPage<Plating> pages = service.page(Condition.getPage(query), qw);
IPage<PlatingVO> pagesVO = PlatingWrapper.build().pageVO(pages); IPage<PlatingVO> pagesVO = PlatingWrapper.build().pageVO(pages);
pagesVO.getRecords() pagesVO.getRecords()
.stream() .stream()
.peek(service::setVOValue) .peek(service::setVOValue)
.collect(Collectors.toList()); .collect(Collectors.toList());
return R.data(pagesVO); return R.data(pagesVO);
} }
/** /**
* [镀种] page分页 * [镀种] page分页
*/ */
@GetMapping("/page") @GetMapping("/page")
@ApiOperationSupport(order = 21) @ApiOperationSupport(order = 21)
@Operation(summary = "page分页", description = "传入Plating Obj") @Operation(summary = "page分页", description = "传入Plating Obj")
public R<IPage<PlatingVO>> page(PlatingVO plating, Query query) { public R<IPage<PlatingVO>> page(PlatingVO plating, Query query) {
IPage<PlatingVO> pagesVO = service.selectPlatingPage( IPage<PlatingVO> pagesVO = service.selectPlatingPage(
Condition.getPage(query), plating Condition.getPage(query), plating
); );
return R.data(pagesVO); return R.data(pagesVO);
} }
/** /**
* [镀种] list下拉选择 * [镀种] list下拉选择
*/ */
@GetMapping("/listForSelect") @GetMapping("/listForSelect")
@ApiOperationSupport(order = 22) @ApiOperationSupport(order = 22)
@Operation(summary = "list下拉选择", description = "") @Operation(summary = "list下拉选择", description = "")
public R<List<PlatingVO>> listForSelect() { public R<List<PlatingVO>> listForSelect() {
List<Plating> list = service.list(); List<Plating> list = service.list();
List<PlatingVO> listVO = PlatingWrapper.build().listVO(list); List<PlatingVO> listVO = PlatingWrapper.build().listVO(list);
return R.data(listVO); return R.data(listVO);
}
/**
* [镀种] list下拉选择-周期性试验专用
*/
@GetMapping("/listForSelectCycleTest")
@ApiOperationSupport(order = 22)
@Operation(summary = "list下拉选择-周期性试验专用", description = "")
public R<List<PlatingVO>> listForSelectCycleTest() {
LambdaQueryWrapper<Plating> qw = Wrappers.lambdaQuery(Plating.class)
.eq(Plating::getFlagCycleTest, BaseValue.YES)
.eq(Plating::getIsDeleted, CommonConstant.DELETE_FALSE);
List<Plating> list = service.list(qw);
List<PlatingVO> listVO = PlatingWrapper.build().listVO(list);
return R.data(listVO);
} }
/** /**
* [镀种] 新增一条 * [镀种] 新增一条
*/ */
@PostMapping("/save") @PostMapping("/save")
@ApiOperationSupport(order = 30) @ApiOperationSupport(order = 30)
@Operation(summary = "新增一条", description = "传入Plating Obj") @Operation(summary = "新增一条", description = "传入Plating Obj")
public R save(@Valid @RequestBody Plating addOne) { public R save(@Valid @RequestBody Plating addOne) {
addOne.setId(null); addOne.setId(null);
return R.status(service.save(addOne)); return R.status(service.save(addOne));
} }
/** /**
* [镀种] 新增批量 * [镀种] 新增批量
*/ */
@PostMapping("/saveBat") @PostMapping("/saveBat")
@ApiOperationSupport(order = 31) @ApiOperationSupport(order = 31)
@Operation(summary = "新增批量", description = "传入Plating List") @Operation(summary = "新增批量", description = "传入Plating List")
public R saveBat(@Valid @RequestBody List<Plating> addList) { public R saveBat(@Valid @RequestBody List<Plating> addList) {
addList.forEach(one -> { addList.forEach(one -> {
one.setId(null); one.setId(null);
}); });
return R.status(service.saveBatch(addList)); return R.status(service.saveBatch(addList));
} }
/** /**
* [镀种] 修改一条 * [镀种] 修改一条
*/ */
@PostMapping("/update") @PostMapping("/update")
@ApiOperationSupport(order = 40) @ApiOperationSupport(order = 40)
@Operation(summary = "修改一条", description = "传入Plating Obj") @Operation(summary = "修改一条", description = "传入Plating Obj")
public R update(@Valid @RequestBody Plating updateOne) { public R update(@Valid @RequestBody Plating updateOne) {
return R.status(service.updateById(updateOne)); return R.status(service.updateById(updateOne));
} }
/** /**
* [镀种] 修改批量 * [镀种] 修改批量
*/ */
@PostMapping("/updateBat") @PostMapping("/updateBat")
@ApiOperationSupport(order = 41) @ApiOperationSupport(order = 41)
@Operation(summary = "修改批量", description = "传入Plating List") @Operation(summary = "修改批量", description = "传入Plating List")
public R updateBat(@Valid @RequestBody List<Plating> updateList) { public R updateBat(@Valid @RequestBody List<Plating> updateList) {
return R.status(service.updateBatchById(updateList)); return R.status(service.updateBatchById(updateList));
} }
/** /**
* [镀种] 新增或修改一条 * [镀种] 新增或修改一条
*/ */
@PostMapping("/submit") @PostMapping("/submit")
@ApiOperationSupport(order = 50) @ApiOperationSupport(order = 50)
@Operation(summary = "新增或修改一条", description = "传入Plating Obj") @Operation(summary = "新增或修改一条", description = "传入Plating Obj")
public R submit(@Valid @RequestBody Plating mergeOne) { public R submit(@Valid @RequestBody Plating mergeOne) {
return R.status(service.saveOrUpdate(mergeOne)); return R.status(service.saveOrUpdate(mergeOne));
} }
/** /**
* [镀种] 新增或修改批量 * [镀种] 新增或修改批量
*/ */
@PostMapping("/submitBat") @PostMapping("/submitBat")
@ApiOperationSupport(order = 51) @ApiOperationSupport(order = 51)
@Operation(summary = "新增或修改批量", description = "传入Plating List") @Operation(summary = "新增或修改批量", description = "传入Plating List")
public R submitBat(@Valid @RequestBody List<Plating> mergeList) { public R submitBat(@Valid @RequestBody List<Plating> mergeList) {
return R.status(service.saveOrUpdateBatch(mergeList)); return R.status(service.saveOrUpdateBatch(mergeList));
} }
/** /**
* [镀种] 逻辑删除 * [镀种] 逻辑删除
*/ */
@PostMapping("/remove") @PostMapping("/remove")
@ApiOperationSupport(order = 61) @ApiOperationSupport(order = 61)
@Operation(summary = "逻辑删除", description = "传入ids") @Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(service.deleteLogic(Func.toLongList(ids))); return R.status(service.deleteLogic(Func.toLongList(ids)));
} }
/** /**
* [镀种] 导出Excel * [镀种] 导出Excel
*/ */
@GetMapping("/exportExcel") @GetMapping("/exportExcel")
@ApiOperationSupport(order = 70) @ApiOperationSupport(order = 70)
@Operation(summary = "导出Excel", description = "传入Plating") @Operation(summary = "导出Excel", description = "传入Plating")
public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> plating, public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> plating,
BladeUser bladeUser, HttpServletResponse response) { BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating, Plating.class); QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating, Plating.class);
//if (!AuthUtil.isAdministrator()) { //if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(Plating::getTenantId, bladeUser.getTenantId()); // queryWrapper.lambda().eq(Plating::getTenantId, bladeUser.getTenantId());
//} //}
//queryWrapper.lambda().eq(PlatingEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); //queryWrapper.lambda().eq(PlatingEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<PlatingExcel> list = service.exportPlating(qw); List<PlatingExcel> list = service.exportPlating(qw);
ExcelUtil.export(response, "[镀种]数据" + DateUtil.time(), ExcelUtil.export(response, "[镀种]数据" + DateUtil.time(),
"[镀种]数据表", list, PlatingExcel.class); "[镀种]数据表", list, PlatingExcel.class);
} }
/** /**
* [镀种] 下载Excel模板 * [镀种] 下载Excel模板
*/ */
@GetMapping("/downloadExcelTemplate") @GetMapping("/downloadExcelTemplate")
@ApiOperationSupport(order = 71) @ApiOperationSupport(order = 71)
@Operation(summary = "下载Excel模板", description = "") @Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<org.springframework.core.io.Resource> downloadExcelTemplate() { public ResponseEntity<org.springframework.core.io.Resource> downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate( return ExcelExtUtil.downloadXlsTemplate(
"Excel/QA/ImportTemplate-CycleTestItem.xls", "Excel/QA/ImportTemplate-CycleTestItem.xls",
"导入模版-周期试验项目.xls"); "导入模版-周期试验项目.xls");
} }
/** /**
* [镀种] 导入Excel * [镀种] 导入Excel
*/ */
@PostMapping("/importExcel") @PostMapping("/importExcel")
@ApiOperationSupport(order = 72) @ApiOperationSupport(order = 72)
@Operation(summary = "导入Excel", description = "MultipartFile") @Operation(summary = "导入Excel", description = "MultipartFile")
public R importExcel(@RequestParam("file") MultipartFile file) { public R importExcel(@RequestParam("file") MultipartFile file) {
R checkR = ExcelExtUtil.importExcelCheck(file); R checkR = ExcelExtUtil.importExcelCheck(file);
if (checkR != null) { if (checkR != null) {
return checkR; return checkR;
} }
List<Plating> importList = ExcelUtil.read( List<Plating> importList = ExcelUtil.read(
file, 0, 1, Plating.class file, 0, 1, Plating.class
); );
return R.status(service.saveBatch(importList)); return R.status(service.saveBatch(importList));
} }
} }

@ -103,6 +103,10 @@ public class CycleTestController extends BladeController {
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入cycleTest") @Operation(summary = "新增", description = "传入cycleTest")
public R save(@Valid @RequestBody CycleTestSubmit ct) { public R save(@Valid @RequestBody CycleTestSubmit ct) {
if (ct.getTestDuration() == null) {
// 试验时长默认是1天
ct.setTestDuration(1);
}
return service.saveSubmit(ct); return service.saveSubmit(ct);
} }

@ -3,6 +3,7 @@
*/ */
package org.springblade.desk.quality.controller; 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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -22,13 +23,16 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.quality.constant.QAModuleConst; import org.springblade.desk.quality.constant.QAModuleConst;
import org.springblade.desk.quality.excel.CycleTestTaskExcel; import org.springblade.desk.quality.excel.CycleTestTaskExcel;
import org.springblade.desk.quality.pojo.entity.CycleTestTask; import org.springblade.desk.quality.pojo.entity.CycleTestTask;
import org.springblade.desk.quality.pojo.request.CycleTestTaskSearch;
import org.springblade.desk.quality.pojo.vo.CycleTestTaskVO; import org.springblade.desk.quality.pojo.vo.CycleTestTaskVO;
import org.springblade.desk.quality.pojo.vo.InspectionTaskListVO;
import org.springblade.desk.quality.service.CycleTestTaskService2; import org.springblade.desk.quality.service.CycleTestTaskService2;
import org.springblade.desk.quality.service.ICycleTestTaskService; import org.springblade.desk.quality.service.ICycleTestTaskService;
import org.springblade.desk.quality.wrapper.CycleTestTaskWrapper; import org.springblade.desk.quality.wrapper.CycleTestTaskWrapper;
@ -36,6 +40,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -85,6 +90,19 @@ public class CycleTestTaskController extends BladeController {
return service.list(cycleTestTask, filterType, query); return service.list(cycleTestTask, filterType, query);
} }
/**
* [周期试验任务] 多条件 分页
*/
@PostMapping("/listSearch")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入inspectionTask")
public R<IPage<CycleTestTaskVO>> listSearch(@Valid @RequestBody CycleTestTaskSearch search,
@RequestBody Query query) {
log.info("search = {}", search);
log.info("query = {}", query);
log.info("getUserRole = {}", AuthUtil.getUserRole());
return service.listSearch(Condition.getPage(query), search);
}
/** /**
* [周期试验任务] 自定义分页 * [周期试验任务] 自定义分页
@ -139,20 +157,23 @@ public class CycleTestTaskController extends BladeController {
/** /**
* 导出数据 * 导出数据
*/ */
@IsAdmin @PostMapping("/export-excel")
@GetMapping("/export-excel")
@ApiOperationSupport(order = 8) @ApiOperationSupport(order = 8)
@Operation(summary = "导出数据", description = "传入cycleTestTask") @Operation(summary = "导出数据", description = "传入cycleTestTask")
public void exportCycleTestTask(@Parameter(hidden = true) @RequestParam Map<String, Object> cycleTestTask, public void exportCycleTestTask(@Valid @RequestBody CycleTestTaskSearch search,
BladeUser bladeUser, HttpServletResponse response) { BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<CycleTestTask> queryWrapper = Condition.getQueryWrapper(cycleTestTask, CycleTestTask.class); // QueryWrapper<CycleTestTask> queryWrapper = Condition.getQueryWrapper(cycleTestTask, CycleTestTask.class);
//if (!AuthUtil.isAdministrator()) { //if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(CycleTestTask::getTenantId, bladeUser.getTenantId()); // queryWrapper.lambda().eq(CycleTestTask::getTenantId, bladeUser.getTenantId());
//} //}
//queryWrapper.lambda().eq(CycleTestTaskEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); //queryWrapper.lambda().eq(CycleTestTaskEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<CycleTestTaskExcel> list = cycleTestTaskGenService.exportCycleTestTask(queryWrapper);
List<CycleTestTaskVO> list = service.listSearchWithoutPage(search);
// todo:excel格式
List<CycleTestTaskExcel> listExcel = BeanUtil.copyToList(list, CycleTestTaskExcel.class);
ExcelUtil.export(response, "[周期试验任务]数据" + DateUtil.time(), ExcelUtil.export(response, "[周期试验任务]数据" + DateUtil.time(),
"[周期试验任务]数据表", list, CycleTestTaskExcel.class); "[周期试验任务]数据表", listExcel, CycleTestTaskExcel.class);
} }
@PostMapping("/issue-one") @PostMapping("/issue-one")
@ -193,8 +214,9 @@ public class CycleTestTaskController extends BladeController {
@Parameter(description = "是否进行试验-[1]:试验;[2]:不试验;", required = true) @RequestParam Integer isDone, @Parameter(description = "是否进行试验-[1]:试验;[2]:不试验;", required = true) @RequestParam Integer isDone,
@Parameter(description = "试验时间") @RequestParam(required = false, defaultValue = "") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate testDate, @Parameter(description = "试验时间") @RequestParam(required = false, defaultValue = "") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate testDate,
@Parameter(description = "试验结果") @RequestParam(required = false, defaultValue = "0") Long testAttachId, @Parameter(description = "试验结果") @RequestParam(required = false, defaultValue = "0") Long testAttachId,
@Parameter(description = "不试验原因") @RequestParam(required = false, defaultValue = "") String reasonForNo) { @Parameter(description = "不试验原因") @RequestParam(required = false, defaultValue = "") String reasonForNo,
return service.fill(id, isDone, testDate, testAttachId, reasonForNo); @Parameter(description = "超期原因") @RequestParam(required = false, defaultValue = "") String reasonForOut) {
return service.fill(id, isDone, testDate, testAttachId, reasonForNo, reasonForOut);
} }
@GetMapping("/testAuto") @GetMapping("/testAuto")

@ -8,6 +8,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
@ -18,6 +19,7 @@ import java.time.LocalDateTime;
/** /**
* [周期试验任务] Excel实体类 * [周期试验任务] Excel实体类
* Web页中列一致
* *
* @author Tom Shuo * @author Tom Shuo
* @since 2025-12-22 * @since 2025-12-22
@ -28,175 +30,73 @@ import java.time.LocalDateTime;
@ContentRowHeight(18) @ContentRowHeight(18)
public class CycleTestTaskExcel implements Serializable { public class CycleTestTaskExcel implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* [周期试验任务]编码 * [周期试验任务]编码
*/ */
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("[周期试验任务]编码") @ExcelProperty("任务编号")
private String code; private String code;
/** @Schema(description = "项目名称")
* [周期试验任务]类型-[1]:周期性;[2]一次性; @ColumnWidth(20)
*/ @ExcelProperty("项目名称")
@ColumnWidth(20) private String cycleTestItemName;
@ExcelProperty("[周期试验任务]类型-[1]:周期性;[2]一次性;") @Schema(description = "试验条件")
private Long cycleTestTaskType; @ColumnWidth(20)
/** @ExcelProperty("试验条件")
* 名称 private String cycleTestItemCondition;
*/ @Schema(description = "试验标准")
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("名称") @ExcelProperty("试验标准")
private String name; private String cycleTestStandardName;
/** /**
* 配置[班组]id * 试验件类型-[1]:零件;[2]:试片; todo:
*/ */
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("配置[班组]id") @ExcelProperty("试验件")
private BigDecimal configTeamId; private String testType;
/** /**
* 配置[外协商]id * 临期天数
*/ */
@ColumnWidth(20) @Schema(description = "临期天数")
@ExcelProperty("配置[外协商]id") @ColumnWidth(20)
private BigDecimal configOemId; @ExcelProperty("临期天数")
/** private String countDayToPlanedFinish;
* [周期性试验项目]id /**
*/ * 状态名称
@ColumnWidth(20) */
@ExcelProperty("[周期性试验项目]id") @Schema(description = "状态")
private BigDecimal cycleTestItemId; @ColumnWidth(20)
/** @ExcelProperty("状态")
* 试验件类型-[1]:零件;[2]:试片; private String statusName;
*/ /**
@ColumnWidth(20) * 工艺员[用户]姓名
@ExcelProperty("试验件类型-[1]:零件;[2]:试片;") */
private BigDecimal testType; @Schema(description = "工艺员[用户]姓名")
/** @ColumnWidth(20)
* 工艺员[用户]id @ExcelProperty("状态")
*/ private String processUserName;
@ColumnWidth(20) /**
@ExcelProperty("工艺员[用户]id") * 任务生成时间
private BigDecimal processUserId; */
/** @Schema(description = "任务生成时间")
* 试验技术员[用户]id @ColumnWidth(20)
*/ @ExcelProperty("任务生成时间")
@ColumnWidth(20) private LocalDateTime genDatetime;
@ExcelProperty("试验技术员[用户]id") /**
private BigDecimal testUserId; * 接收时间
/** */
* 下发[班组]id @Schema(description = "接收时间")
*/ @ColumnWidth(20)
@ColumnWidth(20) @ExcelProperty("接收时间")
@ExcelProperty("下发[班组]id") private LocalDateTime acceptDate;
private BigDecimal sendTeamId; /**
/** * 完成时间
* 下发[外协商]id */
*/ @Schema(description = "完成时间")
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("下发[外协商]id") @ExcelProperty("完成时间")
private BigDecimal sendOemId; private LocalDateTime finishDate;
/**
* 下发人员[用户]id
*/
@ColumnWidth(20)
@ExcelProperty("下发人员[用户]id")
private BigDecimal sendUserId;
/**
* 数量
*/
@ColumnWidth(20)
@ExcelProperty("数量")
private Long quantity;
/**
* [镀种]id
*/
@ColumnWidth(20)
@ExcelProperty("[镀种]id")
private String plateId;
/**
* 批次号
*/
@ColumnWidth(20)
@ExcelProperty("批次号")
private String batchCode;
/**
* 专家描述
*/
@ColumnWidth(20)
@ExcelProperty("专家描述")
private String expertDesc;
/**
* 评审描述
*/
@ColumnWidth(20)
@ExcelProperty("评审描述")
private String reviewDesc;
/**
* 排序
*/
@ColumnWidth(20)
@ExcelProperty("排序")
private Long sort;
/**
* 备注
*/
@ColumnWidth(20)
@ExcelProperty("备注")
private String remark;
/**
* 填报附件
*/
@ColumnWidth(20)
@ExcelProperty("填报附件")
private BigDecimal testAttachId;
/**
* 是否进行试验-[1]:试验;[2]:不试验;
*/
@ColumnWidth(20)
@ExcelProperty("是否进行试验-[1]:试验;[2]:不试验;")
private Long isDone;
/**
* 试验时间
*/
@ColumnWidth(20)
@ExcelProperty("试验时间")
private LocalDateTime testDate;
/**
* 一次性任务生成日期
*/
@ColumnWidth(20)
@ExcelProperty("一次性任务生成日期")
private LocalDateTime oneTimeGenDate;
/**
* 下发时间
*/
@ColumnWidth(20)
@ExcelProperty("下发时间")
private LocalDateTime issueDate;
/**
* 接收时间
*/
@ColumnWidth(20)
@ExcelProperty("接收时间")
private LocalDateTime acceptDate;
/**
* 完成时间
*/
@ColumnWidth(20)
@ExcelProperty("完成时间")
private LocalDateTime finishDate;
/**
* 不试验原因
*/
@ColumnWidth(20)
@ExcelProperty("不试验原因")
private String reasonForNo;
/**
* [周期试验]id
*/
@ColumnWidth(20)
@ExcelProperty("[周期试验]id")
private BigDecimal cycleTestId;
} }

@ -36,6 +36,7 @@
<result column="IS_PUT_OFF" property="isPutOff"/> <result column="IS_PUT_OFF" property="isPutOff"/>
<result column="MIN_DO_TEST_COUNT" property="minDoTestCount"/> <result column="MIN_DO_TEST_COUNT" property="minDoTestCount"/>
<result column="TEST_MAT" property="testMat"/> <result column="TEST_MAT" property="testMat"/>
<result column="PLATE_IDS" property="plateIds"/>
</resultMap> </resultMap>
<select id="selectCycleTestPage" resultMap="cycleTestResultMap"> <select id="selectCycleTestPage" resultMap="cycleTestResultMap">

@ -9,7 +9,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springblade.desk.quality.excel.CycleTestTaskExcel; import org.springblade.desk.quality.excel.CycleTestTaskExcel;
import org.springblade.desk.quality.pojo.entity.CycleTestTask; import org.springblade.desk.quality.pojo.entity.CycleTestTask;
import org.springblade.desk.quality.pojo.request.CycleTestTaskSearch;
import org.springblade.desk.quality.pojo.request.ReviewSheetInitSearch;
import org.springblade.desk.quality.pojo.vo.CycleTestTaskVO; import org.springblade.desk.quality.pojo.vo.CycleTestTaskVO;
import org.springblade.desk.quality.pojo.vo.ReviewSheetInitVO;
import java.util.List; import java.util.List;
@ -37,4 +40,8 @@ public interface CycleTestTaskMapper extends BaseMapper<CycleTestTask> {
* @return List<CycleTestTaskExcel> * @return List<CycleTestTaskExcel>
*/ */
List<CycleTestTaskExcel> exportCycleTestTask(@Param("ew") Wrapper<CycleTestTask> queryWrapper); List<CycleTestTaskExcel> exportCycleTestTask(@Param("ew") Wrapper<CycleTestTask> queryWrapper);
List<CycleTestTaskVO> listSearch(IPage<CycleTestTaskVO> page, @Param("q") CycleTestTaskSearch search);
List<CycleTestTaskVO> listSearchWithoutPage(@Param("q") CycleTestTaskSearch search);
} }

@ -36,6 +36,7 @@
<result column="CYCLE_TEST_ID" property="cycleTestId"/> <result column="CYCLE_TEST_ID" property="cycleTestId"/>
<result column="FLAG_APPROACH" property="flagApproach"/> <result column="FLAG_APPROACH" property="flagApproach"/>
<result column="FLAG_OUT" property="flagOut"/> <result column="FLAG_OUT" property="flagOut"/>
<result column="REASON_FOR_OUT" property="reasonForOut"/>
</resultMap> </resultMap>
<select id="selectCycleTestTaskPage" resultMap="cycleTestTaskResultMap"> <select id="selectCycleTestTaskPage" resultMap="cycleTestTaskResultMap">
@ -62,4 +63,172 @@
SELECT * SELECT *
FROM QA_CYCLE_TEST_TASK ${ew.customSqlSegment} FROM QA_CYCLE_TEST_TASK ${ew.customSqlSegment}
</select> </select>
<select id="listSearch"
resultType="org.springblade.desk.quality.pojo.vo.CycleTestTaskVO">
SELECT t.*
FROM QA_CYCLE_TEST_TASK t
-- 试验周期 cyc
LEFT JOIN QA_CYCLE_TEST cyc ON t.CYCLE_TEST_ID = cyc.ID
-- 试验项目 item
LEFT JOIN QA_CYCLE_TEST_ITEM item ON t.CYCLE_TEST_ITEM_ID = item.ID
-- 试验标准 st
LEFT JOIN QA_CYCLE_TEST_STANDARD st ON item.CYCLE_TEST_STANDARD_ID = st.ID
-- 用户 user
LEFT JOIN BLADE_USER bl_user ON t.PROCESS_USER_ID = bl_user.ID
WHERE (
t.IS_DELETED = 0
)
<if test="q.filterType != null and q.filterType == 1">
AND t.FLAG_APPROACH = 1
</if>
<if test="q.filterType != null and q.filterType == 2">
AND t.FLAG_OUT = 1
</if>
<if test="q.processUserId != null">
AND t.PROCESS_USER_ID = #{q.processUserId}
</if>
<if test="q.status != null">
AND t.STATUS = #{q.status}
</if>
<if test="q.statusList != null and q.statusList.size() > 0">
AND t.STATUS IN
<foreach collection="q.statusList" item="statusItem" open="(" separator="," close=")">
#{statusItem}
</foreach>
</if>
<if test="q.createTimeStart != null">
AND t.CREATE_TIME &gt;= #{q.createTimeStart}
</if>
<if test="q.createTimeEnd != null">
AND t.CREATE_TIME &lt;= #{q.createTimeEnd}
</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.cycleTestItemName != null and q.cycleTestItemName != ''">
AND item.NAME LIKE '%' || #{q.cycleTestItemName} || '%'
</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 st.NAME LIKE '%' || #{q.cycleTestStandardName} || '%'
</if>
<if test="q.processUserName != null and q.processUserName != ''">
AND bl_user.REAL_NAME LIKE '%' || #{q.processUserName} || '%'
</if>
<if test="q.oneTimeGenDateStart != null">
AND t.ONE_TIME_GEN_DATE &gt;= #{q.oneTimeGenDateStart}
</if>
<if test="q.oneTimeGenDateEnd != null">
AND t.ONE_TIME_GEN_DATE &lt;= #{q.oneTimeGenDateEnd}
</if>
<if test="q.issueDateStart != null">
AND t.ISSUE_DATE &gt;= #{q.issueDateStart}
</if>
<if test="q.issueDateEnd != null">
AND t.ISSUE_DATE &lt;= #{q.issueDateEnd}
</if>
<if test="q.acceptDateStart != null">
AND t.ACCEPT_DATE &gt;= #{q.acceptDateStart}
</if>
<if test="q.acceptDateEnd != null">
AND t.ACCEPT_DATE &lt;= #{q.acceptDateEnd}
</if>
<if test="q.finishDateStart != null">
AND t.FINISH_DATE &gt;= #{q.finishDateStart}
</if>
<if test="q.finishDateEnd != null">
AND t.FINISH_DATE &lt;= #{q.finishDateEnd}
</if>
ORDER BY t.STATUS ASC,t.CREATE_TIME ASC
</select>
<select id="listSearchWithoutPage"
resultType="org.springblade.desk.quality.pojo.vo.CycleTestTaskVO">
SELECT t.*
FROM QA_CYCLE_TEST_TASK t
-- 试验周期 cyc
LEFT JOIN QA_CYCLE_TEST cyc ON t.CYCLE_TEST_ID = cyc.ID
-- 试验项目 item
LEFT JOIN QA_CYCLE_TEST_ITEM item ON t.CYCLE_TEST_ITEM_ID = item.ID
-- 试验标准 st
LEFT JOIN QA_CYCLE_TEST_STANDARD st ON item.CYCLE_TEST_STANDARD_ID = st.ID
-- 用户 user
LEFT JOIN BLADE_USER bl_user ON t.PROCESS_USER_ID = bl_user.ID
WHERE (
t.IS_DELETED = 0
)
<if test="q.filterType != null and q.filterType == 1">
AND t.FLAG_APPROACH = 1
</if>
<if test="q.filterType != null and q.filterType == 2">
AND t.FLAG_OUT = 1
</if>
<if test="q.processUserId != null">
AND t.PROCESS_USER_ID = #{q.processUserId}
</if>
<if test="q.status != null">
AND t.STATUS = #{q.status}
</if>
<if test="q.statusList != null and q.statusList.size() > 0">
AND t.STATUS IN
<foreach collection="q.statusList" item="statusItem" open="(" separator="," close=")">
#{statusItem}
</foreach>
</if>
<if test="q.createTimeStart != null">
AND t.CREATE_TIME &gt;= #{q.createTimeStart}
</if>
<if test="q.createTimeEnd != null">
AND t.CREATE_TIME &lt;= #{q.createTimeEnd}
</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.cycleTestItemName != null and q.cycleTestItemName != ''">
AND item.NAME LIKE '%' || #{q.cycleTestItemName} || '%'
</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 st.NAME LIKE '%' || #{q.cycleTestStandardName} || '%'
</if>
<if test="q.processUserName != null and q.processUserName != ''">
AND bl_user.REAL_NAME LIKE '%' || #{q.processUserName} || '%'
</if>
<if test="q.oneTimeGenDateStart != null">
AND t.ONE_TIME_GEN_DATE &gt;= #{q.oneTimeGenDateStart}
</if>
<if test="q.oneTimeGenDateEnd != null">
AND t.ONE_TIME_GEN_DATE &lt;= #{q.oneTimeGenDateEnd}
</if>
<if test="q.issueDateStart != null">
AND t.ISSUE_DATE &gt;= #{q.issueDateStart}
</if>
<if test="q.issueDateEnd != null">
AND t.ISSUE_DATE &lt;= #{q.issueDateEnd}
</if>
<if test="q.acceptDateStart != null">
AND t.ACCEPT_DATE &gt;= #{q.acceptDateStart}
</if>
<if test="q.acceptDateEnd != null">
AND t.ACCEPT_DATE &lt;= #{q.acceptDateEnd}
</if>
<if test="q.finishDateStart != null">
AND t.FINISH_DATE &gt;= #{q.finishDateStart}
</if>
<if test="q.finishDateEnd != null">
AND t.FINISH_DATE &lt;= #{q.finishDateEnd}
</if>
ORDER BY t.STATUS ASC,t.CREATE_TIME ASC
</select>
</mapper> </mapper>

@ -3,7 +3,10 @@ package org.springblade.desk.quality.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -15,17 +18,22 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.config.RoleConfig; import org.springblade.desk.basic.config.RoleConfig;
import org.springblade.desk.basic.constant.BaseCol; import org.springblade.desk.basic.constant.BaseCol;
import org.springblade.desk.basic.constant.BaseValue; import org.springblade.desk.basic.constant.BaseValue;
import org.springblade.desk.basic.util.RoleUtil;
import org.springblade.desk.quality.constant.CycleTestConst; import org.springblade.desk.quality.constant.CycleTestConst;
import org.springblade.desk.quality.constant.CycleTestTaskConst; import org.springblade.desk.quality.constant.CycleTestTaskConst;
import org.springblade.desk.quality.constant.InspectionTaskConst;
import org.springblade.desk.quality.mapper.CycleTestMapper; import org.springblade.desk.quality.mapper.CycleTestMapper;
import org.springblade.desk.quality.mapper.CycleTestTaskMapper; import org.springblade.desk.quality.mapper.CycleTestTaskMapper;
import org.springblade.desk.quality.pojo.entity.CycleTest; import org.springblade.desk.quality.pojo.entity.CycleTest;
import org.springblade.desk.quality.pojo.entity.CycleTestItem; import org.springblade.desk.quality.pojo.entity.CycleTestItem;
import org.springblade.desk.quality.pojo.entity.CycleTestStandard; import org.springblade.desk.quality.pojo.entity.CycleTestStandard;
import org.springblade.desk.quality.pojo.entity.CycleTestTask; import org.springblade.desk.quality.pojo.entity.CycleTestTask;
import org.springblade.desk.quality.pojo.request.CycleTestTaskSearch;
import org.springblade.desk.quality.pojo.request.InspectionTaskSearch;
import org.springblade.desk.quality.pojo.request.JobExt; import org.springblade.desk.quality.pojo.request.JobExt;
import org.springblade.desk.quality.pojo.vo.CycleTestStandardVO; import org.springblade.desk.quality.pojo.vo.CycleTestStandardVO;
import org.springblade.desk.quality.pojo.vo.CycleTestTaskVO; import org.springblade.desk.quality.pojo.vo.CycleTestTaskVO;
import org.springblade.desk.quality.pojo.vo.InspectionTaskListVO;
import org.springblade.desk.quality.util.JobExtUtil; import org.springblade.desk.quality.util.JobExtUtil;
import org.springblade.desk.quality.wrapper.CycleTestStandardWrapper; import org.springblade.desk.quality.wrapper.CycleTestStandardWrapper;
import org.springblade.desk.quality.wrapper.CycleTestTaskWrapper; import org.springblade.desk.quality.wrapper.CycleTestTaskWrapper;
@ -36,6 +44,8 @@ import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.UserInfo; import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.time.*; import java.time.*;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -55,7 +65,6 @@ import java.util.stream.Collectors;
* 开始临期提醒日期 = 任务计划结束日期 - 临期提醒天数前提未完成的试验 * 开始临期提醒日期 = 任务计划结束日期 - 临期提醒天数前提未完成的试验
* 临期天数 = 任务计划结束日期 - 当前日期 * 临期天数 = 任务计划结束日期 - 当前日期
* <p> * <p>
* todo:工艺员 只能看到自己的数据
*/ */
@Service @Service
@Data @Data
@ -94,26 +103,25 @@ public class CycleTestTaskService2 {
*/ */
public R<IPage<CycleTestTaskVO>> list(Map<String, Object> map, Integer filterType, Query query) { public R<IPage<CycleTestTaskVO>> list(Map<String, Object> map, Integer filterType, Query query) {
QueryWrapper<CycleTestTask> qw = Condition.getQueryWrapper(map, CycleTestTask.class); QueryWrapper<CycleTestTask> qw = Condition.getQueryWrapper(map, CycleTestTask.class);
log.info("####map = {}", map); // log.info("####map = {}", map);
// filterType= 1 or 2 // filterType= 1 or 2
if (filterType != null && filterType != 0) { if (filterType != null && filterType != 0) {
if (filterType == 1) { if (filterType.equals(CycleTestTaskConst.FILTER_TYPE_APPROACH)) {
log.info("####COL_FLAG_APPROACH {}", map); // todo:
qw.eq(CycleTestTask.COL_FLAG_APPROACH, BaseValue.YES); qw.eq(CycleTestTask.COL_FLAG_APPROACH, BaseValue.YES);
} }
if (filterType == 2) { if (filterType.equals(CycleTestTaskConst.FILTER_TYPE_OUT)) {
log.info("####COL_FLAG_OUT {}", map); // todo:
qw.eq(CycleTestTask.COL_FLAG_OUT, BaseValue.YES); qw.eq(CycleTestTask.COL_FLAG_OUT, BaseValue.YES);
} }
} }
// 区分角色 // 区分角色
// 工艺员角色 只能看到自己的任务 // 工艺员角色 只能看到自己的任务
if (AuthUtil.getUserRole().contains(roleConfig.getProcessEngineerAlias())) { if (RoleUtil.hasRole(roleConfig.getProcessEngineerAlias())) {
qw.eq(CycleTestTask.COL_PROCESS_USER_ID, AuthUtil.getUser().getUserId()); qw.eq(CycleTestTask.COL_PROCESS_USER_ID, AuthUtil.getUser().getUserId());
qw.ne(BaseCol.STATUS, CycleTestTaskConst.S_PENDING_ISSUE); qw.in(BaseCol.STATUS, CycleTestTaskConst.S_PENDING_ACCEPT, CycleTestTaskConst.S_PENDING_TEST);
} }
// // 创建时间正序
qw.orderByDesc(BaseCol.ID); qw.orderByAsc(BaseCol.CREATE_TIME);
// 状态正序
qw.orderByAsc(BaseCol.STATUS); qw.orderByAsc(BaseCol.STATUS);
IPage<CycleTestTask> pages = service.page( IPage<CycleTestTask> pages = service.page(
Condition.getPage(query), qw); Condition.getPage(query), qw);
@ -125,6 +133,42 @@ public class CycleTestTaskService2 {
return R.data(pagesVO); return R.data(pagesVO);
} }
public R<IPage<CycleTestTaskVO>> listSearch(IPage<CycleTestTaskVO> page, CycleTestTaskSearch search) {
// 区分角色
if (RoleUtil.hasRole(roleConfig.getProcessEngineerAlias())) {
if (search == null) {
search = new CycleTestTaskSearch();
}
// 工艺员角色 只能看到自己的任务
search.setProcessUserId(AuthUtil.getUser().getUserId());
// 默认显示待处理的任务
if (search.getStatusList() == null || search.getStatusList().isEmpty()) {
search.setStatusList(List.of(CycleTestTaskConst.S_PENDING_ACCEPT, CycleTestTaskConst.S_PENDING_TEST));
}
}
List<CycleTestTaskVO> listVO = mapper.listSearch(page, search);
for (CycleTestTaskVO oneVO : listVO) {
setVOValue(oneVO);
}
return R.data(page.setRecords(listVO));
}
public List<CycleTestTaskVO> listSearchWithoutPage(CycleTestTaskSearch search) {
// 区分角色
if (RoleUtil.hasRole(roleConfig.getProcessEngineerAlias())) {
if (search == null) {
search = new CycleTestTaskSearch();
}
// 工艺员角色 只能看到自己的任务
search.setProcessUserId(AuthUtil.getUser().getUserId());
}
List<CycleTestTaskVO> listVO = mapper.listSearchWithoutPage(search);
for (CycleTestTaskVO oneVO : listVO) {
setVOValue(oneVO);
}
return listVO;
}
/** /**
* search * search
* *
@ -349,10 +393,11 @@ public class CycleTestTaskService2 {
* @param testDate * @param testDate
* @param testAttachId * @param testAttachId
* @param reasonForNo * @param reasonForNo
* @param reasonForOut
* @return * @return
*/ */
@Transactional @Transactional
public R fill(Long id, Integer isDone, LocalDate testDate, Long testAttachId, String reasonForNo) { public R fill(Long id, Integer isDone, LocalDate testDate, Long testAttachId, String reasonForNo, String reasonForOut) {
CycleTestTask task = service.getById(id); CycleTestTask task = service.getById(id);
task.setIsDone(isDone); task.setIsDone(isDone);
task.setTestDate(testDate); task.setTestDate(testDate);
@ -364,6 +409,7 @@ public class CycleTestTaskService2 {
} }
task.setFinishDate(LocalDateTime.now()); task.setFinishDate(LocalDateTime.now());
task.setReasonForNo(reasonForNo); task.setReasonForNo(reasonForNo);
task.setReasonForOut(reasonForOut);
return R.status(service.updateById(task)); return R.status(service.updateById(task));
} }
@ -401,15 +447,6 @@ public class CycleTestTaskService2 {
vo.setCountDayToPlanedFinish(getCountDayToOut(vo.getId())); vo.setCountDayToPlanedFinish(getCountDayToOut(vo.getId()));
} }
/**
* 计算任务 周期性任务 下发日期/任务生成日期
*
* @return
*/
public LocalDate cal() {
return null;
}
public String genCode() { public String genCode() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");

Loading…
Cancel
Save