周期性试验 修改。

develop-QA
Tom Li 4 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. 9
      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. 20
      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. 166
      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;
}

@ -83,6 +83,10 @@ public class Plating extends BaseEntity {
* 备注
*/
public static final String COL_REMARK = "REMARK";
/**
* 是否用于周期性试验
*/
public static final String COL_FLAG_CYCLE_TEST = "FLAG_CYCLE_TEST";
/**
* 配置码
@ -154,4 +158,9 @@ public class Plating extends BaseEntity {
*/
@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;
@ -115,6 +120,21 @@ public class PlatingController extends BladeController {
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);
}
/**
* [镀种] 新增一条
*/

@ -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
@ -35,168 +37,66 @@ public class CycleTestTaskExcel implements Serializable {
* [周期试验任务]编码
*/
@ColumnWidth(20)
@ExcelProperty("[周期试验任务]编码")
@ExcelProperty("任务编号")
private String code;
/**
* [周期试验任务]类型-[1]:周期性;[2]一次性;
*/
@ColumnWidth(20)
@ExcelProperty("[周期试验任务]类型-[1]:周期性;[2]一次性;")
private Long cycleTestTaskType;
/**
* 名称
*/
@Schema(description = "项目名称")
@ColumnWidth(20)
@ExcelProperty("名称")
private String name;
/**
* 配置[班组]id
*/
@ExcelProperty("项目名称")
private String cycleTestItemName;
@Schema(description = "试验条件")
@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]:试片;
*/
@ExcelProperty("试验条件")
private String cycleTestItemCondition;
@Schema(description = "试验标准")
@ColumnWidth(20)
@ExcelProperty("试验件类型-[1]:零件;[2]:试片;")
private BigDecimal testType;
@ExcelProperty("试验标准")
private String cycleTestStandardName;
/**
* 工艺员[用户]id
* 试验件类型-[1]:零件;[2]:试片; todo:
*/
@ColumnWidth(20)
@ExcelProperty("工艺员[用户]id")
private BigDecimal processUserId;
@ExcelProperty("试验件")
private String testType;
/**
* 试验技术员[用户]id
* 临期天数
*/
@Schema(description = "临期天数")
@ColumnWidth(20)
@ExcelProperty("试验技术员[用户]id")
private BigDecimal testUserId;
@ExcelProperty("临期天数")
private String countDayToPlanedFinish;
/**
* 下发[班组]id
* 状态名称
*/
@Schema(description = "状态")
@ColumnWidth(20)
@ExcelProperty("下发[班组]id")
private BigDecimal sendTeamId;
@ExcelProperty("状态")
private String statusName;
/**
* 下发[外协商]id
* 工艺员[用户]姓名
*/
@Schema(description = "工艺员[用户]姓名")
@ColumnWidth(20)
@ExcelProperty("下发[外协商]id")
private BigDecimal sendOemId;
@ExcelProperty("状态")
private String processUserName;
/**
* 下发人员[用户]id
* 任务生成时间
*/
@Schema(description = "任务生成时间")
@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;
@ExcelProperty("任务生成时间")
private LocalDateTime genDatetime;
/**
* 接收时间
*/
@Schema(description = "接收时间")
@ColumnWidth(20)
@ExcelProperty("接收时间")
private LocalDateTime acceptDate;
/**
* 完成时间
*/
@Schema(description = "完成时间")
@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="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