ProductController.java 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package jnpf.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import io.swagger.v3.oas.annotations.Operation;
  4. import io.swagger.v3.oas.annotations.Parameter;
  5. import io.swagger.v3.oas.annotations.Parameters;
  6. import io.swagger.v3.oas.annotations.tags.Tag;
  7. import jnpf.base.ActionResult;
  8. import jnpf.base.controller.SuperController;
  9. import jnpf.base.vo.ListVO;
  10. import jnpf.base.vo.PageListVO;
  11. import jnpf.base.vo.PaginationVO;
  12. import jnpf.constant.MsgCode;
  13. import jnpf.entity.ProductEntity;
  14. import jnpf.entity.ProductEntryEntity;
  15. import jnpf.exception.DataException;
  16. import jnpf.model.product.*;
  17. import jnpf.model.productEntry.ProductEntryInfoVO;
  18. import jnpf.model.productEntry.ProductEntryListVO;
  19. import jnpf.model.productEntry.ProductEntryMdoel;
  20. import jnpf.service.ProductEntryService;
  21. import jnpf.service.ProductService;
  22. import jnpf.util.JsonUtil;
  23. import lombok.extern.slf4j.Slf4j;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.*;
  26. import jakarta.validation.Valid;
  27. import java.util.ArrayList;
  28. import java.util.List;
  29. import java.util.Random;
  30. /**
  31. * 销售订单
  32. *
  33. * @版本: V3.1.0
  34. * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
  35. * @作者: JNPF开发平台组
  36. * @日期: 2021-07-10 10:40:59
  37. */
  38. @Slf4j
  39. @RestController
  40. @Tag(name = "销售订单", description = "Product")
  41. @RequestMapping("/api/extend/saleOrder/Product")
  42. public class ProductController extends SuperController<ProductService, ProductEntity> {
  43. @Autowired
  44. private ProductService productService;
  45. @Autowired
  46. private ProductEntryService productEntryService;
  47. /**
  48. * 列表
  49. *
  50. * @param productPagination 分页模型
  51. * @return
  52. */
  53. @Operation(summary = "列表")
  54. @GetMapping
  55. @SaCheckPermission("extend.orderDemo")
  56. public ActionResult<PageListVO<ProductListVO>> list(ProductPagination productPagination) {
  57. List<ProductEntity> list = productService.getList(productPagination);
  58. List<ProductListVO> listVO = JsonUtil.getJsonToList(list, ProductListVO.class);
  59. PageListVO vo = new PageListVO();
  60. vo.setList(listVO);
  61. PaginationVO page = JsonUtil.getJsonToBean(productPagination, PaginationVO.class);
  62. vo.setPagination(page);
  63. return ActionResult.success(vo);
  64. }
  65. /**
  66. * 创建
  67. *
  68. * @param productCrForm 销售模型
  69. * @return
  70. */
  71. @Operation(summary = "创建")
  72. @PostMapping
  73. @Parameters({
  74. @Parameter(name = "productCrForm", description = "销售模型",required = true),
  75. })
  76. @SaCheckPermission("extend.orderDemo")
  77. public ActionResult create(@RequestBody @Valid ProductCrForm productCrForm) throws DataException {
  78. ProductEntity entity = JsonUtil.getJsonToBean(productCrForm, ProductEntity.class);
  79. List<ProductEntryEntity> productEntryList = JsonUtil.getJsonToList(productCrForm.getProductEntryList(), ProductEntryEntity.class);
  80. productService.create(entity, productEntryList);
  81. return ActionResult.success(MsgCode.SU001.get());
  82. }
  83. /**
  84. * 信息
  85. *
  86. * @param id 主键
  87. * @return
  88. */
  89. @Operation(summary = "信息")
  90. @GetMapping("/{id}")
  91. @Parameters({
  92. @Parameter(name = "id", description = "主键",required = true),
  93. })
  94. @SaCheckPermission("extend.orderDemo")
  95. public ActionResult<ProductInfoVO> info(@PathVariable("id") String id) {
  96. ProductEntity entity = productService.getInfo(id);
  97. ProductInfoVO vo = JsonUtil.getJsonToBean(entity, ProductInfoVO.class);
  98. List<ProductEntryEntity> productEntryList = productEntryService.getProductentryEntityList(id);
  99. List<ProductEntryInfoVO> productList = JsonUtil.getJsonToList(productEntryList, ProductEntryInfoVO.class);
  100. vo.setProductEntryList(productList);
  101. return ActionResult.success(vo);
  102. }
  103. /**
  104. * 更新
  105. *
  106. * @param productUpForm 销售模型
  107. * @param id 主键
  108. * @return
  109. */
  110. @Operation(summary = "更新")
  111. @PutMapping("/{id}")
  112. @Parameters({
  113. @Parameter(name = "id", description = "主键",required = true),
  114. @Parameter(name = "productUpForm", description = "销售模型",required = true),
  115. })
  116. @SaCheckPermission("extend.orderDemo")
  117. public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid ProductUpForm productUpForm) {
  118. ProductEntity entity = productService.getInfo(id);
  119. if (entity != null) {
  120. List<ProductEntryEntity> productEntryList = JsonUtil.getJsonToList(productUpForm.getProductEntryList(), ProductEntryEntity.class);
  121. productService.update(id, entity, productEntryList);
  122. return ActionResult.success(MsgCode.SU004.get());
  123. } else {
  124. return ActionResult.fail(MsgCode.FA002.get());
  125. }
  126. }
  127. /**
  128. * 删除
  129. *
  130. * @param id 主键
  131. * @return
  132. */
  133. @Operation(summary = "删除")
  134. @DeleteMapping("/{id}")
  135. @Parameters({
  136. @Parameter(name = "id", description = "主键",required = true),
  137. })
  138. @SaCheckPermission("extend.orderDemo")
  139. public ActionResult delete(@PathVariable("id") String id) {
  140. ProductEntity entity = productService.getInfo(id);
  141. if (entity != null) {
  142. productService.delete(entity);
  143. }
  144. return ActionResult.success(MsgCode.SU003.get());
  145. }
  146. /**
  147. * 获取销售产品明细
  148. *
  149. * @param id 主键
  150. * @return
  151. */
  152. @Operation(summary = "获取销售明细")
  153. @GetMapping("/ProductEntry/{id}")
  154. @Parameters({
  155. @Parameter(name = "id", description = "主键",required = true),
  156. })
  157. @SaCheckPermission("extend.orderDemo")
  158. public ActionResult<ListVO<ProductEntryInfoVO>> ProductEntryList(@PathVariable("id") String id) {
  159. String data = "[{\"id\":\"37c995b4044541009fb7e285bcf9845d\",\"productSpecification\":\"120ml\",\"qty\":16,\"money\":510,\"price\":120,\"commandType\":\"唯一码\",\"util\":\"盒\"},{\"id\":\"2dbb11d3cde04c299985ac944d130ba0\",\"productSpecification\":\"150ml\",\"qty\":15,\"money\":520,\"price\":310,\"commandType\":\"唯一码\",\"util\":\"盒\"},{\"id\":\"f8ec261ccdf045e5a2e1f0e5485cda76\",\"productSpecification\":\"40ml\",\"qty\":13,\"money\":530,\"price\":140,\"commandType\":\"唯一码\",\"util\":\"盒\"},{\"id\":\"6c110b57ae56445faa8ce9be501c8997\",\"productSpecification\":\"103ml\",\"qty\":2,\"money\":504,\"price\":150,\"commandType\":\"唯一码\",\"util\":\"盒\"},{\"id\":\"f2ee981aaf934147a4d090a0eed2203f\",\"productSpecification\":\"120ml\",\"qty\":21,\"money\":550,\"price\":160,\"commandType\":\"唯一码\",\"util\":\"盒\"}]";
  160. List<ProductEntryMdoel> dataAll = JsonUtil.getJsonToList(data, ProductEntryMdoel.class);
  161. List<ProductEntryEntity> productEntryList = productEntryService.getProductentryEntityList(id);
  162. List<ProductEntryListVO> productList = JsonUtil.getJsonToList(productEntryList, ProductEntryListVO.class);
  163. for (ProductEntryListVO entry : productList) {
  164. List<ProductEntryMdoel> dataList = new ArrayList<>();
  165. Random random = new Random();
  166. int num = random.nextInt(dataAll.size());
  167. for (int i = 0; i < num; i++) {
  168. dataList.add(dataAll.get(num));
  169. }
  170. entry.setDataList(dataList);
  171. }
  172. ListVO vo = new ListVO();
  173. vo.setList(productList);
  174. return ActionResult.success(vo);
  175. }
  176. }