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

diff --git a/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsWendingxingKaocaJihuaController.java b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsWendingxingKaocaJihuaController.java
new file mode 100644
index 0000000..21c3c8a
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsWendingxingKaocaJihuaController.java
@@ -0,0 +1,105 @@
+package jnpf.limsController;
+
+import cn.dev33.satoken.annotation.SaCheckLogin;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jnpf.exception.DataException;
+import jnpf.flowable.WorkFlowApi;
+import jnpf.flowable.entity.TaskEntity;
+import jnpf.limsEntity.LimsSxtFlowEventParam;
+import jnpf.limsService.LimsWendingxingKaocaJihuaZhouqiService;
+import jnpf.limsService.LimsWendingxingXiaohuiShenqingService;
+import jnpf.util.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+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.RestController;
+
+import java.util.Map;
+
+@Slf4j
+@Tag(name = "lims绋冲畾鎬ц�冨療璁″垝鎺ュ彛", description = "绋冲畾鎬ц�冨療璁″垝鍛ㄦ湡鍙樻洿")
+@RestController
+@SaCheckLogin
+@RequestMapping("/lims/biz/wendingxing/kaoca/jihua")
+public class LimsWendingxingKaocaJihuaController {
+
+    @Autowired
+    private LimsWendingxingKaocaJihuaZhouqiService zhouqiService;
+    @Autowired
+    private LimsWendingxingXiaohuiShenqingService xiaohuiService;
+    @Autowired
+    private WorkFlowApi workFlowApi;
+
+    @Operation(summary = "鍚屾绋冲畾鎬ц�冨療璁″垝鍙樻洿鍛ㄦ湡")
+    @PostMapping("/biangeng/zhouqi/tongbu")
+    public R<Integer> syncBiangengZhouqi(@RequestBody Map<String, String> params) {
+        String flowId = params == null ? null : params.get("flow_id");
+        String flowTaskId = params == null ? null : params.get("flow_task_id");
+        if (!StringUtils.hasText(flowId)) {
+            return R.error("娴佺▼ID(flow_id)涓嶈兘涓虹┖");
+        }
+        if (!StringUtils.hasText(flowTaskId)) {
+            return R.error("娴佺▼浠诲姟ID(flow_task_id)涓嶈兘涓虹┖");
+        }
+        int count = zhouqiService.syncByFlow(flowId.trim(), flowTaskId.trim());
+        return R.success("鍚屾鎴愬姛", count);
+    }
+
+    @Operation(summary = "鍚屾绋冲畾鎬ч攢姣佺敵璇锋祦绋嬪彂璧风姸鎬�")
+    @PostMapping("/xiaohui/shenqing/flow-status/start")
+    public R<Object> syncXiaohuiFlowStarted(@RequestBody LimsSxtFlowEventParam param) {
+        String validationMessage = validateFlowEventParam(param);
+        if (validationMessage != null) {
+            return R.error(validationMessage);
+        }
+        try {
+            xiaohuiService.syncFlowStarted(param.getFlowId(), param.getTaskId());
+            return R.success();
+        } catch (DataException e) {
+            log.warn("绋冲畾鎬ч攢姣佺敵璇锋祦绋嬪彂璧风姸鎬佸悓姝ュけ璐ワ紝flowId={}, taskId={}",
+                    param.getFlowId(), param.getTaskId(), e);
+            return R.error(e.getMessage());
+        }
+    }
+
+    @Operation(summary = "鍚屾绋冲畾鎬ч攢姣佺敵璇锋祦绋嬬粨鏉熺姸鎬�")
+    @PostMapping("/xiaohui/shenqing/flow-status/end")
+    public R<Object> syncXiaohuiFlowEnded(@RequestBody LimsSxtFlowEventParam param) {
+        String validationMessage = validateFlowEventParam(param);
+        if (validationMessage != null) {
+            return R.error(validationMessage);
+        }
+        TaskEntity task = workFlowApi.getInfoSubmit(param.getTaskId());
+        if (task == null) {
+            return R.error("鏈壘鍒版祦绋嬩换鍔★細" + param.getTaskId());
+        }
+        if (!param.getTaskId().equals(task.getId())) {
+            return R.error("娴佺▼浠诲姟涓庝紶鍏ヤ换鍔D涓嶅尮閰�");
+        }
+        try {
+            xiaohuiService.syncFlowEnded(param.getFlowId(), param.getTaskId(), task.getStatus());
+            return R.success();
+        } catch (DataException e) {
+            log.warn("绋冲畾鎬ч攢姣佺敵璇锋祦绋嬬粨鏉熺姸鎬佸悓姝ュけ璐ワ紝flowId={}, taskId={}, status={}",
+                    param.getFlowId(), param.getTaskId(), task.getStatus(), e);
+            return R.error(e.getMessage());
+        }
+    }
+
+    private String validateFlowEventParam(LimsSxtFlowEventParam param) {
+        if (param == null) {
+            return "璇锋眰鍙傛暟涓嶈兘涓虹┖";
+        }
+        if (!StringUtils.hasText(param.getFlowId())) {
+            return "娴佺▼id(flow_id)涓嶈兘涓虹┖";
+        }
+        if (!StringUtils.hasText(param.getTaskId())) {
+            return "娴佺▼浠诲姟id(task_id)涓嶈兘涓虹┖";
+        }
+        return null;
+    }
+}

--
Gitblit v1.8.0