周期性试验 修改。

develop-QA
Tom Li 3 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";
/**
* status 状态集合
*/
String STATUS_LIST = "statusList";
}

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

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

@ -46,5 +46,12 @@ public interface CycleTestTaskConst {
*/
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";
/**
* [镀种]ids
*/
public static final String COL_PLATE_IDS = "PLATE_IDS";
/**
* [周期试验]编码
@ -316,4 +320,9 @@ public class CycleTest extends BaseEntity {
*/
@Schema(description = "[镀种]名称")
private String plateName;
/**
* [镀种]ids
*/
@Schema(description = "[镀种]ids")
private String plateIds;
}

@ -141,10 +141,18 @@ public class CycleTestTask extends BaseEntity {
* [周期试验]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_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 = "超期标记")
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 字段
*/
@Schema(description = "创建提请时间-开始")
@JsonDeserialize(using = LocalDateTimeBeginOfDayDeserializer.class)
@Schema(description = "创建提请时间-开始")
private LocalDateTime createTimeStart;
@JsonDeserialize(using = DateBeginOfDayDeserializer.class)
@Schema(description = "创建时间-开始")
private Date baseCreateTimeStart;
/**
* 使用 toReviewDate 字段
*/
@Schema(description = "创建提请时间-结束")
@JsonDeserialize(using = LocalDateTimeEndOfDayDeserializer.class)
@Schema(description = "创建提请时间-结束")
private LocalDateTime createTimeEnd;
@Schema(description = "创建时间-开始")
@JsonDeserialize(using = DateBeginOfDayDeserializer.class)
private Date baseCreateTimeStart;
@Schema(description = "创建时间-结束")
@JsonDeserialize(using = DateEndOfDayDeserializer.class)
@Schema(description = "创建时间-结束")
private Date baseCreateTimeEnd;
@Schema(description = "提请人员[用户]真名")
private String createUserRealName;

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

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

