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/limsController/LimsSxtQushiController.java |   94 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsSxtQushiController.java b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsSxtQushiController.java
new file mode 100644
index 0000000..fc74894
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsSxtQushiController.java
@@ -0,0 +1,94 @@
+package jnpf.limsController;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jnpf.limsEntity.LimsSxtQushiDataVo;
+import jnpf.limsEntity.LimsSxtQushiOptionsVo;
+import jnpf.limsEntity.LimsSxtQushiParam;
+import jnpf.limsService.LimsSxtQushiService;
+import jnpf.util.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+
+@Tag(name = "lims姘寸郴缁熻秼鍔垮垎鏋�", description = "")
+@RestController
+@RequestMapping("/lims/biz/sxt/qushi")
+public class LimsSxtQushiController {
+
+    @Autowired
+    private LimsSxtQushiService qushiService;
+
+    @Operation(summary = "姘寸郴缁熻秼鍔跨瓫閫夐�夐」")
+    @GetMapping("/options")
+    public R<LimsSxtQushiOptionsVo> options(
+            @RequestParam(value = "yangpin_leixing_id", required = false) String yangpinLeixingId,
+            @RequestParam(value = "chejian_id", required = false) String chejianId,
+            @RequestParam(value = "quyangdian_ids", required = false) List<String> quyangdianIds) {
+        return R.success(qushiService.listOptions(
+                trimToNull(yangpinLeixingId), trimToNull(chejianId), normalizeIds(quyangdianIds)));
+    }
+
+    @Operation(summary = "姘寸郴缁熻秼鍔垮垎鏋愭暟鎹�")
+    @PostMapping("/data")
+    public R<LimsSxtQushiDataVo> data(@RequestBody LimsSxtQushiParam param) {
+        if (param == null) {
+            return R.error("璇锋眰鍙傛暟涓嶈兘涓虹┖");
+        }
+        if (!StringUtils.hasText(param.getYangpinLeixingId())) {
+            return R.error("鏍峰搧绫诲瀷涓嶈兘涓虹┖");
+        }
+        if (!StringUtils.hasText(param.getStartDate()) || !StringUtils.hasText(param.getEndDate())) {
+            return R.error("鏃ユ湡鑼冨洿涓嶈兘涓虹┖");
+        }
+        List<String> itemIds = normalizeIds(param.getJianyanXiangmuIds());
+        if (itemIds.isEmpty()) {
+            return R.error("妫�楠岄」鐩笉鑳戒负绌�");
+        }
+
+        LocalDate startDate;
+        LocalDate endDate;
+        try {
+            startDate = LocalDate.parse(param.getStartDate().trim());
+            endDate = LocalDate.parse(param.getEndDate().trim());
+        } catch (DateTimeParseException e) {
+            return R.error("鏃ユ湡鏍煎紡涓嶆纭�");
+        }
+        if (startDate.isAfter(endDate)) {
+            return R.error("寮�濮嬫棩鏈熶笉鑳藉ぇ浜庣粨鏉熸棩鏈�");
+        }
+
+        param.setYangpinLeixingId(param.getYangpinLeixingId().trim());
+        param.setChejianId(trimToNull(param.getChejianId()));
+        param.setJianyanXiangmuIds(itemIds);
+        param.setQuyangdianIds(normalizeIds(param.getQuyangdianIds()));
+        return R.success(qushiService.listData(param, startDate, endDate));
+    }
+
+    private List<String> normalizeIds(List<String> ids) {
+        LinkedHashSet<String> result = new LinkedHashSet<>();
+        if (ids != null) {
+            for (String id : ids) {
+                if (StringUtils.hasText(id)) {
+                    result.add(id.trim());
+                }
+            }
+        }
+        return new ArrayList<>(result);
+    }
+
+    private String trimToNull(String value) {
+        return StringUtils.hasText(value) ? value.trim() : null;
+    }
+}

--
Gitblit v1.8.0