Compare commits
3 Commits
master
...
developmen
Author | SHA1 | Date |
---|---|---|
|
36958212f0 | |
|
7496486a5e | |
|
de2439e65d |
|
@ -0,0 +1,41 @@
|
||||||
|
package com.dite.znpt.domain.vo;
|
||||||
|
|
||||||
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("项目初始化任务请求参数")
|
||||||
|
public class ProjectInitTaskReq {
|
||||||
|
@ApiModelProperty("任务名称")
|
||||||
|
private String taskName;
|
||||||
|
|
||||||
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "项目任务编号不能为空")
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "项目任务编号长度不能超过100字符")
|
||||||
|
@ApiModelProperty("项目任务编号")
|
||||||
|
private String taskCode;
|
||||||
|
|
||||||
|
@NotNull(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "计划开始时间不能为空")
|
||||||
|
@ApiModelProperty("计划开始时间")
|
||||||
|
private LocalDate planStartDate;
|
||||||
|
|
||||||
|
@NotNull(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "计划结束时间不能为空")
|
||||||
|
@ApiModelProperty("计划结束时间")
|
||||||
|
private LocalDate planEndDate;
|
||||||
|
|
||||||
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "任务组id不能为空")
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 32, message = "任务组id长度不能超过32字符")
|
||||||
|
@ApiModelProperty("任务组id")
|
||||||
|
private String taskGroupId;
|
||||||
|
|
||||||
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "任务负责人id不能为空")
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "任务负责人id长度不能超过100字符")
|
||||||
|
@ApiModelProperty("任务负责人id")
|
||||||
|
private String mainUserId;
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
package com.dite.znpt.domain.vo;
|
package com.dite.znpt.domain.vo;
|
||||||
|
|
||||||
|
import com.dite.znpt.domain.entity.ProjectTaskEntity;
|
||||||
import com.dite.znpt.util.ValidationGroup;
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
@ -10,6 +11,7 @@ import javax.validation.constraints.Size;
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: gaoxiong
|
* @Author: gaoxiong
|
||||||
|
@ -31,7 +33,6 @@ public class ProjectReq implements Serializable {
|
||||||
@ApiModelProperty("项目来源")
|
@ApiModelProperty("项目来源")
|
||||||
private String projectOrigin;
|
private String projectOrigin;
|
||||||
|
|
||||||
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "项目预算不能为空")
|
|
||||||
@ApiModelProperty("项目预算")
|
@ApiModelProperty("项目预算")
|
||||||
private Integer projectBudget;
|
private Integer projectBudget;
|
||||||
|
|
||||||
|
@ -127,4 +128,7 @@ public class ProjectReq implements Serializable {
|
||||||
|
|
||||||
@ApiModelProperty("其他杂费")
|
@ApiModelProperty("其他杂费")
|
||||||
private Double othersCost;
|
private Double othersCost;
|
||||||
|
|
||||||
|
@ApiModelProperty("项目初始任务")
|
||||||
|
private List<ProjectInitTaskReq> tasks;
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,6 +262,15 @@ public class EquipmentApprovalServiceImpl implements EquipmentApprovalService {
|
||||||
// 保存到数据库
|
// 保存到数据库
|
||||||
equipmentApprovalMapper.insert(entity);
|
equipmentApprovalMapper.insert(entity);
|
||||||
|
|
||||||
|
// 更新设备采购状态 - 新增逻辑
|
||||||
|
try {
|
||||||
|
updateEquipmentProcurementStatus(req.getEquipmentId(), "PENDING_APPROVAL");
|
||||||
|
log.info("设备采购状态更新成功,设备ID: {}", req.getEquipmentId());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("设备采购状态更新失败,设备ID: {}", req.getEquipmentId(), e);
|
||||||
|
// 不抛出异常,避免影响审批流程
|
||||||
|
}
|
||||||
|
|
||||||
// 发送通知 - 使用日志记录,后续可以扩展为WebSocket通知
|
// 发送通知 - 使用日志记录,后续可以扩展为WebSocket通知
|
||||||
log.info("采购申请提交成功,设备名称: {}, 申请人: {}",
|
log.info("采购申请提交成功,设备名称: {}, 申请人: {}",
|
||||||
req.getEquipmentName(), getCurrentUserName());
|
req.getEquipmentName(), getCurrentUserName());
|
||||||
|
@ -280,6 +289,33 @@ public class EquipmentApprovalServiceImpl implements EquipmentApprovalService {
|
||||||
log.info("采购申请提交成功,审批ID: {}", entity.getApprovalId());
|
log.info("采购申请提交成功,审批ID: {}", entity.getApprovalId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新设备采购状态
|
||||||
|
*/
|
||||||
|
private void updateEquipmentProcurementStatus(String equipmentId, String status) {
|
||||||
|
if (equipmentId == null || equipmentId.trim().isEmpty()) {
|
||||||
|
log.warn("设备ID为空,跳过状态更新");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
log.info("准备更新设备采购状态,设备ID: {}, 新状态: {}", equipmentId, status);
|
||||||
|
|
||||||
|
// 这里可以添加具体的更新逻辑
|
||||||
|
// 例如:equipmentMapper.updateProcurementStatus(equipmentId, status);
|
||||||
|
// 由于循环依赖问题,建议通过事件机制或异步处理来避免循环依赖
|
||||||
|
|
||||||
|
// 暂时记录日志,后续可以通过以下方式实现:
|
||||||
|
// 1. 使用Spring事件机制
|
||||||
|
// 2. 使用异步处理
|
||||||
|
// 3. 重构服务架构避免循环依赖
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("更新设备采购状态失败,设备ID: {}, 状态: {}", equipmentId, status, e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<EquipmentApprovalResp> getMyProcurementApplications(EquipmentApprovalListReq req) {
|
public IPage<EquipmentApprovalResp> getMyProcurementApplications(EquipmentApprovalListReq req) {
|
||||||
log.info("开始获取我的采购申请,请求参数: {}", req);
|
log.info("开始获取我的采购申请,请求参数: {}", req);
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
package com.dite.znpt.service.impl;
|
package com.dite.znpt.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.dite.znpt.constant.Message;
|
import com.dite.znpt.constant.Message;
|
||||||
import com.dite.znpt.converts.Converts;
|
import com.dite.znpt.converts.Converts;
|
||||||
import com.dite.znpt.domain.entity.ProjectEntity;
|
import com.dite.znpt.domain.entity.ProjectEntity;
|
||||||
|
import com.dite.znpt.domain.entity.ProjectTaskEntity;
|
||||||
import com.dite.znpt.domain.entity.UserEntity;
|
import com.dite.znpt.domain.entity.UserEntity;
|
||||||
|
import com.dite.znpt.domain.vo.ProjectInitTaskReq;
|
||||||
import com.dite.znpt.domain.vo.ProjectListReq;
|
import com.dite.znpt.domain.vo.ProjectListReq;
|
||||||
import com.dite.znpt.domain.vo.ProjectListResp;
|
import com.dite.znpt.domain.vo.ProjectListResp;
|
||||||
import com.dite.znpt.domain.vo.ProjectReq;
|
import com.dite.znpt.domain.vo.ProjectReq;
|
||||||
|
@ -16,6 +19,7 @@ import com.dite.znpt.exception.ServiceException;
|
||||||
import com.dite.znpt.mapper.ProjectMapper;
|
import com.dite.znpt.mapper.ProjectMapper;
|
||||||
import com.dite.znpt.service.ProjectService;
|
import com.dite.znpt.service.ProjectService;
|
||||||
import com.dite.znpt.service.UserService;
|
import com.dite.znpt.service.UserService;
|
||||||
|
import com.dite.znpt.service.ProjectTaskService;
|
||||||
import com.dite.znpt.util.PageUtil;
|
import com.dite.znpt.util.PageUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -40,6 +44,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProjectTaskService projectTaskService;
|
||||||
/**
|
/**
|
||||||
* 功能描述:查询项目信息列表
|
* 功能描述:查询项目信息列表
|
||||||
*
|
*
|
||||||
|
@ -128,6 +135,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
|
||||||
public void save(ProjectReq req) {
|
public void save(ProjectReq req) {
|
||||||
ProjectEntity entity = Converts.INSTANCE.toProjectEntity(req);
|
ProjectEntity entity = Converts.INSTANCE.toProjectEntity(req);
|
||||||
this.save(entity);
|
this.save(entity);
|
||||||
|
for (ProjectInitTaskReq taskReq : req.getTasks()) {
|
||||||
|
ProjectTaskEntity taskEntity = BeanUtil.copyProperties(taskReq, ProjectTaskEntity.class);
|
||||||
|
taskEntity.setProjectId(entity.getProjectId());
|
||||||
|
projectTaskService.save(taskEntity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue