ProductController.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package cn.fastfun.controller.api;
  2. import cn.fastfun.service.ProductService;
  3. import cn.fastfun.service.entity.IdParamForStatus;
  4. import cn.fastfun.service.entity.Product;
  5. import cn.fastfun.service.entity.QueryParamForProduct;
  6. import cn.fastfun.util.VerifyUtil;
  7. import com.bridge.dto.*;
  8. import io.swagger.annotations.Api;
  9. import io.swagger.annotations.ApiOperation;
  10. import io.swagger.annotations.ApiParam;
  11. import org.springframework.web.bind.annotation.*;
  12. import javax.annotation.Resource;
  13. import java.util.*;
  14. @Api(tags = "设备类型记录(典表)")
  15. @RestController
  16. @RequestMapping("/api/v1/product")
  17. public class ProductController {
  18. @Resource
  19. ProductService productService;
  20. @ApiOperation(value = "保存SN规则信息")
  21. @PostMapping("/save")
  22. public ApiDTO save(@RequestBody @ApiParam(name = "SN规则对象", value = "传入json格式", required = true) Product product) {
  23. // // 针对产品规格这一项进行操作
  24. // if(product.getSnType().equals("产品规格")){
  25. // String checkSnTypeCodeResult = VerifyUtil.checkSnTypeCode(product);
  26. // if(!(checkSnTypeCodeResult.equals("passed"))){
  27. // return ApiDTO.error(500,checkSnTypeCodeResult);
  28. // }
  29. // List<Product> productSpecificationResults = ResolveUtil.resolveProductSpecification(product);
  30. // List<List<Product>> checkDuplicatedResults = new ArrayList<>();
  31. //
  32. // for(Product productSpecificationResult:productSpecificationResults) {
  33. // List<Product> checkDuplicatedResult = productService.findAll(
  34. // Arrays.asList(QueryParamExp.eq("snTypeCode", productSpecificationResult.getSnTypeCode()),
  35. // QueryParamExp.eq("snType", productSpecificationResult.getSnType())));
  36. //
  37. // checkDuplicatedResults.add(checkDuplicatedResult);
  38. //
  39. // String checkSnTypeCodeResultForEach = VerifyUtil.checkSnTypeCode(productSpecificationResult);
  40. // if((checkSnTypeCodeResultForEach.equals("passed"))&(checkDuplicatedResult.isEmpty())){
  41. // productService.save(productSpecificationResult);
  42. // }
  43. // else if(!(checkSnTypeCodeResultForEach.equals("passed"))){
  44. // return ApiDTO.error(500,checkSnTypeCodeResultForEach);
  45. // }
  46. // }
  47. // if((!(checkDuplicatedResults.get(0).isEmpty()))&(!(checkDuplicatedResults.get(1).isEmpty()))&(!(checkDuplicatedResults.get(2).isEmpty()))){
  48. // return ApiDTO.error(500,"该产品规格对应的三个规则行已存在,未进行任何保存",checkDuplicatedResults);
  49. // }
  50. // return ApiDTO.ok("保存成功,未保存的规则行id为null",productSpecificationResults);
  51. // }
  52. // 校验输入的SN类型对应的编号
  53. String checkSnTypeCodeResult = VerifyUtil.checkSnTypeCode(product);
  54. List<Product> checkDuplicatedResult = productService.findAll(
  55. Arrays.asList(QueryParamExp.eq("snTypeCode", product.getSnTypeCode()),
  56. QueryParamExp.eq("snType", product.getSnType())));
  57. if (!checkDuplicatedResult.isEmpty()) {
  58. return ApiDTO.error(500, "该规则行已存在", checkDuplicatedResult);
  59. }
  60. if (checkSnTypeCodeResult.equals("passed")) {
  61. Product tmp = productService.save(product);
  62. return ApiDTO.ok("保存成功", tmp);
  63. } else {
  64. return ApiDTO.error(500, checkSnTypeCodeResult);
  65. }
  66. }
  67. @ApiOperation(value = "查询SN规则信息")
  68. @PostMapping("/get")
  69. public ApiDTO get(@RequestBody @ApiParam(name = "SN规则行对应的id", required = true) IdParam param) {
  70. return ApiDTO.ok("查询成功!", productService.get(param.getId()));
  71. }
  72. @ApiOperation(value = "删除SN规则信息")
  73. @PostMapping("/delete")
  74. public ApiDTO delete(@RequestBody @ApiParam(name = "SN规则行对应的id", required = true) IdParamForStatus param) {
  75. Product product = productService.get(param.getId());
  76. product.setStatus(param.getStatus());
  77. Product tmp = productService.save(product);
  78. return ApiDTO.ok("删除成功!", tmp);
  79. }
  80. @ApiOperation(value = "分页搜索SN规则信息")
  81. @PostMapping("/pageQuery")
  82. public ApiDTO pageQuery(@RequestBody QueryParamForProduct param) {
  83. List<Product> resultByType = productService.findAll(QueryParamExp.eq("snType", param.getType()));
  84. resultByType.sort(Comparator.comparing(Product::getAddTime).reversed());
  85. int resultSize = resultByType.size();
  86. int startIndex = (param.getIndex() - 1) * param.getLength();
  87. int endIndex = startIndex + param.getLength();
  88. List<Product> resultByTypeAndPage;
  89. try {
  90. if (endIndex > resultSize) {
  91. endIndex = resultSize;
  92. resultByTypeAndPage = resultByType.subList(startIndex, endIndex);
  93. } else {
  94. resultByTypeAndPage = resultByType.subList(startIndex, endIndex);
  95. }
  96. } catch (IllegalArgumentException e) {
  97. return ApiDTO.error("分页索引越界!");
  98. }
  99. ApiPageDTO result = new ApiPageDTO("搜索成功!", resultByTypeAndPage);
  100. result.setTotal(resultByTypeAndPage.size());
  101. return result;
  102. }
  103. }