新增质量检验单

pull/451/head
starrysky 2019-11-12 14:55:16 +08:00
parent 884e1289e5
commit e46ca830bf
12 changed files with 218 additions and 83 deletions

View File

@ -3,6 +3,8 @@ package me.zhengjie.modules.wms.qualityCheckSheet.domain;
import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.sql.Timestamp;
import java.io.Serializable;
@ -23,13 +25,15 @@ public class QualityCheckSheet implements Serializable {
private Long id;
@Column(name = "create_time")
@CreationTimestamp
private Timestamp createTime;
@Column(name = "update_time")
@CreationTimestamp
private Timestamp updateTime;
@Column(name = "status")
private Integer status;
private Boolean status;
// 制单人
@Column(name = "make_people_id")

View File

@ -3,6 +3,8 @@ package me.zhengjie.modules.wms.qualityCheckSheet.domain;
import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.sql.Timestamp;
import java.io.Serializable;
@ -23,13 +25,15 @@ public class QualityCheckSheetProduct implements Serializable {
private Long id;
@Column(name = "create_time")
@CreationTimestamp
private Timestamp createTime;
@Column(name = "update_time")
@CreationTimestamp
private Timestamp updateTime;
@Column(name = "status")
private Integer status;
private Boolean status;
// 所属质量检验单
@Column(name = "quality_check_sheet_id")

View File

@ -1,12 +1,29 @@
package me.zhengjie.modules.wms.qualityCheckSheet.repository;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct;
import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheetProduct;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* @author huangxingxing
* @date 2019-11-12
*/
public interface QualityCheckSheetProductRepository extends JpaRepository<QualityCheckSheetProduct, Long>, JpaSpecificationExecutor {
/**
* true
* @param qualityCheckSheetId
* @return
*/
@Query(value ="select * from quality_check_sheet_product where quality_check_sheet_id = ?1 and status =1", nativeQuery = true)
List<QualityCheckSheetProduct> queryByQualityCheckSheetIdAndStatusTrue(Long qualityCheckSheetId);
@Modifying
@Query(value = "delete from quality_check_sheet_product where product_code = ?1 and quality_check_sheet_id = ?2", nativeQuery = true)
void deleteByProductCodeAndQualityCheckSheetId(String productCode, Long qualityCheckSheetId);
}

View File

@ -1,12 +1,22 @@
package me.zhengjie.modules.wms.qualityCheckSheet.repository;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet;
import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheet;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
/**
* @author huangxingxing
* @date 2019-11-12
*/
public interface QualityCheckSheetRepository extends JpaRepository<QualityCheckSheet, Long>, JpaSpecificationExecutor {
/**
*
* @param qualityCheekSheetCode
* @return
*/
@Query(value ="select * from quality_check_sheet where quality_cheek_sheet_code = ?1 and status = 1", nativeQuery = true)
QualityCheckSheet findByQualityCheekSheetCode(String qualityCheekSheetCode);
}

View File

@ -0,0 +1,32 @@
package me.zhengjie.modules.wms.qualityCheckSheet.request;
import lombok.Data;
import javax.persistence.Column;
import java.io.Serializable;
import java.util.List;
/**
* @author
* @date 2019-11-12
*/
@Data
public class CreateQualityCheckSheetRequest implements Serializable {
// 制单人
@Column(name = "make_people_id")
private Long makePeopleId;
// 制单人姓名
@Column(name = "make_people_name")
private String makePeopleName;
// 质量检验单单据编号
@Column(name = "quality_cheek_sheet_code")
private String qualityCheekSheetCode;
@Column(name = "remark")
private String remark;
// 委外加工产品
private List<QualityCheckSheetProductRequest> qualityCheckSheetProductList;
}

View File

@ -0,0 +1,42 @@
package me.zhengjie.modules.wms.qualityCheckSheet.request;
import lombok.Data;
import javax.persistence.Column;
import java.io.Serializable;
/**
* @author
* @date 2019-11-12
*/
@Data
public class QualityCheckSheetProductRequest implements Serializable {
// 所属质量检验单
@Column(name = "quality_check_sheet_id")
private Long qualityCheckSheetId;
@Column(name = "product_code")
private String productCode;
@Column(name = "product_id")
private Long productId;
@Column(name = "product_name")
private String productName;
@Column(name = "remark")
private String remark;
// 产品个数
@Column(name = "product_number")
private Integer productNumber;
// 合格个数
@Column(name = "qualified_number")
private Integer qualifiedNumber;
// 报废数量
@Column(name = "scrap_number")
private Integer scrapNumber;
}

View File

@ -2,6 +2,7 @@ package me.zhengjie.modules.wms.qualityCheckSheet.rest;
import me.zhengjie.aop.log.Log;
import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheet;
import me.zhengjie.modules.wms.qualityCheckSheet.request.CreateQualityCheckSheetRequest;
import me.zhengjie.modules.wms.qualityCheckSheet.service.QualityCheckSheetService;
import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
@ -13,11 +14,14 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author huangxingxing
* @date 2019-11-12
*/
@Api(tags = "QualityCheckSheet管理")
@Api(tags = "质量检验单管理")
@RestController
@RequestMapping("api")
public class QualityCheckSheetController {
@ -25,37 +29,47 @@ public class QualityCheckSheetController {
@Autowired
private QualityCheckSheetService qualityCheckSheetService;
@Log("查询QualityCheckSheet")
@Log("分页查询质量管理检验单")
@ApiOperation(value = "查询QualityCheckSheet")
@GetMapping(value = "/qualityCheckSheet")
@PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_SELECT')")
// @PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_SELECT')")
public ResponseEntity getQualityCheckSheets(QualityCheckSheetQueryCriteria criteria, Pageable pageable){
return new ResponseEntity(qualityCheckSheetService.queryAll(criteria,pageable),HttpStatus.OK);
}
@Log("新增QualityCheckSheet")
@ApiOperation(value = "新增QualityCheckSheet")
@Log("新增质量检验单")
@ApiOperation(value = "新增质量检验单")
@PostMapping(value = "/qualityCheckSheet")
@PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_CREATE')")
public ResponseEntity create(@Validated @RequestBody QualityCheckSheet resources){
return new ResponseEntity(qualityCheckSheetService.create(resources),HttpStatus.CREATED);
// @PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_CREATE')")
public ResponseEntity create(@Validated @RequestBody CreateQualityCheckSheetRequest createQualityCheckSheetRequest){
return new ResponseEntity(qualityCheckSheetService.create(createQualityCheckSheetRequest),HttpStatus.CREATED);
}
@Log("修改QualityCheckSheet")
@ApiOperation(value = "修改QualityCheckSheet")
@Log("修改质量检验单")
@ApiOperation(value = "修改质量检验单")
@PutMapping(value = "/qualityCheckSheet")
@PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_EDIT')")
// @PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_EDIT')")
public ResponseEntity update(@Validated @RequestBody QualityCheckSheet resources){
qualityCheckSheetService.update(resources);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@Log("删除QualityCheckSheet")
@ApiOperation(value = "删除QualityCheckSheet")
@Log("删除质量检验单")
@ApiOperation(value = "删除质量检验单")
@DeleteMapping(value = "/qualityCheckSheet/{id}")
@PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_DELETE')")
// @PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_DELETE')")
public ResponseEntity delete(@PathVariable Long id){
qualityCheckSheetService.delete(id);
return new ResponseEntity(HttpStatus.OK);
}
@Log("初始化质量检验单单据编号")
@ApiOperation(value = "初始化质量检验单单据编号")
@GetMapping(value = "/initQualityCheckSheetCode")
public ResponseEntity initQualityCheckSheetCode(){
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");//设置日期格式
String supplierCode = "QCS"+ LocalDateTime.now().format(fmt);
return new ResponseEntity(supplierCode,HttpStatus.OK);
}
}

View File

@ -1,61 +0,0 @@
package me.zhengjie.modules.wms.qualityCheckSheet.rest;
import me.zhengjie.aop.log.Log;
import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheetProduct;
import me.zhengjie.modules.wms.qualityCheckSheet.service.QualityCheckSheetProductService;
import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetProductQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
/**
* @author huangxingxing
* @date 2019-11-12
*/
@Api(tags = "QualityCheckSheetProduct管理")
@RestController
@RequestMapping("api")
public class QualityCheckSheetProductController {
@Autowired
private QualityCheckSheetProductService qualityCheckSheetProductService;
@Log("查询QualityCheckSheetProduct")
@ApiOperation(value = "查询QualityCheckSheetProduct")
@GetMapping(value = "/qualityCheckSheetProduct")
@PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEETPRODUCT_ALL','QUALITYCHECKSHEETPRODUCT_SELECT')")
public ResponseEntity getQualityCheckSheetProducts(QualityCheckSheetProductQueryCriteria criteria, Pageable pageable){
return new ResponseEntity(qualityCheckSheetProductService.queryAll(criteria,pageable),HttpStatus.OK);
}
@Log("新增QualityCheckSheetProduct")
@ApiOperation(value = "新增QualityCheckSheetProduct")
@PostMapping(value = "/qualityCheckSheetProduct")
@PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEETPRODUCT_ALL','QUALITYCHECKSHEETPRODUCT_CREATE')")
public ResponseEntity create(@Validated @RequestBody QualityCheckSheetProduct resources){
return new ResponseEntity(qualityCheckSheetProductService.create(resources),HttpStatus.CREATED);
}
@Log("修改QualityCheckSheetProduct")
@ApiOperation(value = "修改QualityCheckSheetProduct")
@PutMapping(value = "/qualityCheckSheetProduct")
@PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEETPRODUCT_ALL','QUALITYCHECKSHEETPRODUCT_EDIT')")
public ResponseEntity update(@Validated @RequestBody QualityCheckSheetProduct resources){
qualityCheckSheetProductService.update(resources);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@Log("删除QualityCheckSheetProduct")
@ApiOperation(value = "删除QualityCheckSheetProduct")
@DeleteMapping(value = "/qualityCheckSheetProduct/{id}")
@PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEETPRODUCT_ALL','QUALITYCHECKSHEETPRODUCT_DELETE')")
public ResponseEntity delete(@PathVariable Long id){
qualityCheckSheetProductService.delete(id);
return new ResponseEntity(HttpStatus.OK);
}
}

View File

@ -1,6 +1,7 @@
package me.zhengjie.modules.wms.qualityCheckSheet.service;
import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheet;
import me.zhengjie.modules.wms.qualityCheckSheet.request.CreateQualityCheckSheetRequest;
import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetDTO;
import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetQueryCriteria;
//import org.springframework.cache.annotation.CacheConfig;
@ -42,11 +43,11 @@ public interface QualityCheckSheetService {
/**
* create
* @param resources
* @param createQualityCheckSheetRequest
* @return
*/
//@CacheEvict(allEntries = true)
QualityCheckSheetDTO create(QualityCheckSheet resources);
QualityCheckSheetDTO create(CreateQualityCheckSheetRequest createQualityCheckSheetRequest);
/**
* update

View File

@ -1,8 +1,11 @@
package me.zhengjie.modules.wms.qualityCheckSheet.service.dto;
import lombok.Data;
import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.OutSourceProcessSheetProductDTO;
import java.sql.Timestamp;
import java.io.Serializable;
import java.util.List;
/**
@ -19,7 +22,7 @@ public class QualityCheckSheetDTO implements Serializable {
private Timestamp updateTime;
private Integer status;
private Boolean status;
// 制单人
private Long makePeopleId;
@ -31,4 +34,7 @@ public class QualityCheckSheetDTO implements Serializable {
private String qualityCheekSheetCode;
private String remark;
// 委外加工单产品信息
private List<QualityCheckSheetProductDTO> qualityCheckSheetProductList;
}

View File

@ -19,7 +19,7 @@ public class QualityCheckSheetProductDTO implements Serializable {
private Timestamp updateTime;
private Integer status;
private Boolean status;
// 所属质量检验单
private Long qualityCheckSheetId;

View File

@ -1,21 +1,39 @@
package me.zhengjie.modules.wms.qualityCheckSheet.service.impl;
import me.zhengjie.exception.BadRequestException;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct;
import me.zhengjie.modules.wms.outSourceProductSheet.request.OutSourceProcessSheetProductRequest;
import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.OutSourceProcessSheetDTO;
import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.OutSourceProcessSheetProductDTO;
import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheet;
import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheetProduct;
import me.zhengjie.modules.wms.qualityCheckSheet.repository.QualityCheckSheetProductRepository;
import me.zhengjie.modules.wms.qualityCheckSheet.request.CreateQualityCheckSheetRequest;
import me.zhengjie.modules.wms.qualityCheckSheet.request.QualityCheckSheetProductRequest;
import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetProductDTO;
import me.zhengjie.modules.wms.qualityCheckSheet.service.mapper.QualityCheckSheetProductMapper;
import me.zhengjie.utils.ValidationUtil;
import me.zhengjie.modules.wms.qualityCheckSheet.repository.QualityCheckSheetRepository;
import me.zhengjie.modules.wms.qualityCheckSheet.service.QualityCheckSheetService;
import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetDTO;
import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetQueryCriteria;
import me.zhengjie.modules.wms.qualityCheckSheet.service.mapper.QualityCheckSheetMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import me.zhengjie.utils.PageUtil;
import me.zhengjie.utils.QueryHelp;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
/**
* @author huangxingxing
@ -31,6 +49,12 @@ public class QualityCheckSheetServiceImpl implements QualityCheckSheetService {
@Autowired
private QualityCheckSheetMapper qualityCheckSheetMapper;
@Autowired
private QualityCheckSheetProductRepository qualityCheckSheetProductRepository;
@Autowired
private QualityCheckSheetProductMapper qualityCheckSheetProductMapper;
@Override
public Object queryAll(QualityCheckSheetQueryCriteria criteria, Pageable pageable){
Page<QualityCheckSheet> page = qualityCheckSheetRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
@ -51,8 +75,50 @@ public class QualityCheckSheetServiceImpl implements QualityCheckSheetService {
@Override
@Transactional(rollbackFor = Exception.class)
public QualityCheckSheetDTO create(QualityCheckSheet resources) {
return qualityCheckSheetMapper.toDto(qualityCheckSheetRepository.save(resources));
public QualityCheckSheetDTO create(CreateQualityCheckSheetRequest createQualityCheckSheetRequest) {
QualityCheckSheet qualityCheckSheet = new QualityCheckSheet();
BeanUtils.copyProperties(createQualityCheckSheetRequest, qualityCheckSheet);
String qualityCheekSheetCode = createQualityCheckSheetRequest.getQualityCheekSheetCode();
if(!StringUtils.hasLength(qualityCheekSheetCode)){
throw new BadRequestException("质量检验单单据编号不能为空!");
}
qualityCheckSheet.setStatus(true);
// 新增质量检验单
qualityCheckSheetRepository.save(qualityCheckSheet);
qualityCheckSheet = qualityCheckSheetRepository.findByQualityCheekSheetCode(qualityCheekSheetCode);
// 新增质量检验单产品信息
List<QualityCheckSheetProductRequest> qualityCheckSheetProductRequestList = createQualityCheckSheetRequest.getQualityCheckSheetProductList();
if(CollectionUtils.isEmpty(qualityCheckSheetProductRequestList)){
throw new BadRequestException("质量检验单产品信息不能为空!");
}
for(QualityCheckSheetProductRequest qualityCheckSheetProductRequest : qualityCheckSheetProductRequestList){
QualityCheckSheetProduct qualityCheckSheetProduct = new QualityCheckSheetProduct();
BeanUtils.copyProperties(qualityCheckSheetProductRequest, qualityCheckSheetProduct);
qualityCheckSheetProduct.setStatus(true);
qualityCheckSheetProduct.setQualityCheckSheetId(qualityCheckSheet.getId());
qualityCheckSheetProductRepository.save(qualityCheckSheetProduct);
}
QualityCheckSheetDTO qualityCheckSheetDTO = qualityCheckSheetMapper.toDto(qualityCheckSheet);
List<QualityCheckSheetProduct> qualityCheckSheetProductList = qualityCheckSheetProductRepository.queryByQualityCheckSheetIdAndStatusTrue(qualityCheckSheet.getId());
if(!CollectionUtils.isEmpty(qualityCheckSheetProductList)){
List<QualityCheckSheetProductDTO> qualityCheckSheetProductDTOList = new ArrayList<>();
for(QualityCheckSheetProduct qualityCheckSheetProduct : qualityCheckSheetProductList){
QualityCheckSheetProductDTO qualityCheckSheetProductDTO = new QualityCheckSheetProductDTO();
BeanUtils.copyProperties(qualityCheckSheetProduct, qualityCheckSheetProductDTO);
qualityCheckSheetProductDTOList.add(qualityCheckSheetProductDTO);
}
qualityCheckSheetDTO.setQualityCheckSheetProductList(qualityCheckSheetProductDTOList);
}
return qualityCheckSheetDTO;
}
@Override