liu
6 天以前 f8ccc5ab312ab7c5d6c7eb7fac4e37924f513869
src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -2,7 +2,11 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.project.system.service.ISysUserService;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl;
@@ -15,6 +19,8 @@
import com.ruoyi.quality.service.IQualityInspectParamService;
import com.ruoyi.quality.service.IQualityInspectService;
import com.ruoyi.quality.service.IQualityUnqualifiedService;
import com.ruoyi.quality.util.QualityInspectionValueValidator;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
@@ -22,6 +28,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Objects;
/**
 * 原材料检验/过程检验/出厂检验
@@ -41,6 +48,12 @@
    @Autowired
    private ProcurementRecordService procurementRecordService;
    @Resource
    private ISysUserService sysUserService;
    @Resource
    private SysUserMapper sysUserMapper;
    /**
     * 新增
@@ -49,6 +62,10 @@
     */
    @PostMapping("/add")
    public AjaxResult add(@RequestBody QualityInspectDto qualityInspectDto) {
        String validationMessage = validateInspect(qualityInspectDto, false);
        if (validationMessage != null) {
            return AjaxResult.error(validationMessage);
        }
        return AjaxResult.success(qualityInspectService.add(qualityInspectDto));
    }
@@ -91,7 +108,60 @@
     */
    @PostMapping("/update")
    public AjaxResult update(@RequestBody QualityInspectDto qualityInspectDto) {
        String validationMessage = validateInspect(qualityInspectDto, true);
        if (validationMessage != null) {
            return AjaxResult.error(validationMessage);
        }
        QualityInspect stored = qualityInspectService.getById(qualityInspectDto.getId());
        if (stored == null) {
            return AjaxResult.error("检验记录不存在");
        }
        if (Integer.valueOf(1).equals(stored.getInspectState())) {
            return AjaxResult.error("已提交的检验记录不能修改");
        }
        return AjaxResult.success(qualityInspectService.updateQualityInspect(qualityInspectDto));
    }
    /** 仅分配检验员,避免触发整张检验单的必填校验。 */
    @PostMapping("/assignInspector")
    public AjaxResult assignInspector(@RequestBody QualityInspect inspect) {
        if (inspect == null || inspect.getId() == null) {
            return AjaxResult.error("检验记录ID不能为空");
        }
        if (inspect.getCheckUserId() == null) {
            return AjaxResult.error("请选择检验员");
        }
        QualityInspect stored = qualityInspectService.getById(inspect.getId());
        if (stored == null) {
            return AjaxResult.error("检验记录不存在");
        }
        if (Integer.valueOf(1).equals(stored.getInspectState())) {
            return AjaxResult.error("已提交的检验记录不能重新分配检验员");
        }
        SysUser inspector = sysUserService.selectUserById(inspect.getCheckUserId());
        if (inspector == null || "2".equals(inspector.getDelFlag())) {
            return AjaxResult.error("所选用户不存在或已删除");
        }
        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())
                && !Objects.equals(SecurityUtils.getLoginUser().getTenantId(), inspector.getTenantId())) {
            return AjaxResult.error("只能分配给当前公司用户");
        }
        if (!"0".equals(inspector.getStatus())) {
            return AjaxResult.error("所选用户已停用");
        }
        QualityInspect update = new QualityInspect();
        update.setId(inspect.getId());
        update.setCheckUserId(inspector.getUserId());
        update.setCheckName(StringUtils.defaultIfBlank(inspector.getNickName(), inspector.getUserName()));
        return AjaxResult.success(qualityInspectService.updateById(update));
    }
    /** 仅返回当前租户中正常、未删除的系统用户,供质检员分配使用。 */
    @GetMapping("/inspectorCandidates")
    public AjaxResult inspectorCandidates() {
        Long tenantId = SecurityUtils.isAdmin(SecurityUtils.getUserId())
                ? null : SecurityUtils.getLoginUser().getTenantId();
        return AjaxResult.success(sysUserMapper.selectActiveUsers(tenantId));
    }
    /**
@@ -134,4 +204,49 @@
    public void down(HttpServletResponse response,@RequestBody QualityInspect qualityInspect) {
        qualityInspectService.down(response, qualityInspect);
    }
    private String validateInspect(QualityInspectDto inspect, boolean requireId) {
        if (inspect == null) {
            return "检验数据不能为空";
        }
        if (requireId && inspect.getId() == null) {
            return "检验记录ID不能为空";
        }
        if (inspect.getInspectType() == null || inspect.getInspectType() < 0 || inspect.getInspectType() > 2) {
            return "检验类别不正确";
        }
        if (inspect.getProductId() == null) {
            return "请选择产品";
        }
        if (inspect.getCheckTime() == null) {
            return "请选择检测日期";
        }
        if (inspect.getQuantity() == null || inspect.getQuantity().signum() <= 0) {
            return "检验数量必须大于0";
        }
        if (!"合格".equals(inspect.getCheckResult()) && !"不合格".equals(inspect.getCheckResult())) {
            return "请选择有效的检测结果";
        }
        if (inspect.getInspectType() == 1 && StringUtils.isBlank(inspect.getProcess())) {
            return "过程检验必须选择工序";
        }
        if (CollectionUtils.isEmpty(inspect.getQualityInspectParams())) {
            return "当前产品未配置检验指标,请先维护指标";
        }
        for (QualityInspectParam parameter : inspect.getQualityInspectParams()) {
            if (StringUtils.isBlank(parameter.getParameterItem())) {
                return "检验项目不能为空";
            }
            if (StringUtils.isBlank(parameter.getTestValue())) {
                return "请填写“" + parameter.getParameterItem() + "”的检验值";
            }
        }
        if ("合格".equals(inspect.getCheckResult())) {
            String valueMessage = QualityInspectionValueValidator.validateQualified(inspect.getQualityInspectParams());
            if (valueMessage != null) {
                return valueMessage;
            }
        }
        return null;
    }
}