From f50da3afc73bc458640677c198bb7c99de5b2fe5 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期一, 09 三月 2026 17:33:45 +0800
Subject: [PATCH] fix(mybatis): 修正createUser和updateUser填充值类型空值处理
---
src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java | 99 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 99 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java
new file mode 100644
index 0000000..74c392d
--- /dev/null
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java
@@ -0,0 +1,99 @@
+package com.ruoyi.projectManagement.service.impl.handle;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.enums.PlanStageEnum;
+import com.ruoyi.common.enums.ReviewStatusEnum;
+import com.ruoyi.common.utils.EnumUtil;
+import com.ruoyi.projectManagement.dto.PlanStageDto;
+import com.ruoyi.projectManagement.dto.SaveInfoDto;
+import com.ruoyi.projectManagement.mapper.InfoMapper;
+import com.ruoyi.projectManagement.pojo.Info;
+import com.ruoyi.projectManagement.pojo.PlanNode;
+import com.ruoyi.projectManagement.service.PlanService;
+import com.ruoyi.projectManagement.service.impl.PlanServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.validation.constraints.NotNull;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @author buhuazhen
+ * @date 2026/3/9
+ * @email 3038525872@qq.com
+ */
+@Component
+@RequiredArgsConstructor
+@Transactional(rollbackFor = Exception.class,readOnly = true)
+public class InfoHandleService {
+
+ private static final String GENERATE_SERIAL_NUMBER_PREFIX = "XM";
+
+ private final InfoMapper infoMapper;
+
+ private final PlanService planService;
+
+ @Transactional(rollbackFor = Exception.class)
+ public Long save(@NotNull SaveInfoDto saveInfoDto){
+ Info info = BeanUtil.copyProperties(saveInfoDto, Info.class);
+
+ // 闄勪欢鐗规畩澶勭悊
+ String attachmentIds = StrUtil.join(",", Optional.ofNullable(saveInfoDto.getAttachmentIds()).orElse(Collections.emptyList()));
+ info.setAttachment(attachmentIds);
+
+ // 鐢熸垚搴忓彿 (濡傛灉闇�瑕佽嚜鍔ㄧ敓鎴愮殑璇�)
+ if(StrUtil.isBlank(info.getNo())){
+ info.setNo(generateSerialNumber());
+ }
+ info.setTeam(saveInfoDto.getTeamList());
+ if(info.getId() == null){
+ // 鐢熸垚瀵瑰簲鐨勯樁娈靛叧绯绘暟鎹�
+ info.setPlanStage(getPlanStageList(info.getProjectManagementPlanId()));
+ // 鎻掑叆榛樿鐘舵��
+ info.setStatus(PlanStageEnum.TO_BEGIN.getCode());
+ info.setReviewStatus(ReviewStatusEnum.PENDING_REVIEW.getCode());
+ infoMapper.insert(info);
+ }else {
+ infoMapper.updateById(info);
+ }
+ return info.getId();
+ }
+
+
+ private List<PlanStageDto> getPlanStageList(@NotNull Long planId) {
+ List<PlanNode> planNodeByPlanId = planService.getPlanNodeByPlanId(planId);
+ return planNodeByPlanId.stream().map(it-> new PlanStageDto(it.getId(), it.getName(), PlanStageEnum.TO_BEGIN)).collect(Collectors.toList());
+ }
+
+
+ /**
+ * 鐢熸垚椤圭洰缂栧彿
+ * @return
+ */
+ private String generateSerialNumber() {
+ // 鑾峰彇褰撳墠鏃ユ湡
+ String date = DateUtil.format(DateUtil.date(), "yyyyMMdd");
+
+ // 鏌ヨ浠婂ぉ宸茬粡鐢熸垚鐨勬暟閲�
+ LambdaQueryWrapper<Info> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.likeRight(Info::getNo, GENERATE_SERIAL_NUMBER_PREFIX + date);
+
+ Long count = infoMapper.selectCount(queryWrapper);
+
+ // 搴忓彿 +1
+ Long serial = count + 1;
+
+ // 3浣嶈ˉ0
+ String serialStr = String.format("%03d", serial);
+
+ return GENERATE_SERIAL_NUMBER_PREFIX + date + serialStr;
+ }
+
+}
--
Gitblit v1.9.3