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-dms/jnpf-dms-biz/src/main/java/jnpf/dmsService/impl/DmsDanganCundangJieshouServiceImpl.java | 147 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 147 insertions(+), 0 deletions(-)
diff --git a/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsService/impl/DmsDanganCundangJieshouServiceImpl.java b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsService/impl/DmsDanganCundangJieshouServiceImpl.java
new file mode 100644
index 0000000..aaccfb2
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsService/impl/DmsDanganCundangJieshouServiceImpl.java
@@ -0,0 +1,147 @@
+package jnpf.dmsService.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import jnpf.dmsEntity.DmsDanganCundangShenqingEntity;
+import jnpf.dmsEntity.DmsDanganCundangShenqingDanganheEntity;
+import jnpf.dmsEntity.form.DmsDanganCundangJieshouDanganheForm;
+import jnpf.dmsEntity.form.DmsDanganCundangJieshouForm;
+import jnpf.dmsMapper.DmsDanganCundangShenqingDanganheMapper;
+import jnpf.dmsMapper.DmsDanganCundangShenqingMapper;
+import jnpf.dmsService.DmsDanganCundangJieshouService;
+import jnpf.exception.DataException;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+@Service
+@RequiredArgsConstructor
+public class DmsDanganCundangJieshouServiceImpl implements DmsDanganCundangJieshouService {
+
+ private final DmsDanganCundangShenqingDanganheMapper danganheMapper;
+ private final DmsDanganCundangShenqingMapper shenqingMapper;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void jieshou(DmsDanganCundangJieshouForm form) throws DataException {
+ if (form == null) {
+ throw new DataException("妗f瀛樻。鎺ユ敹鍙傛暟涓嶈兘涓虹┖");
+ }
+ Set<String> danganheIds = resolveDanganheIds(form.getDanganheXinxi());
+ String jieshouRen = requireValue(form.getBizUserId(), "鎺ユ敹浜�(biz_user_id)");
+ String yijiaoRen = requireValue(form.getBizReviewUser(), "绉讳氦浜�(biz_review_user)");
+ String bizSign = requireValue(form.getBizSign(), "鎺ユ敹绛惧悕(biz_sign)");
+ String bizReviewSign = requireValue(form.getBizReviewSign(), "绉讳氦绛惧悕(biz_review_sign)");
+
+ LambdaQueryWrapper<DmsDanganCundangShenqingDanganheEntity> existingQuery = new LambdaQueryWrapper<>();
+ existingQuery.in(DmsDanganCundangShenqingDanganheEntity::getId, danganheIds)
+ .isNull(DmsDanganCundangShenqingDanganheEntity::getDeleteMark);
+ List<DmsDanganCundangShenqingDanganheEntity> danganheList = danganheMapper.selectList(existingQuery);
+ if (danganheList.size() != danganheIds.size()) {
+ throw new DataException("瀛樺湪鏈壘鍒版垨宸插垹闄ょ殑妗f鐩掕褰曪紝鏃犳硶鎺ユ敹");
+ }
+ for (DmsDanganCundangShenqingDanganheEntity danganhe : danganheList) {
+ if (!trimToEmpty(danganhe.getJieshouRen()).isEmpty()) {
+ throw new DataException("妗f鐩掑凡鎺ユ敹锛屼笉鑳介噸澶嶆帴鏀�");
+ }
+ }
+
+ Date receivedAt = new Date();
+ LambdaUpdateWrapper<DmsDanganCundangShenqingDanganheEntity> update = new LambdaUpdateWrapper<>();
+ update.in(DmsDanganCundangShenqingDanganheEntity::getId, danganheIds)
+ .isNull(DmsDanganCundangShenqingDanganheEntity::getDeleteMark)
+ .and(wrapper -> wrapper.isNull(DmsDanganCundangShenqingDanganheEntity::getJieshouRen)
+ .or()
+ .eq(DmsDanganCundangShenqingDanganheEntity::getJieshouRen, ""))
+ .set(DmsDanganCundangShenqingDanganheEntity::getJieshouRen, jieshouRen)
+ .set(DmsDanganCundangShenqingDanganheEntity::getYijiaoRen, yijiaoRen)
+ .set(DmsDanganCundangShenqingDanganheEntity::getBizSign, bizSign)
+ .set(DmsDanganCundangShenqingDanganheEntity::getBizReviewSign, bizReviewSign)
+ .set(DmsDanganCundangShenqingDanganheEntity::getJieshouRiqi, receivedAt);
+ if (danganheMapper.update(null, update) != danganheIds.size()) {
+ throw new DataException("妗f鐩掑凡鎺ユ敹锛屼笉鑳介噸澶嶆帴鏀�");
+ }
+ }
+
+ @Override
+ @Transactional(readOnly = true)
+ public DmsDanganCundangShenqingDanganheEntity check(String danganheBianhao) throws DataException {
+ String queryValue = requireValue(danganheBianhao, "妗f鐩掔紪鍙�(danganhe_bianhao)");
+ LambdaQueryWrapper<DmsDanganCundangShenqingDanganheEntity> danganheQuery = new LambdaQueryWrapper<>();
+ danganheQuery.and(wrapper -> wrapper
+ .eq(DmsDanganCundangShenqingDanganheEntity::getDanganheBianhao, queryValue)
+ .or()
+ .eq(DmsDanganCundangShenqingDanganheEntity::getId, queryValue))
+ .isNull(DmsDanganCundangShenqingDanganheEntity::getDeleteMark);
+ List<DmsDanganCundangShenqingDanganheEntity> danganheList = danganheMapper.selectList(danganheQuery);
+ if (danganheList.isEmpty()) {
+ throw new DataException("鏈壘鍒板搴旂殑妗f鐩掕褰�");
+ }
+ if (danganheList.size() > 1) {
+ throw new DataException("妗f鐩掔紪鍙峰搴斿鏉¤褰曪紝璇蜂娇鐢ㄦ。妗堢洅ID鏍¢獙");
+ }
+
+ DmsDanganCundangShenqingDanganheEntity danganhe = danganheList.get(0);
+ String shenqingId = trimToEmpty(danganhe.getForeignId());
+ if (shenqingId.isEmpty()) {
+ throw new DataException("妗f鐩掓湭鍏宠仈瀛樻。鐢宠锛屾棤娉曟帴鏀�");
+ }
+ LambdaQueryWrapper<DmsDanganCundangShenqingEntity> shenqingQuery = new LambdaQueryWrapper<>();
+ shenqingQuery.eq(DmsDanganCundangShenqingEntity::getId, shenqingId)
+ .isNull(DmsDanganCundangShenqingEntity::getDeleteMark);
+ DmsDanganCundangShenqingEntity shenqing = shenqingMapper.selectOne(shenqingQuery);
+ if (shenqing == null) {
+ throw new DataException("鏈壘鍒版。妗堢洅鍏宠仈鐨勫瓨妗g敵璇�");
+ }
+ if (!Integer.valueOf(2).equals(shenqing.getFlowState())) {
+ throw new DataException("妗f瀛樻。鐢宠灏氭湭瀹℃壒閫氳繃锛屾棤娉曟帴鏀�");
+ }
+ if (!trimToEmpty(danganhe.getJieshouRen()).isEmpty()) {
+ throw new DataException("妗f鐩掑凡鎺ユ敹锛屼笉鑳介噸澶嶆帴鏀�");
+ }
+ return danganhe;
+ }
+
+ private Set<String> resolveDanganheIds(List<DmsDanganCundangJieshouDanganheForm> danganheXinxi)
+ throws DataException {
+ if (danganheXinxi == null || danganheXinxi.isEmpty()) {
+ throw new DataException("妗f鐩掍俊鎭�(danganhe_xinxi)涓嶈兘涓虹┖");
+ }
+ Set<String> ids = new LinkedHashSet<>();
+ for (DmsDanganCundangJieshouDanganheForm danganhe : danganheXinxi) {
+ if (danganhe == null) {
+ throw new DataException("妗f鐩掍俊鎭腑涓嶈兘鍖呭惈绌鸿褰�");
+ }
+ String id = trimToEmpty(danganhe.getId());
+ String fId = trimToEmpty(danganhe.getFId());
+ if (id.isEmpty() && fId.isEmpty()) {
+ throw new DataException("妗f鐩掕褰曠殑id鎴杅_id涓嶈兘涓虹┖");
+ }
+ if (!id.isEmpty() && !fId.isEmpty() && !id.equals(fId)) {
+ throw new DataException("妗f鐩掕褰曠殑id涓巉_id涓嶄竴鑷�");
+ }
+ ids.add(id.isEmpty() ? fId : id);
+ }
+ if (ids.size() != danganheXinxi.size()) {
+ throw new DataException("妗f鐩掍俊鎭腑涓嶈兘鍖呭惈閲嶅璁板綍");
+ }
+ return ids;
+ }
+
+ private String requireValue(String value, String fieldName) throws DataException {
+ String resolved = trimToEmpty(value);
+ if (resolved.isEmpty()) {
+ throw new DataException(fieldName + "涓嶈兘涓虹┖");
+ }
+ return resolved;
+ }
+
+ private String trimToEmpty(String value) {
+ return value == null ? "" : value.trim();
+ }
+}
--
Gitblit v1.8.0