修改质检人员管理功能
This commit is contained in:
parent
486f17278f
commit
8448a11c05
|
|
@ -75,7 +75,7 @@ public class QmsQualityInspectorController extends BaseController {
|
||||||
/**
|
/**
|
||||||
* 按员工ID查询质检人员详情(物料和物料类别分开返回,不分页)
|
* 按员工ID查询质检人员详情(物料和物料类别分开返回,不分页)
|
||||||
*
|
*
|
||||||
* @param userId 员工ID
|
* @param userId 员工ID(user.id)
|
||||||
*/
|
*/
|
||||||
@GetMapping("detail")
|
@GetMapping("detail")
|
||||||
public ApiResult<QmsQualityInspectorDetailVO> detail(@NotNull Long userId) {
|
public ApiResult<QmsQualityInspectorDetailVO> detail(@NotNull Long userId) {
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,11 @@ public class QmsQualityInspectorCategoryVO {
|
||||||
*/
|
*/
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料类别ID(qms_qc_material_category.id)
|
||||||
|
*/
|
||||||
|
private Long materialCategoryId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料类别编码
|
* 物料类别编码
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ public class QmsQualityInspectorMaterialVO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关联记录ID(qms_inspector_material_item.id)
|
* 关联记录ID(qms_inspector_material_item.id)
|
||||||
|
.id)
|
||||||
*/
|
*/
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,4 +54,14 @@ public interface QmsQualityInspectorMapper extends BaseMapper<QmsQualityInspecto
|
||||||
* 按 userId 查询关联物料类别列表
|
* 按 userId 查询关联物料类别列表
|
||||||
*/
|
*/
|
||||||
List<QmsQualityInspectorCategoryVO> getCategoriesByUserId(@Param("userId") Long userId);
|
List<QmsQualityInspectorCategoryVO> getCategoriesByUserId(@Param("userId") Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按 userId(明细表 inspector_id 存的是 user.id)查询关联物料列表
|
||||||
|
*/
|
||||||
|
List<QmsQualityInspectorMaterialVO> getMaterialsByInspectorId(@Param("inspectorId") Long inspectorId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按 userId(明细表 inspector_id 存的是 user.id)查询关联物料类别列表
|
||||||
|
*/
|
||||||
|
List<QmsQualityInspectorCategoryVO> getCategoriesByInspectorId(@Param("inspectorId") Long inspectorId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ public interface IQmsQualityInspectorService extends IService<QmsQualityInspecto
|
||||||
IPage<QmsQualityInspectorVO> search(QmsQualityInspectorSearchQO request);
|
IPage<QmsQualityInspectorVO> search(QmsQualityInspectorSearchQO request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按员工ID查询质检人员详情,将物料和物料类别分开返回(不分页)
|
* 按员工ID(user_id)查询质检人员详情,物料和物料类别分开返回(不分页)
|
||||||
*/
|
*/
|
||||||
QmsQualityInspectorDetailVO getDetailByUserId(Long userId);
|
QmsQualityInspectorDetailVO getDetailByUserId(Long userId);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,7 @@ import com.nflg.wms.common.pojo.qo.QmsQualityInspectorAddQO;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorSearchQO;
|
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorSearchQO;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorTransferQO;
|
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorTransferQO;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorUpdateQO;
|
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorUpdateQO;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsQualityInspectorCategoryVO;
|
import com.nflg.wms.common.pojo.vo.*;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsQualityInspectorDetailVO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QmsQualityInspectorMaterialVO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QmsQualityInspectorVO;
|
|
||||||
import com.nflg.wms.common.util.UserUtil;
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
import com.nflg.wms.repository.entity.QmsInspectorMaterialCategoryItem;
|
import com.nflg.wms.repository.entity.QmsInspectorMaterialCategoryItem;
|
||||||
import com.nflg.wms.repository.entity.QmsInspectorMaterialItem;
|
import com.nflg.wms.repository.entity.QmsInspectorMaterialItem;
|
||||||
|
|
@ -24,6 +21,12 @@ import com.nflg.wms.repository.entity.User;
|
||||||
import com.nflg.wms.repository.mapper.QmsQualityInspectorMapper;
|
import com.nflg.wms.repository.mapper.QmsQualityInspectorMapper;
|
||||||
import com.nflg.wms.repository.service.IQmsInspectorMaterialCategoryItemService;
|
import com.nflg.wms.repository.service.IQmsInspectorMaterialCategoryItemService;
|
||||||
import com.nflg.wms.repository.service.IQmsInspectorMaterialItemService;
|
import com.nflg.wms.repository.service.IQmsInspectorMaterialItemService;
|
||||||
|
import com.nflg.wms.repository.entity.Department;
|
||||||
|
import com.nflg.wms.repository.entity.Position;
|
||||||
|
import com.nflg.wms.repository.entity.UserInterior;
|
||||||
|
import com.nflg.wms.repository.service.IDepartmentService;
|
||||||
|
import com.nflg.wms.repository.service.IPositionService;
|
||||||
|
import com.nflg.wms.repository.service.IUserInteriorService;
|
||||||
import com.nflg.wms.repository.service.IQmsQcMaterialCategoryService;
|
import com.nflg.wms.repository.service.IQmsQcMaterialCategoryService;
|
||||||
import com.nflg.wms.repository.service.IQmsQualityInspectorService;
|
import com.nflg.wms.repository.service.IQmsQualityInspectorService;
|
||||||
import com.nflg.wms.repository.service.IUserService;
|
import com.nflg.wms.repository.service.IUserService;
|
||||||
|
|
@ -33,10 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -63,6 +63,15 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
|
||||||
@Resource
|
@Resource
|
||||||
private IQmsQcMaterialCategoryService qcMaterialCategoryService;
|
private IQmsQcMaterialCategoryService qcMaterialCategoryService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IUserInteriorService userInteriorService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IDepartmentService departmentService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IPositionService positionService;
|
||||||
|
|
||||||
// ========================= 工具方法 =========================
|
// ========================= 工具方法 =========================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -87,6 +96,15 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
|
||||||
String operator = UserUtil.getUserName();
|
String operator = UserUtil.getUserName();
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
|
||||||
|
// 校验同一 userId + inspectionType 是否已存在
|
||||||
|
boolean exists = lambdaQuery()
|
||||||
|
.eq(QmsQualityInspector::getUserId, request.getUserId())
|
||||||
|
.eq(QmsQualityInspector::getInspectionType, request.getInspectionType())
|
||||||
|
.exists();
|
||||||
|
if (exists) {
|
||||||
|
throw new NflgException(STATE.BusinessError, "该质检人员已存在相同质检类型,不允许重复新增");
|
||||||
|
}
|
||||||
|
|
||||||
// 校验物料ID是否已被其他质检员绑定
|
// 校验物料ID是否已被其他质检员绑定
|
||||||
if (!CollectionUtils.isEmpty(request.getMaterialIds())) {
|
if (!CollectionUtils.isEmpty(request.getMaterialIds())) {
|
||||||
List<QmsInspectorMaterialItem> conflictMaterials = materialItemService.lambdaQuery()
|
List<QmsInspectorMaterialItem> conflictMaterials = materialItemService.lambdaQuery()
|
||||||
|
|
@ -121,7 +139,7 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
|
||||||
.setUpdateBy(operator)
|
.setUpdateBy(operator)
|
||||||
.setUpdateTime(now);
|
.setUpdateTime(now);
|
||||||
save(inspector);
|
save(inspector);
|
||||||
Long inspectorId = inspector.getId();
|
Long inspectorId = inspector.getUserId();
|
||||||
|
|
||||||
// 批量插入物料明细
|
// 批量插入物料明细
|
||||||
if (!CollectionUtils.isEmpty(request.getMaterialIds())) {
|
if (!CollectionUtils.isEmpty(request.getMaterialIds())) {
|
||||||
|
|
@ -203,10 +221,17 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
|
||||||
if (Objects.isNull(inspector)) {
|
if (Objects.isNull(inspector)) {
|
||||||
throw new NflgException(STATE.BusinessError, "该质检人员不存在");
|
throw new NflgException(STATE.BusinessError, "该质检人员不存在");
|
||||||
}
|
}
|
||||||
Long inspectorId = inspector.getId();
|
Long inspectorId = inspector.getUserId();
|
||||||
|
|
||||||
// 追加物料
|
// 追加物料
|
||||||
if (!CollectionUtils.isEmpty(request.getAddMaterialIds())) {
|
if (!CollectionUtils.isEmpty(request.getAddMaterialIds())) {
|
||||||
|
// 校验这些物料是否已被任意质检员绑定(含自己)
|
||||||
|
List<QmsInspectorMaterialItem> conflictMaterials = materialItemService.lambdaQuery()
|
||||||
|
.in(QmsInspectorMaterialItem::getMaterialId, request.getAddMaterialIds())
|
||||||
|
.list();
|
||||||
|
if (!conflictMaterials.isEmpty()) {
|
||||||
|
throw new NflgException(STATE.BusinessError, "追加的物料中存在已被质检员绑定的物料,不允许重复追加");
|
||||||
|
}
|
||||||
List<QmsInspectorMaterialItem> toAdd = request.getAddMaterialIds().stream()
|
List<QmsInspectorMaterialItem> toAdd = request.getAddMaterialIds().stream()
|
||||||
.map(materialId -> new QmsInspectorMaterialItem()
|
.map(materialId -> new QmsInspectorMaterialItem()
|
||||||
.setInspectorId(inspectorId)
|
.setInspectorId(inspectorId)
|
||||||
|
|
@ -230,6 +255,16 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
|
||||||
// 追加物料类别(按编码查 ID)
|
// 追加物料类别(按编码查 ID)
|
||||||
if (!CollectionUtils.isEmpty(request.getAddMaterialCategoryCodes())) {
|
if (!CollectionUtils.isEmpty(request.getAddMaterialCategoryCodes())) {
|
||||||
Map<String, Long> codeToIdMap = getCategoryCodeToIdMap(request.getAddMaterialCategoryCodes());
|
Map<String, Long> codeToIdMap = getCategoryCodeToIdMap(request.getAddMaterialCategoryCodes());
|
||||||
|
List<Long> addCategoryIds = new ArrayList<>(codeToIdMap.values());
|
||||||
|
// 校验这些物料类别是否已被任意质检员绑定(含自己)
|
||||||
|
if (!addCategoryIds.isEmpty()) {
|
||||||
|
List<QmsInspectorMaterialCategoryItem> conflictCategories = materialCategoryItemService.lambdaQuery()
|
||||||
|
.in(QmsInspectorMaterialCategoryItem::getMaterialCategoryId, addCategoryIds)
|
||||||
|
.list();
|
||||||
|
if (!conflictCategories.isEmpty()) {
|
||||||
|
throw new NflgException(STATE.BusinessError, "追加的物料类别中存在已被质检员绑定的类别,不允许重复追加");
|
||||||
|
}
|
||||||
|
}
|
||||||
List<QmsInspectorMaterialCategoryItem> toAdd = new ArrayList<>();
|
List<QmsInspectorMaterialCategoryItem> toAdd = new ArrayList<>();
|
||||||
for (String code : request.getAddMaterialCategoryCodes()) {
|
for (String code : request.getAddMaterialCategoryCodes()) {
|
||||||
Long categoryId = codeToIdMap.get(code);
|
Long categoryId = codeToIdMap.get(code);
|
||||||
|
|
@ -270,7 +305,7 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public QmsQualityInspectorDetailVO getDetailByUserId(Long userId) {
|
public QmsQualityInspectorDetailVO getDetailByUserId(Long userId) {
|
||||||
// 查主表
|
// 按 user_id 查主表,取到 inspector.id 后再查两张明细表
|
||||||
QmsQualityInspector inspector = lambdaQuery()
|
QmsQualityInspector inspector = lambdaQuery()
|
||||||
.eq(QmsQualityInspector::getUserId, userId)
|
.eq(QmsQualityInspector::getUserId, userId)
|
||||||
.one();
|
.one();
|
||||||
|
|
@ -281,6 +316,29 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
|
||||||
// 查 user 信息
|
// 查 user 信息
|
||||||
User user = userService.getById(userId);
|
User user = userService.getById(userId);
|
||||||
|
|
||||||
|
// 查 user_interior,获取 deptId 和 positionId
|
||||||
|
UserInterior userInterior = userInteriorService.lambdaQuery()
|
||||||
|
.eq(UserInterior::getUserId, userId)
|
||||||
|
.one();
|
||||||
|
|
||||||
|
// 查部门名称
|
||||||
|
String deptName = null;
|
||||||
|
String positionName = null;
|
||||||
|
if (Objects.nonNull(userInterior)) {
|
||||||
|
if (Objects.nonNull(userInterior.getDeptId())) {
|
||||||
|
Department department = departmentService.getById(userInterior.getDeptId());
|
||||||
|
if (Objects.nonNull(department)) {
|
||||||
|
deptName = department.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Objects.nonNull(userInterior.getPositionId())) {
|
||||||
|
Position position = positionService.getById(userInterior.getPositionId());
|
||||||
|
if (Objects.nonNull(position)) {
|
||||||
|
positionName = position.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QmsQualityInspectorDetailVO detail = new QmsQualityInspectorDetailVO();
|
QmsQualityInspectorDetailVO detail = new QmsQualityInspectorDetailVO();
|
||||||
detail.setUserId(userId);
|
detail.setUserId(userId);
|
||||||
detail.setInspectionType(inspector.getInspectionType());
|
detail.setInspectionType(inspector.getInspectionType());
|
||||||
|
|
@ -289,12 +347,13 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
|
||||||
detail.setUserCode(user.getUserCode());
|
detail.setUserCode(user.getUserCode());
|
||||||
detail.setUserName(user.getUserName());
|
detail.setUserName(user.getUserName());
|
||||||
}
|
}
|
||||||
|
detail.setDeptName(deptName);
|
||||||
detail.setDeptLeaderName(null);
|
detail.setDeptLeaderName(null);
|
||||||
|
detail.setPositionName(positionName);
|
||||||
|
|
||||||
// 查物料列表
|
// 按 userId 查物料列表和物料类别列表(明细表 inspector_id 存的是 user.id)
|
||||||
detail.setMaterials(baseMapper.getMaterialsByUserId(userId));
|
detail.setMaterials(baseMapper.getMaterialsByInspectorId(userId));
|
||||||
// 查物料类别列表
|
detail.setCategories(baseMapper.getCategoriesByInspectorId(userId));
|
||||||
detail.setCategories(baseMapper.getCategoriesByUserId(userId));
|
|
||||||
|
|
||||||
return detail;
|
return detail;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@
|
||||||
<select id="getCategoriesByUserId" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorCategoryVO">
|
<select id="getCategoriesByUserId" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorCategoryVO">
|
||||||
SELECT
|
SELECT
|
||||||
imci.id,
|
imci.id,
|
||||||
|
imci.material_category_id,
|
||||||
mc.category_code AS material_category_code,
|
mc.category_code AS material_category_code,
|
||||||
mc.category_name AS material_category_name
|
mc.category_name AS material_category_name
|
||||||
FROM qms_inspector_material_category_item imci
|
FROM qms_inspector_material_category_item imci
|
||||||
|
|
@ -147,4 +148,37 @@
|
||||||
ORDER BY imci.id ASC
|
ORDER BY imci.id ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 按 inspectorId 直接查询关联物料列表 -->
|
||||||
|
<select id="getMaterialsByInspectorId" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorMaterialVO">
|
||||||
|
SELECT
|
||||||
|
imi.id,
|
||||||
|
imi.material_id,
|
||||||
|
m.material_no,
|
||||||
|
m.drawing_no,
|
||||||
|
m.drawing_no_ver,
|
||||||
|
m.material_category_code,
|
||||||
|
m.material_category_code_path_name AS material_category_name,
|
||||||
|
m.material_name,
|
||||||
|
m.material_specifications,
|
||||||
|
m.material_texture,
|
||||||
|
m.is_standard_maintained AS material_status
|
||||||
|
FROM qms_inspector_material_item imi
|
||||||
|
LEFT JOIN qms_qc_material m ON m.id = imi.material_id
|
||||||
|
WHERE imi.inspector_id = #{inspectorId}
|
||||||
|
ORDER BY imi.id ASC
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 按 inspectorId 直接查询关联物料类别列表(通过 material_category_id JOIN qms_qc_material_category) -->
|
||||||
|
<select id="getCategoriesByInspectorId" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorCategoryVO">
|
||||||
|
SELECT
|
||||||
|
imci.id,
|
||||||
|
imci.material_category_id,
|
||||||
|
mc.category_code AS material_category_code,
|
||||||
|
mc.category_name AS material_category_name
|
||||||
|
FROM qms_inspector_material_category_item imci
|
||||||
|
LEFT JOIN qms_qc_material_category mc ON mc.id = imci.material_category_id
|
||||||
|
WHERE imci.inspector_id = #{inspectorId}
|
||||||
|
ORDER BY imci.id ASC
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue