Browse Source

update

piece
Yen 3 years ago
parent
commit
a80ce8bf51
  1. 2
      src/main/java/com/qs/serve/common/config/MyBatisConfig.java
  2. 3
      src/main/java/com/qs/serve/common/model/enums/BizType.java
  3. 23
      src/main/java/com/qs/serve/controller/AdminPortalController.java
  4. 49
      src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java
  5. 126
      src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java
  6. 12
      src/main/java/com/qs/serve/modules/pms/entity/PmsCounterSubmit.java
  7. 3
      src/main/java/com/qs/serve/modules/pms/entity/PmsCounterType.java
  8. 15
      src/main/java/com/qs/serve/modules/pms/entity/PmsProductProcess.java
  9. 24
      src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java
  10. 27
      src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java

2
src/main/java/com/qs/serve/common/config/MyBatisConfig.java

@ -26,7 +26,7 @@ public class MyBatisConfig {
// 翻页拦截器 // 翻页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 多租户、乐观锁等配置拦截 // 多租户、乐观锁等配置拦截
interceptor.addInnerInterceptor(buildTenantHandler()); //interceptor.addInnerInterceptor(buildTenantHandler());
// 添加防止全表更新与删除拦截器 // 添加防止全表更新与删除拦截器
interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
return interceptor; return interceptor;

3
src/main/java/com/qs/serve/common/model/enums/BizType.java

@ -20,6 +20,9 @@ public enum BizType {
/** 修改 */ /** 修改 */
UPDATE("修改"), UPDATE("修改"),
/** 审核 */
CHECK("审核"),
/** 删除 */ /** 删除 */
DELETE("删除"), DELETE("删除"),

23
src/main/java/com/qs/serve/controller/AdminPortalController.java

@ -7,6 +7,7 @@ import com.qs.serve.common.model.annotation.LimitSubmit;
import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.consts.RedisCacheKeys; import com.qs.serve.common.model.consts.RedisCacheKeys;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.IdUtil; import com.qs.serve.common.util.IdUtil;
@ -24,7 +25,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
@ -135,5 +139,24 @@ public class AdminPortalController {
return R.ok(); return R.ok();
} }
/**
* 获取系统模块用于系统日志
* @return
*/
@GetMapping("/getSysLogOption")
public R<?> getModule(){
List<SimpleKeyValue<String>> moduleList = new ArrayList<>();
for (SystemModule systemModule : SystemModule.values()) {
moduleList.add(new SimpleKeyValue<>(systemModule.getVale(),systemModule.getVale(),null));
}
List<SimpleKeyValue<String>> optionList = new ArrayList<>();
for (BizType obj : BizType.values()) {
optionList.add(new SimpleKeyValue<>(obj.getValue(),obj.getValue(),null));
}
Map<String,Object> result = new HashMap<>();
result.put("moduleList",moduleList);
result.put("bizList",optionList);
return R.ok(result);
}
} }

49
src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java

@ -1,11 +1,13 @@
package com.qs.serve.modules.pms.controller; package com.qs.serve.modules.pms.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.framework.security.model.LoginUser;
import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.pms.entity.PmsCounterSubmit; import com.qs.serve.modules.pms.entity.PmsCounterSubmit;
import com.qs.serve.modules.pms.service.PmsCounterSubmitService; import com.qs.serve.modules.pms.service.PmsCounterSubmitService;
@ -15,6 +17,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
@ -40,6 +43,12 @@ public class PmsCounterSubmitController {
public R<PageVo<PmsCounterSubmit>> getPage(PmsCounterSubmit param){ public R<PageVo<PmsCounterSubmit>> getPage(PmsCounterSubmit param){
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<PmsCounterSubmit> counterSubmitWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<PmsCounterSubmit> counterSubmitWrapper = new LambdaQueryWrapper<>(param);
if(param.getQueryStartTime()!=null){
counterSubmitWrapper.ge(PmsCounterSubmit::getCreateTime,param.getQueryStartTime());
}
if(param.getQueryEndTime()!=null){
counterSubmitWrapper.le(PmsCounterSubmit::getCreateTime,param.getQueryEndTime());
}
List<PmsCounterSubmit> list = pmsCounterSubmitService.list(counterSubmitWrapper); List<PmsCounterSubmit> list = pmsCounterSubmitService.list(counterSubmitWrapper);
return R.byPageHelperList(list); return R.byPageHelperList(list);
} }
@ -57,7 +66,27 @@ public class PmsCounterSubmitController {
return R.ok(pmsCounterSubmit); return R.ok(pmsCounterSubmit);
} }
/**
* 根据ID更新
* @param param id,checkerRemark,checkStatus
* @return
*/
@PostMapping("/check")
@SysLog(module = SystemModule.PIECE, title = "计时报工单", biz = BizType.CHECK)
@PreAuthorize("hasRole('pms:counterSubmit:check')")
public R<?> check(@RequestBody PmsCounterSubmit param){
LoginUser loginUser = AuthContextUtils.getLoginUser();
PmsCounterSubmit pmsCounterSubmit = new PmsCounterSubmit();
pmsCounterSubmit.setId(param.getId());
pmsCounterSubmit.setCheckerTime(LocalDateTime.now());
pmsCounterSubmit.setCheckerId(loginUser.getUserId());
pmsCounterSubmit.setCheckerCode(loginUser.getUsername());
pmsCounterSubmit.setCheckerName(loginUser.getNick());
pmsCounterSubmit.setCheckerRemark(param.getCheckerRemark());
pmsCounterSubmit.setCheckStatus(param.getCheckStatus());
pmsCounterSubmitService.updateById(pmsCounterSubmit);
return R.ok();
}
/** /**
* 根据ID更新 * 根据ID更新
@ -85,6 +114,24 @@ public class PmsCounterSubmitController {
return R.isTrue(result); return R.isTrue(result);
} }
/**
* 新增计时报工单个人
* @param pmsCounterSubmit
* @return
*/
@PostMapping("/selfSave")
@SysLog(module = SystemModule.PIECE, title = "计时报工单",desc = "个人添加计时报工单", biz = BizType.INSERT)
public R<?> selfSave(@RequestBody @Valid PmsCounterSubmit pmsCounterSubmit){
LoginUser loginUser = AuthContextUtils.getLoginUser();
pmsCounterSubmit.setId(null);
pmsCounterSubmit.setCreateTime(LocalDateTime.now());
pmsCounterSubmit.setPersonId(loginUser.getUserId());
pmsCounterSubmit.setPersonCode(loginUser.getUsername());
pmsCounterSubmit.setPersonName(loginUser.getNick());
boolean result = pmsCounterSubmitService.save(pmsCounterSubmit);
return R.isTrue(result);
}
/** /**
* 删除计时报工单 * 删除计时报工单
* @param id * @param id

126
src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java

@ -1,25 +1,35 @@
package com.qs.serve.modules.pms.controller; package com.qs.serve.modules.pms.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.framework.mybatis.join.JoinUtil;
import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.pms.entity.PmsProcess;
import com.qs.serve.modules.pms.entity.PmsProduct;
import com.qs.serve.modules.pms.entity.dto.PmsProcessReaBatch;
import com.qs.serve.modules.pms.entity.dto.PmsProductReaBatch;
import com.qs.serve.modules.pms.service.PmsProcessService;
import com.qs.serve.modules.pms.service.PmsProductService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.pms.entity.PmsProductProcess; import com.qs.serve.modules.pms.entity.PmsProductProcess;
import com.qs.serve.modules.pms.service.PmsProductProcessService; import com.qs.serve.modules.pms.service.PmsProductProcessService;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 生产计件 产品工序 * 生产计件 产品工序关联
* @author YenHex * @author YenHex
* @since 2022-08-05 * @since 2022-08-05
*/ */
@ -30,6 +40,8 @@ import java.util.List;
public class PmsProductProcessController { public class PmsProductProcessController {
private PmsProductProcessService pmsProductProcessService; private PmsProductProcessService pmsProductProcessService;
private PmsProductService pmsProductService;
private PmsProcessService pmsProcessService;
/** /**
* 翻页查询 * 翻页查询
@ -42,35 +54,94 @@ public class PmsProductProcessController {
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<PmsProductProcess> productProcessWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<PmsProductProcess> productProcessWrapper = new LambdaQueryWrapper<>(param);
List<PmsProductProcess> list = pmsProductProcessService.list(productProcessWrapper); List<PmsProductProcess> list = pmsProductProcessService.list(productProcessWrapper);
JoinUtil.relate(list);
return R.byPageHelperList(list); return R.byPageHelperList(list);
} }
/** /**
* 根据ID查询 * 翻页查询
* @param id * @param param
* @return * @return
*/ */
@GetMapping("/getById/{id}") @GetMapping("/list")
@SysLog(module = SystemModule.PIECE, title = "产品工序", biz = BizType.QUERY)
@PreAuthorize("hasRole('pms:productProcess:query')") @PreAuthorize("hasRole('pms:productProcess:query')")
public R<PmsProductProcess> getById(@PathVariable("id") String id){ public R<List<PmsProductProcess>> getList(PmsProductProcess param){
PmsProductProcess pmsProductProcess = pmsProductProcessService.getById(id); LambdaQueryWrapper<PmsProductProcess> productProcessWrapper = new LambdaQueryWrapper<>(param);
return R.ok(pmsProductProcess); List<PmsProductProcess> list = pmsProductProcessService.list(productProcessWrapper);
JoinUtil.relate(list);
return R.ok(list);
} }
/**
* 产品批量关联工序
* @param param
* @return
*/
@PostMapping("/editBatchProductRea")
@SysLog(module = SystemModule.PIECE, title = "产品工序关联",desc = "产品批量关联工序", biz = BizType.UPDATE)
@PreAuthorize("hasRole('pms:productProcess:edit')")
@Transactional(rollbackFor = Exception.class)
public R<?> editBatchProductRea(@RequestBody @Valid PmsProductReaBatch param){
String productId = param.getProductId();
List<String> paramProcessIdList = param.getProcessIdList();
LambdaQueryWrapper<PmsProductProcess> lqw = new LambdaQueryWrapper<>();
lqw.eq(PmsProductProcess::getProductId,productId);
if(param.getProcessIdList().size() < 1){
pmsProductProcessService.remove(lqw);
return R.ok();
}
List<PmsProductProcess> list = pmsProductProcessService.list(lqw);
List<String> dbProcessIds = list.stream().map(PmsProductProcess::getProcessId).collect(Collectors.toList());
List<String> nwProcessIds = paramProcessIdList.stream().filter(pid->!dbProcessIds.contains(pid)).collect(Collectors.toList());
List<String> rmProcessIds = dbProcessIds.stream().filter(pid->!paramProcessIdList.contains(pid)).collect(Collectors.toList());
LambdaQueryWrapper<PmsProductProcess> rmlqw = new LambdaQueryWrapper<>();
rmlqw.eq(PmsProductProcess::getProductId,productId);
rmlqw.in(PmsProductProcess::getProcessId,rmProcessIds);
pmsProductProcessService.remove(rmlqw);
List<PmsProductProcess> newList = nwProcessIds.stream().map(procId->{
PmsProductProcess ppp = new PmsProductProcess();
ppp.setProductId(productId);
ppp.setProcessId(procId);
return ppp;
}).collect(Collectors.toList());
pmsProductProcessService.saveBatch(newList);
return R.error();
}
/** /**
* 根据ID更新 * 产品批量关联工序
* @param param * @param param
* @return * @return
*/ */
@PostMapping("/updateById") @PostMapping("/editBatchProcessRea")
@SysLog(module = SystemModule.PIECE, title = "产品工序", biz = BizType.UPDATE) @SysLog(module = SystemModule.PIECE, title = "产品工序关联",desc = "产品批量关联工序", biz = BizType.UPDATE)
@PreAuthorize("hasRole('pms:productProcess:update')") @PreAuthorize("hasRole('pms:productProcess:edit')")
public R<?> updateById(@RequestBody @Valid PmsProductProcess param){ @Transactional(rollbackFor = Exception.class)
boolean result = pmsProductProcessService.updateById(param); public R<?> editBatchProcessRea(@RequestBody @Valid PmsProcessReaBatch param){
return R.isTrue(result); String processId = param.getProcessId();
List<String> paramProductIdList = param.getProductIdList();
LambdaQueryWrapper<PmsProductProcess> lqw = new LambdaQueryWrapper<>();
lqw.eq(PmsProductProcess::getProcessId,processId);
if(param.getProductIdList().size() < 1){
pmsProductProcessService.remove(lqw);
return R.ok();
}
List<PmsProductProcess> list = pmsProductProcessService.list(lqw);
List<String> dbProductIds = list.stream().map(PmsProductProcess::getProductId).collect(Collectors.toList());
List<String> nwProductIds = paramProductIdList.stream().filter(pid->!dbProductIds.contains(pid)).collect(Collectors.toList());
List<String> rmProductIds = dbProductIds.stream().filter(pid->!paramProductIdList.contains(pid)).collect(Collectors.toList());
LambdaQueryWrapper<PmsProductProcess> rmlqw = new LambdaQueryWrapper<>();
rmlqw.eq(PmsProductProcess::getProcessId,processId);
rmlqw.in(PmsProductProcess::getProductId,rmProductIds);
pmsProductProcessService.remove(rmlqw);
List<PmsProductProcess> newList = nwProductIds.stream().map(prodId->{
PmsProductProcess ppp = new PmsProductProcess();
ppp.setProductId(prodId);
ppp.setProcessId(processId);
return ppp;
}).collect(Collectors.toList());
pmsProductProcessService.saveBatch(newList);
return R.error();
} }
/** /**
@ -79,21 +150,34 @@ public class PmsProductProcessController {
* @return * @return
*/ */
@PostMapping("/save") @PostMapping("/save")
@SysLog(module = SystemModule.PIECE, title = "产品工序", biz = BizType.INSERT) @SysLog(module = SystemModule.PIECE, title = "产品工序关联", biz = BizType.UPDATE)
@PreAuthorize("hasRole('pms:productProcess:insert')") @PreAuthorize("hasRole('pms:productProcess:edit')")
public R<?> save(@RequestBody @Valid PmsProductProcess param){ public R<?> save(@RequestBody @Valid PmsProductProcess param){
boolean result = pmsProductProcessService.save(param); boolean result = pmsProductProcessService.save(param);
return R.isTrue(result); return R.isTrue(result);
} }
/** /**
* 删除产品工序 * 根据ID更新
* @param param
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.PIECE, title = "产品工序关联", biz = BizType.UPDATE)
@PreAuthorize("hasRole('pms:productProcess:edit')")
public R<?> updateById(@RequestBody @Valid PmsProductProcess param){
boolean result = pmsProductProcessService.updateById(param);
return R.isTrue(result);
}
/**
* 删除产品工序关联
* @param id * @param id
* @return * @return
*/ */
@DeleteMapping("/deleteById/{id}") @DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.PIECE, title = "产品工序", biz = BizType.DELETE) @SysLog(module = SystemModule.PIECE, title = "产品工序关联", biz = BizType.DELETE)
@PreAuthorize("hasRole('pms:productProcess:delete')") @PreAuthorize("hasRole('pms:productProcess:edit')")
public R<?> deleteById(@PathVariable("id") String id){ public R<?> deleteById(@PathVariable("id") String id){
boolean result = pmsProductProcessService.removeById(id); boolean result = pmsProductProcessService.removeById(id);
return R.isTrue(result); return R.isTrue(result);

12
src/main/java/com/qs/serve/modules/pms/entity/PmsCounterSubmit.java

@ -66,6 +66,10 @@ public class PmsCounterSubmit implements Serializable {
@Length(max = 255,message = "员工填写的备注长度不能超过255字") @Length(max = 255,message = "员工填写的备注长度不能超过255字")
private String personRemark; private String personRemark;
/** 核对状态 */
@Length(max = 32,message = "核对员id长度不能超过32字")
private Integer checkStatus;
/** 核对员id */ /** 核对员id */
@Length(max = 32,message = "核对员id长度不能超过32字") @Length(max = 32,message = "核对员id长度不能超过32字")
private String checkerId; private String checkerId;
@ -121,5 +125,13 @@ public class PmsCounterSubmit implements Serializable {
@JsonProperty @JsonProperty
private Boolean delFlag; private Boolean delFlag;
/** 查询:开始时间 */
@TableField(exist = false)
private LocalDateTime queryStartTime;
/** 查询:结束时间 */
@TableField(exist = false)
private LocalDateTime queryEndTime;
} }

3
src/main/java/com/qs/serve/modules/pms/entity/PmsCounterType.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.pms.entity; package com.qs.serve.modules.pms.entity;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable; import java.io.Serializable;
@ -42,7 +43,7 @@ public class PmsCounterType implements Serializable {
/** 工量单价 */ /** 工量单价 */
@NotBlank(message = "工量单价不能为空") @NotBlank(message = "工量单价不能为空")
@Length(max = 20,message = "工量单价长度不能超过20字") @Length(max = 20,message = "工量单价长度不能超过20字")
private String price; private BigDecimal price;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")

15
src/main/java/com/qs/serve/modules/pms/entity/PmsProductProcess.java

@ -8,6 +8,9 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.common.framework.mybatis.join.annotations.BindEntity;
import com.qs.serve.modules.pms.service.PmsProcessService;
import com.qs.serve.modules.pms.service.PmsProductService;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@ -30,7 +33,7 @@ public class PmsProductProcess implements Serializable {
@TableId(type = IdType.ASSIGN_UUID) @TableId(type = IdType.ASSIGN_UUID)
private String id; private String id;
/** 品id */ /** 品id */
@NotBlank(message = "商品id不能为空") @NotBlank(message = "商品id不能为空")
@Length(max = 32,message = "商品id长度不能超过32字") @Length(max = 32,message = "商品id长度不能超过32字")
private String productId; private String productId;
@ -73,5 +76,15 @@ public class PmsProductProcess implements Serializable {
@JsonProperty @JsonProperty
private Boolean delFlag; private Boolean delFlag;
/** 产品信息 */
@BindEntity(service = PmsProductService.class,joinField = "productId")
@TableField(exist = false)
private Object productInfo;
/** 工序信息 */
@BindEntity(service = PmsProcessService.class,joinField = "processId")
@TableField(exist = false)
private Object processInfo;
} }

24
src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java

@ -0,0 +1,24 @@
package com.qs.serve.modules.pms.entity.dto;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2022/8/8
*/
@Data
public class PmsProcessReaBatch {
/**
* 工序ID
*/
private String processId;
/**
* 产品ID集合
*/
private List<String> productIdList;
}

27
src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java

@ -0,0 +1,27 @@
package com.qs.serve.modules.pms.entity.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author YenHex
* @since 2022/8/8
*/
@Data
public class PmsProductReaBatch {
/**
* 产品ID
*/
@NotNull(message = "请选择产品")
private String productId;
/**
* 工序ID集合
*/
@NotNull(message = "请选择工序")
private List<String> processIdList;
}
Loading…
Cancel
Save