zss
2023-08-21 82fbcce60ae86965441ae045df1f864d10005d35
检验计划
已修改23个文件
已删除4个文件
已添加1个文件
771 ■■■■ 文件已修改
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/PlanController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/RawMaterialController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/ReportAuditingController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/ReportController.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionProductMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/ReportMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Inspection.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Report.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportAuditingVo.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportVo.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/PlanService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/ReportAuditingService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/ReportService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionProductServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/NonConformanceReviewServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/PlanServiceImpl.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RawMaterialServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ReportAuditingServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ReportServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/InspectionProductMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/PlanMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/ReportMapper.xml 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/resources/mapper/InstrumentMapper.xml 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
@@ -99,19 +99,15 @@
        return Result.success(inspectionService.selectInspectsListById(id));
    }
    @ApiOperation(value = "上报(更新检验状态)")
    @ApiOperation(value = "作废检验单")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "检验单id", dataTypeClass = Integer.class, required = true)
    })
    @PostMapping("/updateInspectsById")
    public Result updateInspectsById(Integer id) {
        //如果已经上报了不能再一次上报
        Inspection inspection = inspectionService.getById(id);
        if (ObjectUtils.isNotEmpty(inspection.getInspectionStatus())) {
            return Result.fail("已经上报过了,不能再次上报!");
        }
        return Result.success(inspectionService.updateInspectsById(id));
    @PostMapping("/delInspect")
    public Result delInspect(Integer id)  {
        return Result.success(inspectionService.delInspect(id));
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/PlanController.java
@@ -1,5 +1,7 @@
package com.yuanchu.limslaboratory.controller;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yuanchu.limslaboratory.pojo.Inspection;
import com.yuanchu.limslaboratory.service.PlanService;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
@@ -10,7 +12,6 @@
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
@@ -64,4 +65,23 @@
    public Result distribution(Integer id, Integer userId, Integer instrumentId) {
        return Result.success(planService.distribution(id, userId, instrumentId));
    }
    @ApiOperation("检验")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "检验项目id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "value", value = "检验值", dataTypeClass = String.class)
    })
    @PostMapping("/check")
    public Result check(Integer id, String value) {
        return Result.success(planService.check(id, value));
    }
    @ApiOperation("上报")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "检验单id", dataTypeClass = Integer.class, required = true)
    })
    @PostMapping("/reported")
    public Result reported(Integer id) {
        return Result.success(planService.reported(id));
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/RawMaterialController.java
@@ -5,7 +5,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.RawMaterial;
import com.yuanchu.limslaboratory.service.RawMaterialService;
import com.yuanchu.limslaboratory.utils.MyUtil;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -14,9 +13,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/ReportAuditingController.java
ÎļþÒÑɾ³ý
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/ReportController.java
@@ -5,15 +5,15 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.vo.ReportVo;
import com.yuanchu.limslaboratory.service.ReportService;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import com.yuanchu.limslaboratory.utils.RedisUtil;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
@@ -32,9 +32,7 @@
@RestController
@RequestMapping("/report")
public class ReportController {
    /**
     * æœåŠ¡å¯¹è±¡
     */
    @Resource
    private ReportService reportService;
@@ -54,5 +52,35 @@
        return Result.success(map);
    }
    @ApiOperation("提交")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "检验报告id", dataTypeClass = Integer.class, required = true)
    })
    @PostMapping("/submit")
    public Result submit(Integer id) {
        return Result.success(reportService.submit(id));
    }
    @ApiOperation("审核")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "检验报告id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "result", value = "审核结论", dataTypeClass = String.class, required = true)
    })
    @PostMapping("/check")
    public Result check(@RequestHeader("token") String token, Integer id, String result) throws Exception {
        Object object = RedisUtil.get(token);
        Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class);
        return Result.success(reportService.check((String) unmarshal.get("name"), id, result));
    }
    @ApiOperation("删除")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "检验报告id", dataTypeClass = Integer.class, required = true)
    })
    @PostMapping("/delreport")
    public Result delreport(Integer id) {
        return Result.success(reportService.delreport(id));
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java
@@ -4,9 +4,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.Inspection;
import com.yuanchu.limslaboratory.pojo.vo.InspectionVo;
import java.util.List;
import java.util.Map;
/**
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionProductMapper.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.limslaboratory.pojo.InspectionProduct;
import java.util.List;
/**
 * ç”³è¯·å•下物料中的项目(InspectionProduct)表数据库访问层
 *
@@ -11,5 +13,13 @@
 */
public interface InspectionProductMapper extends BaseMapper<InspectionProduct> {
    //根据项目id将已有的检验结论改为null
    void upda(Integer id);
    //根据检验单id查询检验项目的检验结果
    List<Integer> getresult(Integer id);
    //根据检验样品id作废检验项目
    void updat(Integer id);
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/ReportMapper.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.Report;
import com.yuanchu.limslaboratory.pojo.vo.ReportAuditingVo;
import com.yuanchu.limslaboratory.pojo.vo.ReportVo;
/**
@@ -24,10 +23,6 @@
     */
    IPage<ReportVo> selectAllReport(Page<Object> page, Integer status, String name);
    /**
     * æŸ¥è¯¢æŠ¥å‘Šå®¡æ ¸
     * @return
     */
    IPage<ReportAuditingVo> selectAllReportAuditing(Page<Object> page, Integer status, String name);
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Inspection.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
@@ -46,9 +47,7 @@
     **/
    private Integer inspectionStatus;
    /**
     * ${column.comment}
     **/
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    private Integer state;
    /**
@@ -59,9 +58,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    /**
     * ${column.comment}
     **/
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Report.java
@@ -44,14 +44,21 @@
    @ApiModelProperty(value = "关联 ç”³è¯·è¡¨id")
    private Integer inspectionId;
    @ApiModelProperty(value = "审核时间", hidden = true)
    @JsonFormat(pattern = "yyyy-MM-dd ", timezone = "GMT+8")
    private Date checkTime;
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建时间", hidden = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonFormat(pattern = "yyyy-MM-dd ", timezone = "GMT+8")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonFormat(pattern = "yyyy-MM-dd ", timezone = "GMT+8")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    private Integer state;
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportAuditingVo.java
ÎļþÒÑɾ³ý
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportVo.java
@@ -1,32 +1,54 @@
package com.yuanchu.limslaboratory.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * æ£€éªŒæŠ¥å‘Š
 */
@Data
public class ReportVo {
    @ApiModelProperty(value = "检验报告id")
    @JsonSerialize
    private Integer id;
    @ApiModelProperty(value = "样品编号")
    @JsonSerialize
    private String materialCode;
    @ApiModelProperty(value = "报告单号")
    @JsonSerialize
    private String reportCode;
    @ApiModelProperty(value = "申请单号")
    @ApiModelProperty(value = "检验申请单号")
    @JsonSerialize
    private String inspectionCode;
    @ApiModelProperty(value = "审批人")
    @ApiModelProperty(value = "样品名称")
    @JsonSerialize
    private Integer approver;
    @ApiModelProperty(value = "审批状态 0:待提交 1:待审核;2:已审核")
    @JsonSerialize
    private Integer status;
    private String materialName;
    @ApiModelProperty(value = "检验结论")
    @JsonSerialize
    private String conclusion;
    @ApiModelProperty(value = "审批状态 0:待提交 1:待审核;2:已通过 3:不通过")
    @JsonSerialize
    private Integer status;
    @ApiModelProperty(value = "审批人")
    @JsonSerialize
    private Integer approver;
    @ApiModelProperty(value = "审核时间", hidden = true)
    @JsonFormat(pattern = "yyyy-MM-dd ", timezone = "GMT+8")
    private Date checkTime;
    @ApiModelProperty(value = "编制人")
    @JsonSerialize
    private String name;
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java
@@ -43,11 +43,12 @@
     */
    InspectDetailVo selectInspectsListById(Integer id);
    /**
     * ä¸ŠæŠ¥(更新检验单检验结果)
     * ä½œåºŸæ£€éªŒå•
     * @param id
     * @return
     */
    boolean updateInspectsById(Integer id);
    String delInspect(Integer id);
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/PlanService.java
@@ -35,4 +35,19 @@
     * @return
     */
    String distribution(Integer id, Integer userId, Integer instrumentId);
    /**
     * æ£€éªŒ
     * @param id
     * @param value
     * @return
     */
    String check(Integer id, String value);
    /**
     * ä¸ŠæŠ¥
     * @param code
     * @return
     */
    String reported(Integer id);
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/ReportAuditingService.java
ÎļþÒÑɾ³ý
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/ReportService.java
@@ -23,5 +23,27 @@
     * @return
     */
    IPage<ReportVo> selectAllReport(Page<Object> page, Integer status, String name);
    /**
     * æäº¤
     * @param id
     * @return
     */
    String submit(Integer id);
    /**
     * å®¡æ ¸
     * @param name
     * @param id
     * @return
     */
    String check(String name, Integer id, String result);
    /**
     * åˆ é™¤
     * @param id
     * @return
     */
    String delreport(Integer id);
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionProductServiceImpl.java
@@ -1,14 +1,13 @@
package com.yuanchu.limslaboratory.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.limslaboratory.mapper.InspectionProductMapper;
import com.yuanchu.limslaboratory.pojo.InspectionProduct;
import com.yuanchu.limslaboratory.pojo.vo.InsProductVo;
import com.yuanchu.limslaboratory.service.InspectionProductService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * ç”³è¯·å•下物料中的项目(InspectionProduct)表服务实现类
@@ -19,72 +18,6 @@
@Service
public class InspectionProductServiceImpl extends ServiceImpl<InspectionProductMapper, InspectionProduct> implements InspectionProductService {
    @Resource
    InspectionProductMapper inspectionProductMapper;
   /* //更新检验项目
    @Override
    public boolean updateInsProduct(Integer userId, InspectionProduct inspectionProduct) {
        //赋值检验员id
        inspectionProduct.setUserId(userId);
        //判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格0
        String testValue = inspectionProduct.getTestValue();//检验值
        String required = inspectionProduct.getRequired();//标准值
        String internal = inspectionProduct.getInternal();//内控值
        inspectionProduct.setTestState(checkValues(required, internal, testValue));
        //根据检验项目名和关联的检验物料id来查询检验项目的数据
        LambdaUpdateWrapper<InspectionProduct> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(InspectionProduct::getInspectionMaterialId, inspectionProduct.getInspectionMaterialId())
                .eq(InspectionProduct::getName, inspectionProduct.getName());
        inspectionProductMapper.update(inspectionProduct, updateWrapper);
        return true;
    }*/
    /*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/
    private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
        boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
        boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr);
        if (isStandardValueSatisfied && isControlValueSatisfied) {
            return 1;
        } else {
            return 0;
        }
    }
    private boolean isValueSatisfied(String valueStr, String detectionValueStr) {
        String substring = valueStr.substring(1, 2);
        if (substring.equals("=")) {
            String operator = valueStr.substring(0, 2);
            Double standardValue = Double.parseDouble(valueStr.substring(2));
            Double detectionValue = Double.parseDouble(detectionValueStr);
            switch (operator) {
                case ">=":
                    return detectionValue >= standardValue;
                case "<=":
                    return detectionValue <= standardValue;
                default:
                    return false;
            }
        } else {
            String operator = valueStr.substring(0, 1);
            Double standardValue = Double.parseDouble(valueStr.substring(1));
            Double detectionValue = Double.parseDouble(detectionValueStr);
            switch (operator) {
                case ">":
                    return detectionValue > standardValue;
                case "≥":
                    return detectionValue >= standardValue;
                case "≤":
                    return detectionValue <= standardValue;
                case "<":
                    return detectionValue < standardValue;
                case "=":
                    return detectionValue.equals(standardValue);
                default:
                    return false;
            }
        }
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java
@@ -2,7 +2,6 @@
import cn.hutool.core.lang.Snowflake;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -13,11 +12,9 @@
import com.yuanchu.limslaboratory.pojo.vo.InspectDetailVo;
import com.yuanchu.limslaboratory.pojo.vo.InspectionVo;
import com.yuanchu.limslaboratory.service.*;
import com.yuanchu.limslaboratory.utils.MyUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@@ -61,8 +58,6 @@
    @Resource
    UserMapper userMapper;
    @Resource
    ReportMapper reportMapper;
    /**
     * æŸ¥è¯¢æ£€éªŒç”³è¯·å•列表
@@ -188,36 +183,24 @@
        return inspectDetailVo;
    }
    //更新检验单检验结果
    //作废检验单
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean updateInspectsById(Integer id) {
        //更新检验单里面的检验状态和检验结论
        InspectDetailVo inspectDetailVo = selectInspectsListById(id);
        Inspection inspection = Inspection.builder()
                .id(id)
                .inspectionStatus(inspectDetailVo.getInspectionStatus())
                .build();
    public String delInspect(Integer id) {
        /*作废检验单*/
        Inspection inspection = new Inspection();
        inspection.setId(id);
        inspection.setState(0);
        inspectionMapper.updateById(inspection);
        //生成报告单
        Report report = new Report();
        //生成报告单号
        String code = MyUtil.getTimeSixNumberCode("BG","BG");
        //获取检验结论
        String conclusion = "";
        Inspection inspection1 = inspectionMapper.selectById(id);
        if (inspection1.getInspectionStatus().equals(1)) {
            conclusion = "合格";
        }else {
            conclusion = "不合格";
        }
        report.setCode(code);
        report.setStatus(0);
        report.setConclusion(conclusion);
        report.setInspectionId(id);
        reportMapper.insert(report);
        return true;
        /*作废检验样品*/
        InspectionMaterial inspectionMaterial = inspectionMaterialMapper.selectOne(Wrappers.<InspectionMaterial>query().eq("inspection_id", id));
        inspectionMaterial.setState(0);
        inspectionMaterialMapper.updateById(inspectionMaterial);
        /*作废检验项目*/
        inspectionProductMapper.updat(inspectionMaterial.getId());
        return "作废成功!";
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/NonConformanceReviewServiceImpl.java
@@ -10,7 +10,6 @@
import com.yuanchu.limslaboratory.service.NonConformanceReviewService;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
/**
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/PlanServiceImpl.java
@@ -1,14 +1,13 @@
package com.yuanchu.limslaboratory.service.impl;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.yuanchu.limslaboratory.mapper.*;
import com.yuanchu.limslaboratory.pojo.InspectionProduct;
import com.yuanchu.limslaboratory.pojo.Instrument;
import com.yuanchu.limslaboratory.pojo.User;
import com.yuanchu.limslaboratory.service.InstrumentService;
import com.yuanchu.limslaboratory.pojo.*;
import com.yuanchu.limslaboratory.service.PlanService;
import com.yuanchu.limslaboratory.utils.MyUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@@ -37,10 +36,16 @@
    @Resource
    InstrumentMapper instrumentMapper;
    @Resource
    ReportMapper reportMapper;
    @Resource
    InspectionMapper inspectionMapper;
    //查询检验计划
    @Override
    public  List<Map<String,Object>> selectAllPlan(String code , String beginTime, String endTime,Integer status) {
        return planMapper.selectAllPlan(code,beginTime,endTime,status);
    public List<Map<String, Object>> selectAllPlan(String code, String beginTime, String endTime, Integer status) {
        return planMapper.selectAllPlan(code, beginTime, endTime, status);
    }
    //分配-->选择检验人
@@ -52,7 +57,7 @@
    //分配-->选择设备
    @Override
    public List<Map<String, Object>> chooseinstum() {
        return null;
        return instrumentMapper.chooseinstum();
    }
    //分配人员与设备
@@ -65,4 +70,117 @@
        inspectionProductMapper.updateById(inspectionProduct);
        return "分配完成!";
    }
    //检验
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String check(Integer id, String value) {
        //如果检验值不为空
        if (StringUtils.isNotBlank(value)) {
            InspectionProduct inspectionProduct = inspectionProductMapper.selectById(id);
            //判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格0
            String required = inspectionProduct.getRequired();//标准值
            String internal = inspectionProduct.getInternal();//内控值
            inspectionProduct.setTestValue(value);
            inspectionProduct.setTestState(checkValues(required, internal, value));
            inspectionProductMapper.updateById(inspectionProduct);
        } else {
            //如果检验值为空,将原有的检验结论覆盖为null
            inspectionProductMapper.upda(id);
        }
        return "提交成功!";
    }
    //上报
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String reported(Integer id) {
        /*更新检验单里面的检验结论*/
        //先判断检验结果
        List<Integer> results = inspectionProductMapper.getresult(id);
        int count = 0;
        for (Integer result : results) {
            if (result != null && result==1) {
                count++;
            }
        }
        //如果检验项目中的结论包含不合格则检验单不合格
        if (results.contains(0)) {
            Inspection inspection = new Inspection();
            inspection.setId(id);
            inspection.setInspectionStatus(0);
            inspectionMapper.updateById(inspection);
        } else if (count == results.size()) {
            Inspection inspection = new Inspection();
            inspection.setId(id);
            inspection.setInspectionStatus(1);
            inspectionMapper.updateById(inspection);
        } else return "项目未检验完!";
        //生成报告单
        Report report = new Report();
        //生成报告单号
        String recode = MyUtil.getTimeSixNumberCode("BG", "BG");
        //获取检验结论
        String conclusion = "";
        Inspection inspection = inspectionMapper.selectById(id);
        if (inspection.getInspectionStatus().equals(1)) {
            conclusion = "合格";
        } else {
            conclusion = "不合格";
        }
        report.setCode(recode);
        report.setStatus(0);
        report.setConclusion(conclusion);
        report.setInspectionId(id);
        reportMapper.insert(report);
        return "上报成功!";
    }
    /*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/
    private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
        boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
        boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr);
        if (isStandardValueSatisfied && isControlValueSatisfied) {
            return 1;
        } else {
            return 0;
        }
    }
    private boolean isValueSatisfied(String valueStr, String detectionValueStr) {
        String substring = valueStr.substring(1, 2);
        if (substring.equals("=")) {
            String operator = valueStr.substring(0, 2);
            Double standardValue = Double.parseDouble(valueStr.substring(2));
            Double detectionValue = Double.parseDouble(detectionValueStr);
            switch (operator) {
                case ">=":
                    return detectionValue >= standardValue;
                case "<=":
                    return detectionValue <= standardValue;
                default:
                    return false;
            }
        } else {
            String operator = valueStr.substring(0, 1);
            Double standardValue = Double.parseDouble(valueStr.substring(1));
            Double detectionValue = Double.parseDouble(detectionValueStr);
            switch (operator) {
                case ">":
                    return detectionValue > standardValue;
                case "≥":
                    return detectionValue >= standardValue;
                case "≤":
                    return detectionValue <= standardValue;
                case "<":
                    return detectionValue < standardValue;
                case "=":
                    return detectionValue.equals(standardValue);
                default:
                    return false;
            }
        }
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RawMaterialServiceImpl.java
@@ -1,24 +1,15 @@
package com.yuanchu.limslaboratory.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.Instrument;
import com.yuanchu.limslaboratory.pojo.RawMaterial;
import com.yuanchu.limslaboratory.mapper.RawMaterialMapper;
import com.yuanchu.limslaboratory.pojo.vo.InspectionVo;
import com.yuanchu.limslaboratory.service.RawMaterialService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
@@ -37,7 +28,6 @@
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param materialCoding
     * @param materialName
     * @param condition
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ReportAuditingServiceImpl.java
ÎļþÒÑɾ³ý
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ReportServiceImpl.java
@@ -7,10 +7,9 @@
import com.yuanchu.limslaboratory.pojo.Report;
import com.yuanchu.limslaboratory.pojo.vo.ReportVo;
import com.yuanchu.limslaboratory.service.ReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
/**
 * <p>
@@ -35,5 +34,40 @@
        return reportMapper.selectAllReport(page, status, name);
    }
    //提交
    @Override
    public String submit(Integer id) {
        Report report = new Report();
        report.setId(id);
        report.setStatus(1);
        reportMapper.updateById(report);
        return "提交成功!";
    }
    //审核
    @Override
    public String check(String name, Integer id, String result) {
        Report report = new Report();
        report.setId(id);
        report.setApprover(name);
        report.setCheckTime(new Date());
        if (result.equals("通过")){
            report.setStatus(2);
        }else if (result.equals("不通过")){
            report.setStatus(3);
        }
        reportMapper.updateById(report);
        return "审核成功!";
    }
    @Override
    public String delreport(Integer id) {
        Report report = new Report();
        report.setId(id);
        report.setState(0);
        reportMapper.updateById(report);
        return "删除成功!";
    }
}
inspection-server/src/main/resources/mapper/InspectionProductMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yuanchu.limslaboratory.mapper.InspectionProductMapper">
    <update id="upda">
        update lims_laboratory.inspection_product
        set test_state=null
        where id = #{id}
          and state = 1
    </update>
    <!--根据检验单id查询检验项目的检验结果-->
    <select id="getresult" resultType="java.lang.Integer">
        select test_state
        from lims_laboratory.inspection_product
        where state = 1
          and inspection_material_id = (select id from lims_laboratory.inspection_material where inspection_id = #{id})
    </select>
    <!--根据检验样品id作废检验项目-->
    <update id="updat">
        update lims_laboratory.inspection_product
            set state=0
        where inspection_material_id=#{id}
    </update>
</mapper>
inspection-server/src/main/resources/mapper/PlanMapper.xml
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.limslaboratory.mapper.PlanMapper">
    <resultMap id="selectAllPlanMap" type="map" >
    <resultMap id="selectAllPlanMap" type="map">
        <id property="code" column="code"/>
        <result property="id" column="id"/>
        <result property="inspectionStatus" column="inspectionStatus"/>
        <result property="startTime" column="startTime"/>
        <result property="endTime" column="endTime"/>
@@ -13,7 +14,7 @@
        <collection property="chldren" resultMap="selectAllPlanMapTowsMap" javaType="List"/>
    </resultMap>
    <resultMap id="selectAllPlanMapTowsMap" type="map">
        <id property="id" column="id"/>
        <id property="pid" column="pid"/>
        <result property="name" column="name"/>
        <result property="unit" column="unit"/>
        <result property="required" column="required"/>
@@ -24,12 +25,13 @@
    </resultMap>
    <!--查询检验计划-->
    <select id="selectAllPlan" resultMap="selectAllPlanMap">
        select ip.id,
        select i.id ,
        i.code,
        inspection_status inspectionStatus,
        DATE_FORMAT(start_time,'%Y-%m-%d') startTime,
        DATE_FORMAT(end_time,'%Y-%m-%d') endTime,
        im.name samplename,
        ip.id pid,
        ip.name,
        ip.unit,
        required,
@@ -41,7 +43,7 @@
        left join lims_laboratory.inspection_material im on ip.inspection_material_id = im.id
        left join lims_laboratory.inspection i on im.inspection_id = i.id
        left join lims_laboratory.user u on ip.user_id = u.id
        left join  lims_laboratory.instrument isu on ip.instrument_id = isu.id
        left join lims_laboratory.instrument isu on ip.instrument_id = isu.id
        <where>
            <if test="code != null and code != null">
                and i.code like concat('%',#{code},'%')
inspection-server/src/main/resources/mapper/ReportMapper.xml
@@ -4,17 +4,20 @@
    <!--查询检验报告-->
    <select id="selectAllReport" resultType="com.yuanchu.limslaboratory.pojo.vo.ReportVo">
        select im.code materialCode,
        select r.id,
        im.code materialCode,
        r.code reportCode,
        i.code inspectionCode,
        r.approver approver,
        r.status status,
        r.conclusion conclusion,
        u.name name
        from report r
        join inspection i on r.inspection_id = i.id
        join user u on i.user_id = u.id
        join inspection_material im on i.id = im.inspection_id
        im.name materialName,
        r.conclusion ,
        r.status ,
        r.approver ,
        check_time,
        u.name
        from lims_laboratory.report r
        join lims_laboratory.inspection i on r.inspection_id = i.id
        join lims_laboratory.user u on i.user_id = u.id
        join lims_laboratory.inspection_material im on i.id = im.inspection_id
        <where>
            r.state = 1
            <if test="status != null">
@@ -26,33 +29,7 @@
                or r.code like concat('%', #{name}, '%')
            </if>
        </where>
        order by r.id
    </select>
    <!--查询报告审核-->
    <select id="selectAllReportAuditing" resultType="com.yuanchu.limslaboratory.pojo.vo.ReportAuditingVo">
        select im.code materialCode,
        r.code reportCode,
        im.name materialName,
        r.status status,
        r.approver approver,
        DATE_FORMAT(r.`create_time`, '%Y-%m-%d') submitTime,
        DATE_FORMAT(r.`check_time`, '%Y-%m-%d') checkTime
        from report r
        join inspection i on r.inspection_id = i.id
        join inspection_material im on i.id = im.inspection_id
        <where>
            r.state = 1
            <if test="status == null">
                and r.status in (0, 1)
            </if>
            <if test="status != null">
                and r.status = #{status}
            </if>
            <if test="name != null and name != ''">
                and im.code like concat('%', #{name}, '%')
                or i.code like concat('%', #{name}, '%')
                or im.name like concat('%', #{name}, '%')
            </if>
        </where>
    </select>
</mapper>
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java
@@ -23,5 +23,6 @@
    IPage<Map<String, Object>> getListInstrumentInformation(Integer conditions,Boolean whetherWhether, String numberOrNameOrSpecifications, Integer classifyId, Page<Objects> page);
    //分配-->选择设备
    List<Map<String, Object>> chooseinstum();
}
laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
@@ -1,18 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.limslaboratory.mapper.InstrumentMapper">
    <select id="getListInstrumentInformation" resultType="map">
        SELECT i.`id`, i.`equipment_code`, i.`equipment_name`, i.`specifications_models`, u.`name`,
               DATE_FORMAT(DATE_ADD(i.`create_time`, INTERVAL i.`term_validity` MONTH), '%Y-%m-%d') termValidity, i.`conditions`, i.`storage_place`
        DATE_FORMAT(DATE_ADD(i.`create_time`, INTERVAL i.`term_validity` MONTH), '%Y-%m-%d') termValidity,
        i.`conditions`, i.`storage_place`
        FROM instrument i, `user` u
        WHERE i.`state` = 1
          AND i.`classify_id` = #{classifyId}
        AND i.`classify_id` = #{classifyId}
        <if test="conditions != null">
            AND i.`conditions` = #{conditions}
        </if>
        <if test="numberOrNameOrSpecifications != null and numberOrNameOrSpecifications != ''">
            AND CONCAT(i.`equipment_code`, i.`equipment_name`, i.`specifications_models`) LIKE CONCAT('%',#{numberOrNameOrSpecifications},'%')
            AND CONCAT(i.`equipment_code`, i.`equipment_name`, i.`specifications_models`) LIKE
            CONCAT('%',#{numberOrNameOrSpecifications},'%')
        </if>
        <if test="whetherWhether == true">
            AND DATE_FORMAT(DATE_ADD(i.`create_time`, INTERVAL i.`term_validity` MONTH), '%Y-%m-%d') <![CDATA[<]]> NOW()
@@ -20,4 +21,25 @@
        AND i.`user_id` = u.`id`
    </select>
    <!--选择设备-->
    <resultMap id="chooseinstumMap" type="map">
        <id property="father_name" column="father_name"/>
        <collection property="father" resultMap="chooseinstumTowMap" javaType="List"/>
    </resultMap>
    <resultMap id="chooseinstumTowMap" type="map">
        <id property="son_name" column="son_name"/>
        <collection property="chldren" resultMap="chooseinstumTowsMap" javaType="List"/>
    </resultMap>
    <resultMap id="chooseinstumTowsMap" type="map">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
    </resultMap>
    <select id="chooseinstum" resultMap="chooseinstumMap">
        select instrument.id,
               father_name,
               son_name,
               equipment_name name
        from lims_laboratory.instrument
                 left join lims_laboratory.classify c on c.id = instrument.classify_id
    </select>
</mapper>