@ -3,8 +3,10 @@
*/
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.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -16,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;
@ -25,12 +28,14 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.constant.BaseValue;
import org.springblade.desk.basic.excel.PlatingExcel;
import org.springblade.desk.basic.pojo.entity.Plating;
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;
@ -55,184 +60,199 @@ import java.util.stream.Collectors;
public class PlatingController extends BladeController {
@Resource
private IPlatingService service;
/**
* [镀种] 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 10)
@Operation(summary = "详情", description = "传入Plating Obj")
public R<PlatingVO> detail(Plating plating) {
QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating);
Plating detail = service.getOne(qw);
PlatingVO detailVO = PlatingWrapper.build().entityVO(detail);
service.setVOValue(detailVO);
return R.data(detailVO);
}
/**
* [镀种] list分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 20)
@Operation(summary = "list分页", description = "传入Plating Obj")
public R<IPage<PlatingVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> plating,
Query query) {
private IPlatingService service;
/**
* [镀种] 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 10)
@Operation(summary = "详情", description = "传入Plating Obj")
public R<PlatingVO> detail(Plating plating) {
QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating);
Plating detail = service.getOne(qw);
PlatingVO detailVO = PlatingWrapper.build().entityVO(detail);
service.setVOValue(detailVO);
return R.data(detailVO);
}
/**
* [镀种] list分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 20)
@Operation(summary = "list分页", description = "传入Plating Obj")
public R<IPage<PlatingVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> plating,
Query query) {
QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating, Plating.class);
IPage<Plating> pages = service.page(Condition.getPage(query), qw);
IPage<PlatingVO> pagesVO = PlatingWrapper.build().pageVO(pages);
pagesVO.getRecords()
.stream()
.peek(service::setVOValue)
.collect(Collectors.toList());
return R.data(pagesVO);
}
/**
* [镀种] page分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 21)
@Operation(summary = "page分页", description = "传入Plating Obj")
public R<IPage<PlatingVO>> page(PlatingVO plating, Query query) {
IPage<PlatingVO> pagesVO = service.selectPlatingPage(
Condition.getPage(query), plating
);
return R.data(pagesVO);
}
/**
IPage<Plating> pages = service.page(Condition.getPage(query), qw);
IPage<PlatingVO> pagesVO = PlatingWrapper.build().pageVO(pages);
pagesVO.getRecords()
.stream()
.peek(service::setVOValue)
.collect(Collectors.toList());
return R.data(pagesVO);
}
/**
* [镀种] page分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 21)
@Operation(summary = "page分页", description = "传入Plating Obj")
public R<IPage<PlatingVO>> page(PlatingVO plating, Query query) {
IPage<PlatingVO> pagesVO = service.selectPlatingPage(
Condition.getPage(query), plating
);
return R.data(pagesVO);
}
/**
* [镀种] list下拉选择
*/
@GetMapping("/listForSelect")
@ApiOperationSupport(order = 22)
@Operation(summary = "list下拉选择", description = "")
@Operation(summary = "list下拉选择", description = "")
public R<List<PlatingVO>> listForSelect() {
List<Plating> list = service.list();
List<PlatingVO> listVO = PlatingWrapper.build().listVO(list);
return R.data(listVO);
List<Plating> list = service.list();
List<PlatingVO> listVO = PlatingWrapper.build().listVO(list);
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")
@ApiOperationSupport(order = 30)
@Operation(summary = "新增一条", description = "传入Plating Obj")
public R save(@Valid @RequestBody Plating addOne) {
addOne.setId(null);
return R.status(service.save(addOne));
}
/**
/**
* [镀种] 新增一条
*/
@PostMapping("/save")
@ApiOperationSupport(order = 30)
@Operation(summary = "新增一条", description = "传入Plating Obj")
public R save(@Valid @RequestBody Plating addOne) {
addOne.setId(null);
return R.status(service.save(addOne));
}
/**
* [镀种] 新增批量
*/
@PostMapping("/saveBat")
@ApiOperationSupport(order = 31)
@Operation(summary = "新增批量", description = "传入Plating List")
public R saveBat(@Valid @RequestBody List<Plating> addList) {
addList.forEach(one -> {
one.setId(null);
});
return R.status(service.saveBatch(addList));
}
/**
* [镀种] 修改一条
*/
@PostMapping("/update")
@ApiOperationSupport(order = 40)
@Operation(summary = "修改一条", description = "传入Plating Obj")
public R update(@Valid @RequestBody Plating updateOne) {
return R.status(service.updateById(updateOne));
}
@PostMapping("/saveBat")
@ApiOperationSupport(order = 31)
@Operation(summary = "新增批量", description = "传入Plating List")
public R saveBat(@Valid @RequestBody List<Plating> addList) {
addList.forEach(one -> {
one.setId(null);
});
return R.status(service.saveBatch(addList));
}
/**
* [镀种] 修改一条
*/
@PostMapping("/update")
@ApiOperationSupport(order = 40)
@Operation(summary = "修改一条", description = "传入Plating Obj")
public R update(@Valid @RequestBody Plating updateOne) {
return R.status(service.updateById(updateOne));
}
/**
* [镀种] 修改批量
*/
@PostMapping("/updateBat")
@ApiOperationSupport(order = 41)
@Operation(summary = "修改批量", description = "传入Plating List")
@Operation(summary = "修改批量", description = "传入Plating List")
public R updateBat(@Valid @RequestBody List<Plating> updateList) {
return R.status(service.updateBatchById(updateList));
}
/**
* [镀种] 新增或修改一条
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 50)
@Operation(summary = "新增或修改一条", description = "传入Plating Obj")
public R submit(@Valid @RequestBody Plating mergeOne) {
return R.status(service.saveOrUpdate(mergeOne));
}
/**
/**
* [镀种] 新增或修改一条
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 50)
@Operation(summary = "新增或修改一条", description = "传入Plating Obj")
public R submit(@Valid @RequestBody Plating mergeOne) {
return R.status(service.saveOrUpdate(mergeOne));
}
/**
* [镀种] 新增或修改批量
*/
@PostMapping("/submitBat")
@ApiOperationSupport(order = 51)
@Operation(summary = "新增或修改批量", description = "传入Plating List")
public R submitBat(@Valid @RequestBody List<Plating> 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 = "传入Plating")
public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> plating,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating, Plating.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(Plating::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(PlatingEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<PlatingExcel> list = service.exportPlating(qw);
ExcelUtil.export(response, "[镀种]数据" + DateUtil.time(),
"[镀种]数据表", list, PlatingExcel.class);
}
/**
@PostMapping("/submitBat")
@ApiOperationSupport(order = 51)
@Operation(summary = "新增或修改批量", description = "传入Plating List")
public R submitBat(@Valid @RequestBody List<Plating> 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 = "传入Plating")
public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> plating,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<Plating> qw = Condition.getQueryWrapper(plating, Plating.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(Plating::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(PlatingEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<PlatingExcel> list = service.exportPlating(qw);
ExcelUtil.export(response, "[镀种]数据" + DateUtil.time(),
"[镀种]数据表", list, PlatingExcel.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<Plating> importList = ExcelUtil.read(
file, 0, 1, Plating.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<Plating> importList = ExcelUtil.read(
file, 0, 1, Plating.class
);
return R.status(service.saveBatch(importList));
}
}

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

@ -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;
@ -22,13 +23,16 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.quality.constant.QAModuleConst;
import org.springblade.desk.quality.excel.CycleTestTaskExcel;
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.InspectionTaskListVO;
import org.springblade.desk.quality.service.CycleTestTaskService2;
import org.springblade.desk.quality.service.ICycleTestTaskService;
import org.springblade.desk.quality.wrapper.CycleTestTaskWrapper;
@ -36,6 +40,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -85,6 +90,19 @@ public class CycleTestTaskController extends BladeController {
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
@GetMapping("/export-excel")
@PostMapping("/export-excel")
@ApiOperationSupport(order = 8)
@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) {
QueryWrapper<CycleTestTask> queryWrapper = Condition.getQueryWrapper(cycleTestTask, CycleTestTask.class);
// QueryWrapper<CycleTestTask> queryWrapper = Condition.getQueryWrapper(cycleTestTask, CycleTestTask.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(CycleTestTask::getTenantId, bladeUser.getTenantId());
//}
//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(),
"[周期试验任务]数据表", list, CycleTestTaskExcel.class);
"[周期试验任务]数据表", listExcel, CycleTestTaskExcel.class);
}
@PostMapping("/issue-one")
@ -193,8 +214,9 @@ public class CycleTestTaskController extends BladeController {
@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 = "0") Long testAttachId,
@Parameter(description = "不试验原因") @RequestParam(required = false, defaultValue = "") String reasonForNo) {
return service.fill(id, isDone, testDate, testAttachId, reasonForNo);
@Parameter(description = "不试验原因") @RequestParam(required = false, defaultValue = "") String reasonForNo,
@Parameter(description = "超期原因") @RequestParam(required = false, defaultValue = "") String reasonForOut) {
return service.fill(id, isDone, testDate, testAttachId, reasonForNo, reasonForOut);
}
@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.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
@ -18,6 +19,7 @@ import java.time.LocalDateTime;
/**
* [周期试验任务] Excel实体类
* Web页中列一致
*
* @author Tom Shuo
* @since 2025-12-22
@ -28,175 +30,73 @@ import java.time.LocalDateTime;
@ContentRowHeight(18)
public class CycleTestTaskExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;
/**
* [周期试验任务]编码
*/
@ColumnWidth(20)
@ExcelProperty("[周期试验任务]编码")
private String code;
/**
* [周期试验任务]类型-[1]:周期性;[2]一次性;
*/
@ColumnWidth(20)
@ExcelProperty("[周期试验任务]类型-[1]:周期性;[2]一次性;")
private Long cycleTestTaskType;
/**
* 名称
*/
@ColumnWidth(20)
@ExcelProperty("名称")
private String name;
/**
* 配置[班组]id
*/
@ColumnWidth(20)
@ExcelProperty("配置[班组]id")
private BigDecimal configTeamId;
/**
* 配置[外协商]id
*/
@ColumnWidth(20)
@ExcelProperty("配置[外协商]id")
private BigDecimal configOemId;
/**
* [周期性试验项目]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 sendTeamId;
/**
* 下发[外协商]id
*/
@ColumnWidth(20)
@ExcelProperty("下发[外协商]id")
private BigDecimal sendOemId;
/**
* 下发人员[用户]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;
/**
* [周期试验任务]编码
*/
@ColumnWidth(20)
@ExcelProperty("任务编号")
private String code;
@Schema(description = "项目名称")
@ColumnWidth(20)
@ExcelProperty("项目名称")
private String cycleTestItemName;
@Schema(description = "试验条件")
@ColumnWidth(20)
@ExcelProperty("试验条件")
private String cycleTestItemCondition;
@Schema(description = "试验标准")
@ColumnWidth(20)
@ExcelProperty("试验标准")
private String cycleTestStandardName;
/**
* 试验件类型-[1]:零件;[2]:试片; todo:
*/
@ColumnWidth(20)
@ExcelProperty("试验件")
private String testType;
/**
* 临期天数
*/
@Schema(description = "临期天数")
@ColumnWidth(20)
@ExcelProperty("临期天数")
private String countDayToPlanedFinish;
/**
* 状态名称
*/
@Schema(description = "状态")
@ColumnWidth(20)
@ExcelProperty("状态")
private String statusName;
/**
* 工艺员[用户]姓名
*/
@Schema(description = "工艺员[用户]姓名")
@ColumnWidth(20)
@ExcelProperty("状态")
private String processUserName;
/**
* 任务生成时间
*/
@Schema(description = "任务生成时间")
@ColumnWidth(20)
@ExcelProperty("任务生成时间")
private LocalDateTime genDatetime;
/**
* 接收时间
*/
@Schema(description = "接收时间")
@ColumnWidth(20)
@ExcelProperty("接收时间")
private LocalDateTime acceptDate;
/**
* 完成时间
*/
@Schema(description = "完成时间")
@ColumnWidth(20)
@ExcelProperty("完成时间")
private LocalDateTime finishDate;
}

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

@ -9,7 +9,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.quality.excel.CycleTestTaskExcel;
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.ReviewSheetInitVO;
import java.util.List;
@ -37,4 +40,8 @@ public interface CycleTestTaskMapper extends BaseMapper<CycleTestTask> {
* @return List<CycleTestTaskExcel>
*/
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="FLAG_APPROACH" property="flagApproach"/>
<result column="FLAG_OUT" property="flagOut"/>
<result column="REASON_FOR_OUT" property="reasonForOut"/>
</resultMap>
<select id="selectCycleTestTaskPage" resultMap="cycleTestTaskResultMap">
@ -62,4 +63,172 @@
SELECT *
FROM QA_CYCLE_TEST_TASK ${ew.customSqlSegment}
</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>

@ -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.QueryWrapper;
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.validation.Valid;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
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.constant.BaseCol;
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.CycleTestTaskConst;
import org.springblade.desk.quality.constant.InspectionTaskConst;
import org.springblade.desk.quality.mapper.CycleTestMapper;
import org.springblade.desk.quality.mapper.CycleTestTaskMapper;
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.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.vo.CycleTestStandardVO;
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.wrapper.CycleTestStandardWrapper;
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.springframework.stereotype.Service;
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.format.DateTimeFormatter;
@ -55,7 +65,6 @@ import java.util.stream.Collectors;
* 开始临期提醒日期 = 任务计划结束日期 - 临期提醒天数前提未完成的试验
* 临期天数 = 任务计划结束日期 - 当前日期
* <p>
* todo:工艺员 只能看到自己的数据
*/
@Service
@Data
@ -94,26 +103,25 @@ public class CycleTestTaskService2 {
*/
public R<IPage<CycleTestTaskVO>> list(Map<String, Object> map, Integer filterType, Query query) {
QueryWrapper<CycleTestTask> qw = Condition.getQueryWrapper(map, CycleTestTask.class);
log.info("####map = {}", map);
// log.info("####map = {}", map);
// filterType= 1 or 2
if (filterType != null && filterType != 0) {
if (filterType == 1) {
log.info("####COL_FLAG_APPROACH {}", map); // todo:
if (filterType.equals(CycleTestTaskConst.FILTER_TYPE_APPROACH)) {
qw.eq(CycleTestTask.COL_FLAG_APPROACH, BaseValue.YES);
}
if (filterType == 2) {
log.info("####COL_FLAG_OUT {}", map); // todo:
if (filterType.equals(CycleTestTaskConst.FILTER_TYPE_OUT)) {
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.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);
IPage<CycleTestTask> pages = service.page(
Condition.getPage(query), qw);
@ -125,6 +133,42 @@ public class CycleTestTaskService2 {
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
*
@ -349,10 +393,11 @@ public class CycleTestTaskService2 {
* @param testDate
* @param testAttachId
* @param reasonForNo
* @param reasonForOut
* @return
*/
@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);
task.setIsDone(isDone);
task.setTestDate(testDate);
@ -364,6 +409,7 @@ public class CycleTestTaskService2 {
}
task.setFinishDate(LocalDateTime.now());
task.setReasonForNo(reasonForNo);
task.setReasonForOut(reasonForOut);
return R.status(service.updateById(task));
}
@ -401,15 +447,6 @@ public class CycleTestTaskService2 {
vo.setCountDayToPlanedFinish(getCountDayToOut(vo.getId()));
}
/**
* 计算任务 周期性任务 下发日期/任务生成日期
*
* @return
*/
public LocalDate cal() {
return null;
}
public String genCode() {
StringBuilder sb = new StringBuilder();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");

Loading…
Cancel
Save