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-biz/src/main/java/jnpf/limsService/impl/LimsSxtKanbanServiceImpl.java | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 151 insertions(+), 0 deletions(-)
diff --git a/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsSxtKanbanServiceImpl.java b/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsSxtKanbanServiceImpl.java
new file mode 100644
index 0000000..e042186
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsSxtKanbanServiceImpl.java
@@ -0,0 +1,151 @@
+package jnpf.limsService.impl;
+
+import jnpf.audit.sdk.annotation.AuditLog;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import jnpf.base.UserInfo;
+import jnpf.limsEntity.LimsSxtKanbanItemVo;
+import jnpf.limsEntity.LimsSxtKanbanOptionsVo;
+import jnpf.limsEntity.LimsSxtKanbanRowVo;
+import jnpf.limsEntity.LimsSxtQuyangJihuaRenwuEntity;
+import jnpf.limsMapper.LimsSxtKanbanMapper;
+import jnpf.limsMapper.LimsSxtQuyangJihuaRenwuMapper;
+import jnpf.limsService.LimsSxtKanbanService;
+import jnpf.limsService.LimsSxtQuyangJihuaRenwuService;
+import jnpf.limsService.support.LimsSxtQuyangJihuaRenwuStatus;
+import jnpf.util.UserProvider;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 姘寸郴缁熻鍒掔湅鏉胯璇诲彇褰撳墠鏈夋晥鐐逛綅锛屾棩鍘嗛」璇诲彇 Renwu 鍘嗗彶蹇収銆�
+ */
+@Service
+public class LimsSxtKanbanServiceImpl implements LimsSxtKanbanService {
+
+ @Autowired
+ private LimsSxtKanbanMapper kanbanMapper;
+ @Autowired
+ private LimsSxtQuyangJihuaRenwuMapper renwuMapper;
+ @Autowired
+ private LimsSxtQuyangJihuaRenwuService renwuService;
+
+ @Override
+ public LimsSxtKanbanOptionsVo listKanbanOptions(String yangpinLeixing, String suoshuChejian,
+ String quyangDidian) {
+ String tenantId = dangqianZuhuId();
+ LimsSxtKanbanOptionsVo result = new LimsSxtKanbanOptionsVo();
+ result.setYangpinLeixingList(kanbanMapper.selectSampleTypes(tenantId));
+ if (!StringUtils.hasText(yangpinLeixing)) {
+ return result;
+ }
+ result.setChejianList(kanbanMapper.selectWorkshops(tenantId, yangpinLeixing));
+ if (!StringUtils.hasText(suoshuChejian)) {
+ return result;
+ }
+ result.setQuyangDidianList(kanbanMapper.selectPlaces(tenantId, yangpinLeixing, suoshuChejian));
+ if (!StringUtils.hasText(quyangDidian)) {
+ return result;
+ }
+ result.setQuyangdianList(kanbanMapper.selectPoints(
+ tenantId, yangpinLeixing, suoshuChejian, quyangDidian));
+ return result;
+ }
+
+ @Override
+ public List<LimsSxtKanbanRowVo> listKanbanRows(String yangpinLeixing, String suoshuChejian,
+ String quyangDidian, String quyangdianBianhao) {
+ return kanbanMapper.selectRows(dangqianZuhuId(), yangpinLeixing, suoshuChejian,
+ quyangDidian, quyangdianBianhao);
+ }
+
+ @Override
+ public List<LimsSxtKanbanItemVo> listKanbanItems(LocalDate kaishiRiqi, LocalDate jieshuRiqi,
+ String yangpinLeixing, String suoshuChejian,
+ String quyangDidian, String quyangdianBianhao) {
+ if (kaishiRiqi == null || jieshuRiqi == null || kaishiRiqi.isAfter(jieshuRiqi)) {
+ throw new jnpf.exception.DataException("鏃ユ湡鑼冨洿涓嶆纭�");
+ }
+ List<LimsSxtKanbanItemVo> result = new ArrayList<>();
+ for (LimsSxtQuyangJihuaRenwuEntity renwu : chaxunRenwu(
+ kaishiRiqi, jieshuRiqi, yangpinLeixing, suoshuChejian, quyangDidian, quyangdianBianhao)) {
+ result.add(toItem(renwu));
+ }
+ return result;
+ }
+
+ @Override
+ @AuditLog(action = "DELETE", label = "鍙栨秷姘寸郴缁熸湭鏉ヨ鍒掍换鍔�", bizType = "SXT",
+ bizCodeExpr = "#renwuId", bizCodeRequired = false,
+ targetTable = "lims_sxt_quyang_jihua_renwu", targetIdExpr = "#renwuId",
+ diff = true, entityClass = LimsSxtQuyangJihuaRenwuEntity.class)
+ public void quxiaoWeilaiRenwu(String renwuId) {
+ renwuService.quxiaoWeishengchengWeilaiRenwu(renwuId, dangqianZuhuId(), "manual_cancelled");
+ }
+
+ private List<LimsSxtQuyangJihuaRenwuEntity> chaxunRenwu(LocalDate kaishiRiqi, LocalDate jieshuRiqi,
+ String yangpinLeixing, String suoshuChejian,
+ String quyangDidian, String quyangdianBianhao) {
+ QueryWrapper<LimsSxtQuyangJihuaRenwuEntity> query = new QueryWrapper<>();
+ query.eq("f_tenant_id", dangqianZuhuId()).eq("f_delete_mark", 0)
+ .ge(kaishiRiqi != null, "jihua_riqi", kaishiRiqi)
+ .le(jieshuRiqi != null, "jihua_riqi", jieshuRiqi)
+ .eq(StringUtils.hasText(yangpinLeixing), "yangpin_leixing", yangpinLeixing)
+ .eq(StringUtils.hasText(suoshuChejian), "suoshu_chejian_id", suoshuChejian)
+ .eq(StringUtils.hasText(quyangDidian), "quyang_didian", quyangDidian)
+ .eq(StringUtils.hasText(quyangdianBianhao), "quyangdian_bianhao", quyangdianBianhao)
+ .notIn("renwu_zhuangtai", LimsSxtQuyangJihuaRenwuStatus.CANCELLED,
+ LimsSxtQuyangJihuaRenwuStatus.INVALIDATED)
+ .orderByAsc("yangpin_leixing", "suoshu_chejian", "quyang_didian", "quyangdian_bianhao", "jihua_riqi");
+ return renwuMapper.selectList(query);
+ }
+
+ private LimsSxtKanbanRowVo toRow(LimsSxtQuyangJihuaRenwuEntity renwu) {
+ LimsSxtKanbanRowVo row = new LimsSxtKanbanRowVo();
+ row.setQuyangdianId(renwu.getQuyangdianId());
+ row.setYangpinLeixing(renwu.getYangpinLeixing());
+ row.setYangpinLeixingMingcheng(renwu.getYangpinLeixingMingcheng());
+ row.setSuoshuChejian(renwu.getSuoshuChejian());
+ row.setQuyangDidian(renwu.getQuyangDidian());
+ row.setQuyangdianBianhao(renwu.getQuyangdianBianhao());
+ return row;
+ }
+
+ private LimsSxtKanbanItemVo toItem(LimsSxtQuyangJihuaRenwuEntity renwu) {
+ LimsSxtKanbanItemVo item = new LimsSxtKanbanItemVo();
+ BeanUtils.copyProperties(toRow(renwu), item);
+ item.setRenwuId(renwu.getId());
+ item.setJihuaId(renwu.getJihuaId());
+ item.setJihuaMingcheng(renwu.getJihuaMingcheng());
+ item.setJihuaRiqi(renwu.getJihuaRiqi());
+ item.setRenwuZhuangtai(renwu.getRenwuZhuangtai());
+ item.setRenwuZhuangtaiYuanyinDaima(renwu.getRenwuZhuangtaiYuanyinDaima());
+ item.setRenwuZhuangtaiYuanyin(renwu.getRenwuZhuangtaiYuanyin());
+ item.setJianyanXiangmu(renwu.getJianyanXiangmu());
+ item.setJianyanXiangmuMingcheng(renwu.getJianyanXiangmuMingcheng());
+ item.setQingyandanId(renwu.getQingyandanId());
+ item.setQingyandanLiushuihao(renwu.getQingyandanLiushuihao());
+ item.setQingyandanZhuangtai(renwu.getQingyandanZhuangtai());
+ item.setCanDelete(isKeQuxiao(renwu));
+ return item;
+ }
+
+ private boolean isKeQuxiao(LimsSxtQuyangJihuaRenwuEntity renwu) {
+ LocalDate jihuaRiqi = renwu.getJihuaRiqi().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ return jihuaRiqi.isAfter(LocalDate.now()) && !StringUtils.hasText(renwu.getQingyandanId())
+ && (LimsSxtQuyangJihuaRenwuStatus.PENDING.equals(renwu.getRenwuZhuangtai())
+ || LimsSxtQuyangJihuaRenwuStatus.BLOCKED_CONFIG_INVALID.equals(renwu.getRenwuZhuangtai()));
+ }
+
+ private String dangqianZuhuId() {
+ UserInfo user = UserProvider.getUser();
+ return user == null || !StringUtils.hasText(user.getTenantId()) ? "0" : user.getTenantId();
+ }
+}
--
Gitblit v1.8.0