From 36341938b213361f944ae9bbe8006b2f2a775dea Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Wed, 17 Jun 2026 17:11:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E5=B7=A5=E5=8D=95=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E5=88=9B=E5=BB=BA=E4=BF=AE=E6=94=B9=20qms=E8=B4=9F?= =?UTF-8?q?=E8=B4=A3=E4=BA=BA=E5=91=98=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/QmsPrincipalController.java | 67 ++++++++ .../QmsIssueTicketControllerService.java | 18 --- .../QmsPrincipalControllerService.java | 150 ++++++++++++++++++ .../qo/QmsIssueTicketAddAndDispatchQO.java | 31 ---- .../wms/common/pojo/qo/QmsPrincipalAddQO.java | 23 +++ .../common/pojo/qo/QmsPrincipalSearchQO.java | 22 +++ .../common/pojo/qo/QmsPrincipalUpdateQO.java | 23 +++ .../wms/common/pojo/vo/QmsPrincipalVO.java | 59 +++++++ .../wms/repository/entity/QmsPrincipal.java | 58 +++++++ .../repository/mapper/QmsPrincipalMapper.java | 10 ++ .../service/IQmsPrincipalService.java | 10 ++ .../service/impl/QmsPrincipalServiceImpl.java | 15 ++ 12 files changed, 437 insertions(+), 49 deletions(-) create mode 100644 nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPrincipalController.java create mode 100644 nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPrincipalControllerService.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalAddQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalSearchQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalUpdateQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPrincipalVO.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPrincipal.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsPrincipalMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsPrincipalService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsPrincipalServiceImpl.java diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPrincipalController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPrincipalController.java new file mode 100644 index 00000000..6dfdb204 --- /dev/null +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPrincipalController.java @@ -0,0 +1,67 @@ +package com.nflg.qms.admin.controller; + +import com.nflg.qms.admin.service.QmsPrincipalControllerService; +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.qo.QmsPrincipalAddQO; +import com.nflg.wms.common.pojo.qo.QmsPrincipalSearchQO; +import com.nflg.wms.common.pojo.qo.QmsPrincipalUpdateQO; +import com.nflg.wms.common.pojo.vo.QmsPrincipalVO; +import com.nflg.wms.starter.BaseController; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * QMS负责人配置 + */ +@Validated +@RestController +@RequestMapping("/qmsPrincipal") +public class QmsPrincipalController extends BaseController { + + @Resource + private QmsPrincipalControllerService principalControllerService; + + /** + * 新增负责人配置 + */ + @PostMapping("add") + public ApiResult add(@Valid @RequestBody QmsPrincipalAddQO request) { + principalControllerService.add(request); + return ApiResult.success(); + } + + /** + * 删除负责人配置 + */ + @PostMapping("delete") + public ApiResult delete(@RequestBody @NotEmpty(message = "ID不能为空") List ids) { + principalControllerService.delete(ids); + return ApiResult.success(); + } + + /** + * 分页查询负责人配置 + */ + @PostMapping("search") + public ApiResult> search(@RequestBody QmsPrincipalSearchQO request) { + return ApiResult.success(principalControllerService.search(request)); + } + + /** + * 更新负责人配置 + */ + @PostMapping("update") + public ApiResult update(@Valid @RequestBody QmsPrincipalUpdateQO request) { + principalControllerService.update(request); + return ApiResult.success(); + } +} diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index 21810002..57799903 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -1081,20 +1081,8 @@ public class QmsIssueTicketControllerService { .throwMessage("工单标题不能为空"); VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getProjectNo())) .throwMessage("工程编号不能为空"); - VUtil.trueThrowBusinessError(request.getIncidentType() == null) - .throwMessage("事故类型不能为空"); - VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getExceptionCode())) - .throwMessage("异常代码不能为空"); - VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getImpactQuantity())) - .throwMessage("影响数量不能为空"); VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getIncidentLocation())) .throwMessage("事件地点不能为空"); - VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getIncidentDescription())) - .throwMessage("事件描述不能为空"); - VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getIncidentReason())) - .throwMessage("事件原因不能为空"); - VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getIncidentConsequence())) - .throwMessage("事件后果不能为空"); // 3. 校验图片字段完整性(如果有图片的话) if (CollectionUtil.isNotEmpty(request.getImages())) { @@ -1126,13 +1114,7 @@ public class QmsIssueTicketControllerService { .setTicketNo(ticketNo) .setTicketTitle(request.getTicketTitle()) .setProjectNo(request.getProjectNo()) - .setIncidentType(request.getIncidentType()) - .setExceptionCode(request.getExceptionCode()) - .setImpactQuantity(request.getImpactQuantity()) .setIncidentLocation(request.getIncidentLocation()) - .setIncidentDescription(request.getIncidentDescription()) - .setIncidentReason(request.getIncidentReason()) - .setIncidentConsequence(request.getIncidentConsequence()) .setImageIds(request.getImages() == null ? "" : StrUtil.join(",", request.getImages().stream().map(FileUploadVO::getId).toList()) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPrincipalControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPrincipalControllerService.java new file mode 100644 index 00000000..51f780f4 --- /dev/null +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPrincipalControllerService.java @@ -0,0 +1,150 @@ +package com.nflg.qms.admin.service; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.exception.NflgException; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.qo.QmsPrincipalAddQO; +import com.nflg.wms.common.pojo.qo.QmsPrincipalSearchQO; +import com.nflg.wms.common.pojo.qo.QmsPrincipalUpdateQO; +import com.nflg.wms.common.pojo.vo.QmsPrincipalVO; +import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.repository.entity.QmsPrincipal; +import com.nflg.wms.repository.entity.User; +import com.nflg.wms.repository.service.IQmsPrincipalService; +import com.nflg.wms.repository.service.IUserService; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * QMS负责人配置业务逻辑 + */ +@Component +public class QmsPrincipalControllerService { + + @Resource + private IQmsPrincipalService principalService; + + @Resource + private IUserService userService; + + @Transactional(rollbackFor = Exception.class) + public void add(@Valid QmsPrincipalAddQO request) { + LocalDateTime now = LocalDateTime.now(); + Long currentUserId = UserUtil.getUserId(); + + QmsPrincipal principal = new QmsPrincipal() + .setUserId(request.getUserId()) + .setQmsUserType(request.getQmsUserType()) + .setCreateBy(currentUserId) + .setCreateTime(now) + .setUpdateBy(currentUserId) + .setUpdateTime(now); + principalService.save(principal); + } + + @Transactional(rollbackFor = Exception.class) + public void delete(List ids) { + boolean removed = principalService.removeByIds(ids); + if (!removed) { + throw new NflgException(STATE.BusinessError, "数据不存在"); + } + } + + public PageData search(QmsPrincipalSearchQO request) { + List userIds = null; + if (StrUtil.isNotBlank(request.getUserName())) { + userIds = userService.lambdaQuery() + .like(User::getUserName, request.getUserName()) + .list() + .stream() + .map(User::getId) + .collect(Collectors.toList()); + if (CollectionUtil.isEmpty(userIds)) { + PageData empty = new PageData<>(); + empty.setPage(request.getPage()); + empty.setPageSize(request.getPageSize()); + return empty; + } + } + + var query = principalService.lambdaQuery() + .eq(request.getQmsUserType() != null, QmsPrincipal::getQmsUserType, request.getQmsUserType()) + .in(CollectionUtil.isNotEmpty(userIds), QmsPrincipal::getUserId, userIds) + .orderByDesc(QmsPrincipal::getCreateTime); + + Page page = query.page(new Page<>(request.getPage(), request.getPageSize())); + + Map userNameMap = buildUserNameMap(page.getRecords()); + List voList = page.getRecords().stream() + .map(entity -> { + QmsPrincipalVO vo = BeanUtil.copyProperties(entity, QmsPrincipalVO.class); + vo.setUserName(userNameMap.get(entity.getUserId())); + vo.setCreateByName(userNameMap.get(entity.getCreateBy())); + vo.setUpdateByName(userNameMap.get(entity.getUpdateBy())); + return vo; + }) + .collect(Collectors.toList()); + + PageData pageData = new PageData<>(); + pageData.setPage((int) page.getCurrent()); + pageData.setPageSize((int) page.getSize()); + pageData.setTotal((int) page.getTotal()); + pageData.setItems(voList); + return pageData; + } + + @Transactional(rollbackFor = Exception.class) + public void update(@Valid QmsPrincipalUpdateQO request) { + QmsPrincipal principal = principalService.getById(request.getId()); + if (principal == null) { + throw new NflgException(STATE.BusinessError, "数据不存在"); + } + + principalService.lambdaUpdate() + .eq(QmsPrincipal::getId, request.getId()) + .set(QmsPrincipal::getQmsUserType, request.getQmsUserType()) + .set(QmsPrincipal::getUpdateBy, UserUtil.getUserId()) + .set(QmsPrincipal::getUpdateTime, LocalDateTime.now()) + .update(); + } + + private Map buildUserNameMap(List records) { + if (CollectionUtil.isEmpty(records)) { + return Map.of(); + } + + Set userIds = new HashSet<>(); + for (QmsPrincipal record : records) { + if (record.getUserId() != null) { + userIds.add(record.getUserId()); + } + if (record.getCreateBy() != null) { + userIds.add(record.getCreateBy()); + } + if (record.getUpdateBy() != null) { + userIds.add(record.getUpdateBy()); + } + } + if (CollectionUtil.isEmpty(userIds)) { + return Map.of(); + } + + return userService.listByIds(userIds).stream() + .filter(Objects::nonNull) + .collect(Collectors.toMap(User::getId, User::getUserName, (a, b) -> a)); + } +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketAddAndDispatchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketAddAndDispatchQO.java index 9ec157e4..ec85d1d9 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketAddAndDispatchQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketAddAndDispatchQO.java @@ -24,42 +24,11 @@ public class QmsIssueTicketAddAndDispatchQO { */ private String projectNo; - /** - * 事故类型:0=一般,1=较严重,2=严重 - */ - @NotNull(message = "事故类型不能为空") - private Short incidentType; - - /** - * 异常代码 - */ - private String exceptionCode; - - /** - * 影响数量 - */ - private String impactQuantity; - /** * 事件地点 */ private String incidentLocation; - /** - * 事件描述 - */ - private String incidentDescription; - - /** - * 事件原因 - */ - private String incidentReason; - - /** - * 事件后果 - */ - private String incidentConsequence; - /** * 图片列表 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalAddQO.java new file mode 100644 index 00000000..d3a77268 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalAddQO.java @@ -0,0 +1,23 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * QMS负责人配置新增参数 + */ +@Data +public class QmsPrincipalAddQO { + + /** + * 负责人用户ID + */ + @NotNull(message = "用户ID不能为空") + private Long userId; + + /** + * QMS用户类型 + */ + @NotNull(message = "QMS用户类型不能为空") + private Integer qmsUserType; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalSearchQO.java new file mode 100644 index 00000000..2fbd8900 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalSearchQO.java @@ -0,0 +1,22 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * QMS负责人配置查询参数 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class QmsPrincipalSearchQO extends PageQO { + + /** + * 负责人姓名(可选,模糊匹配) + */ + private String userName; + + /** + * QMS用户类型(可选) + */ + private Integer qmsUserType; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalUpdateQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalUpdateQO.java new file mode 100644 index 00000000..fe8db469 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPrincipalUpdateQO.java @@ -0,0 +1,23 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * QMS负责人配置更新参数 + */ +@Data +public class QmsPrincipalUpdateQO { + + /** + * 数据ID + */ + @NotNull(message = "ID不能为空") + private Long id; + + /** + * QMS用户类型 + */ + @NotNull(message = "QMS用户类型不能为空") + private Integer qmsUserType; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPrincipalVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPrincipalVO.java new file mode 100644 index 00000000..afa03148 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPrincipalVO.java @@ -0,0 +1,59 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * QMS负责人配置返回对象 + */ +@Data +public class QmsPrincipalVO { + + private Long id; + + /** + * 负责人用户ID + */ + private Long userId; + + /** + * 负责人姓名 + */ + private String userName; + + /** + * QMS用户类型 + */ + private Integer qmsUserType; + + /** + * 创建人 + */ + private Long createBy; + + /** + * 创建人姓名 + */ + private String createByName; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 修改人 + */ + private Long updateBy; + + /** + * 修改人姓名 + */ + private String updateByName; + + /** + * 修改时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPrincipal.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPrincipal.java new file mode 100644 index 00000000..16c9024b --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPrincipal.java @@ -0,0 +1,58 @@ +package com.nflg.wms.repository.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * QMS负责人配置 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("qms_principal") +public class QmsPrincipal implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 负责人用户ID + */ + private Long userId; + + /** + * QMS用户类型 + */ + private Integer qmsUserType; + + /** + * 创建人 + */ + private Long createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 修改人 + */ + private Long updateBy; + + /** + * 修改时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsPrincipalMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsPrincipalMapper.java new file mode 100644 index 00000000..a23de7ac --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsPrincipalMapper.java @@ -0,0 +1,10 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.wms.repository.entity.QmsPrincipal; + +/** + * QMS负责人配置 Mapper 接口 + */ +public interface QmsPrincipalMapper extends BaseMapper { +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsPrincipalService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsPrincipalService.java new file mode 100644 index 00000000..3c8bd204 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsPrincipalService.java @@ -0,0 +1,10 @@ +package com.nflg.wms.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.repository.entity.QmsPrincipal; + +/** + * QMS负责人配置 服务类 + */ +public interface IQmsPrincipalService extends IService { +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsPrincipalServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsPrincipalServiceImpl.java new file mode 100644 index 00000000..4b4c3909 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsPrincipalServiceImpl.java @@ -0,0 +1,15 @@ +package com.nflg.wms.repository.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.wms.repository.entity.QmsPrincipal; +import com.nflg.wms.repository.mapper.QmsPrincipalMapper; +import com.nflg.wms.repository.service.IQmsPrincipalService; +import org.springframework.stereotype.Service; + +/** + * QMS负责人配置 服务实现类 + */ +@Service +public class QmsPrincipalServiceImpl extends ServiceImpl + implements IQmsPrincipalService { +}