From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/ProductController.java |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 178 insertions(+), 0 deletions(-)

diff --git a/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/ProductController.java b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/ProductController.java
new file mode 100644
index 0000000..68b8292
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/ProductController.java
@@ -0,0 +1,178 @@
+package jnpf.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import io.swagger.v3.oas.annotations.Parameter;
+import jnpf.base.controller.SuperController;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import jnpf.base.ActionResult;
+import jnpf.base.vo.ListVO;
+import jnpf.base.vo.PageListVO;
+import jnpf.base.vo.PaginationVO;
+import jnpf.constant.MsgCode;
+import jnpf.entity.ProductEntity;
+import jnpf.entity.ProductEntryEntity;
+import jnpf.exception.DataException;
+import jnpf.model.product.*;
+import jnpf.model.productentry.ProductEntryInfoVO;
+import jnpf.model.productentry.ProductEntryListVO;
+import jnpf.model.productentry.ProductEntryMdoel;
+import jnpf.service.ProductEntryService;
+import jnpf.service.ProductService;
+import jnpf.util.JsonUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * 閿�鍞鍗�
+ *
+ * @鐗堟湰锛� V3.1.0
+ * @鐗堟潈锛� 寮曡繄淇℃伅鎶�鏈湁闄愬叕鍙革紙https://www.jnpfsoft.com锛�
+ * @浣滆�咃細 JNPF寮�鍙戝钩鍙扮粍
+ * @鏃ユ湡锛� 2021-07-10 10:40:59
+ */
+@Slf4j
+@RestController
+@Tag(name = "閿�鍞鍗�", description = "Product")
+@RequestMapping("/saleOrder/Product")
+@RequiredArgsConstructor
+public class ProductController extends SuperController<ProductService, ProductEntity> {
+
+    private final ProductService productService;
+
+    private final ProductEntryService productEntryService;
+
+    private final Random random = new Random();
+
+    /**
+     * 鍒楄〃
+     *
+     * @param productPagination 鍒嗛〉妯″瀷
+     * @return
+     */
+    @Operation(summary = "鍒楄〃")
+    @GetMapping
+    @SaCheckPermission("extend.orderDemo")
+    public ActionResult<PageListVO<ProductListVO>> list(ProductPagination productPagination) {
+        List<ProductEntity> list = productService.getList(productPagination);
+        List<ProductListVO> listVO = JsonUtil.getJsonToList(list, ProductListVO.class);
+        PageListVO<ProductListVO> vo = new PageListVO<>();
+        vo.setList(listVO);
+        PaginationVO page = JsonUtil.getJsonToBean(productPagination, PaginationVO.class);
+        vo.setPagination(page);
+        return ActionResult.success(vo);
+    }
+
+    /**
+     * 鍒涘缓
+     *
+     * @param productCrForm 閿�鍞ā鍨�
+     * @return
+     */
+    @Operation(summary = "鍒涘缓")
+    @PostMapping
+    @Parameter(name = "productCrForm", description = "閿�鍞ā鍨�", required = true)
+    @SaCheckPermission("extend.orderDemo")
+    public ActionResult<Object> create(@RequestBody @Valid ProductCrForm productCrForm) throws DataException {
+        ProductEntity entity = JsonUtil.getJsonToBean(productCrForm, ProductEntity.class);
+        List<ProductEntryEntity> productEntryList = JsonUtil.getJsonToList(productCrForm.getProductEntryList(), ProductEntryEntity.class);
+        productService.create(entity, productEntryList);
+        return ActionResult.success(MsgCode.SU001.get());
+    }
+
+    /**
+     * 淇℃伅
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "淇℃伅")
+    @GetMapping("/{id}")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.orderDemo")
+    public ActionResult<ProductInfoVO> info(@PathVariable("id") String id) {
+        ProductEntity entity = productService.getInfo(id);
+        ProductInfoVO vo = JsonUtil.getJsonToBean(entity, ProductInfoVO.class);
+        List<ProductEntryEntity> productEntryList = productEntryService.getProductentryEntityList(id);
+        List<ProductEntryInfoVO> productList = JsonUtil.getJsonToList(productEntryList, ProductEntryInfoVO.class);
+        vo.setProductEntryList(productList);
+        return ActionResult.success(vo);
+    }
+
+    /**
+     * 鏇存柊
+     *
+     * @param productUpForm 閿�鍞ā鍨�
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "鏇存柊")
+    @PutMapping("/{id}")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @Parameter(name = "productUpForm", description = "閿�鍞ā鍨�", required = true)
+    @SaCheckPermission("extend.orderDemo")
+    public ActionResult<Object> update(@PathVariable("id") String id, @RequestBody @Valid ProductUpForm productUpForm) {
+        ProductEntity entity = productService.getInfo(id);
+        if (entity != null) {
+            List<ProductEntryEntity> productEntryList = JsonUtil.getJsonToList(productUpForm.getProductEntryList(), ProductEntryEntity.class);
+            productService.update(id, entity, productEntryList);
+            return ActionResult.success(MsgCode.SU004.get());
+        } else {
+            return ActionResult.fail(MsgCode.FA002.get());
+        }
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "鍒犻櫎")
+    @DeleteMapping("/{id}")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.orderDemo")
+    public ActionResult<Object> delete(@PathVariable("id") String id) {
+        ProductEntity entity = productService.getInfo(id);
+        if (entity != null) {
+            productService.delete(entity);
+        }
+        return ActionResult.success(MsgCode.SU003.get());
+    }
+
+    /**
+     * 鑾峰彇閿�鍞骇鍝佹槑缁�
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "鑾峰彇閿�鍞槑缁�")
+    @GetMapping("/ProductEntry/{id}")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.orderDemo")
+    public ActionResult<ListVO<ProductEntryListVO>> ProductEntryList(@PathVariable("id") String id) {
+        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\":\"鐩抃"}]";
+        List<ProductEntryMdoel> dataAll = JsonUtil.getJsonToList(data, ProductEntryMdoel.class);
+        List<ProductEntryEntity> productEntryList = productEntryService.getProductentryEntityList(id);
+        List<ProductEntryListVO> productList = JsonUtil.getJsonToList(productEntryList, ProductEntryListVO.class);
+        for (ProductEntryListVO entry : productList) {
+            List<ProductEntryMdoel> dataList = new ArrayList<>();
+
+            int num = random.nextInt(dataAll.size());
+            for (int i = 0; i < num; i++) {
+                dataList.add(dataAll.get(num));
+            }
+            entry.setDataList(dataList);
+        }
+        ListVO<ProductEntryListVO> vo = new ListVO<>();
+        vo.setList(productList);
+        return ActionResult.success(vo);
+    }
+
+}

--
Gitblit v1.8.0