XiaoRuby
2023-08-22 f77a2eba10ce3f430d31a34790a8a1184c8069e6
Merge remote-tracking branch 'origin/master'

# Conflicts:
# standard-server/src/main/resources/mapper/MaterialMapper.xml
已修改41个文件
已删除4个文件
已添加17个文件
1718 ■■■■ 文件已修改
framework/src/main/java/com/yuanchu/limslaboratory/utils/ArrayListUtil.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/utils/JsonUtil.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/utils/MapUtil.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/HomeController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/PlanController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/QualificationRateStatisticsController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | 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 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionProductMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/QualificationRateStatisticsMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/ReportMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/MapHandlerDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/NonConformingFeedbackDto.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectQualificationRateDto.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SeriesDto.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Inspection.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionProduct.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/NonConformingFeedback.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ProjectNum.java 13 ●●●●● 补丁 | 查看 | 原始文档 | 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/HomeService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/PlanService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/QualificationRateStatisticsService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | 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/HomeServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | 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 56 ●●●●● 补丁 | 查看 | 原始文档 | 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 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java 101 ●●●●● 补丁 | 查看 | 原始文档 | 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/InspectionMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/InspectionProductMapper.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/NonConformingFeedbackMapper.xml 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/PlanMapper.xml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/ReportMapper.xml 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInfoAndIns.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdatedMetricalInformationDto.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/resources/mapper/InstrumentMapper.xml 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/resources/mapper/MeteringPlanMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/MaterialMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/ProductModelMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductModelServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/MaterialMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/ProductModelMapper.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/User.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/resources/mapper/UserMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/utils/ArrayListUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
package com.yuanchu.limslaboratory.utils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * @Author å¼ å®¾
 */
public class ArrayListUtil {
    /**
     * å•值集合去重
     * @param objList
     * @param <T>
     * @return
     */
    public static <T> List<T> singleValueDistinct(List<T>objList){
        return  objList.stream().distinct().collect(Collectors.toList());
    }
    /**
     * å•值集合比较 ä¸»é›†åˆä¸­ä¸Žæ¬¡é›†åˆä¸ç›¸ç­‰æ•°æ®
     * @param mainList ä¸»é›†åˆ
     * @param secondaryList æ¬¡è¦é›†åˆ
     * @param <T>
     * @return ä¸»é›†åˆä¸­è·Ÿæ¬¡è¦é›†åˆä¸ç›¸ç­‰çš„æ•°æ®
     */
    public static <T> List<T> compareNotEqualListBySingleValue(List<T>mainList,List<T>secondaryList){
        return mainList.stream().filter(item -> !secondaryList.stream()
                        .map(e -> e).distinct().collect(Collectors.toList())
                        .contains(item))
                .collect(Collectors.toList());
    }
    /**
     * å•值集合比较 ä¸»é›†åˆä¸­ä¸Žæ¬¡é›†åˆç›¸ç­‰æ•°æ®
     * @param mainList ä¸»é›†åˆ
     * @param secondaryList æ¬¡è¦é›†åˆ
     * @param <T>
     * @return ä¸»é›†åˆä¸­è·Ÿæ¬¡è¦é›†åˆä¸ç›¸ç­‰çš„æ•°æ®
     */
    public static <T> List<T> compareEqualListBySingleValue(List<T>mainList,List<T>secondaryList){
        return mainList.stream().filter(item -> secondaryList.stream()
                        .map(e -> e).collect(Collectors.toList())
                        .contains(item))
                .collect(Collectors.toList());
    }
    /**
     * å•值集合合并
     * @param isDistinct
     * @param values
     * @param <T>
     * @return
     */
    @SafeVarargs
    public static <T> List<T> mergeListBySingleValue(boolean isDistinct, List<T>... values){
        //去重合并
        if (isDistinct){
            return Stream.of(values).flatMap(Collection::stream).distinct().collect(Collectors.toList());
        }
        return Stream.of(values).flatMap(Collection::stream).collect(Collectors.toList());
    }
    /**
     * å•个对象集合根据对象属性去重集合
     * @param keyExtractor
     * @param objects
     * @param <T>
     * @return
     */
    public static <T> List<T> oneObjectsDistinctByProperty(Function<? super T, ?> keyExtractor,List<T> objects){
        List<T> newList = new ArrayList<>();
        objects.stream().filter(distinctByKey(keyExtractor))  //filter保留true的值
                .forEach(newList::add);
        return newList;
    }
    /**
     * å¤šå¯¹è±¡é›†åˆåˆå¹¶æ ¹æ®å±žæ€§åŽ»é‡
     * @param objects
     * @param <T>
     * @return
     */
    @SafeVarargs
    public static <T> List<T> mergeListByObjectsDistinct(Function<? super T, ?> keyExtractor,List<T>... objects){
        List<T> tList = mergeListByObjects(objects);
        return oneObjectsDistinctByProperty(keyExtractor,tList);
    }
    /**
     * å¤šå¯¹è±¡é›†åˆåˆå¹¶æ— éœ€åŽ»é‡ é‡è½½
     * @param objects
     * @param <T>
     * @return
     */
    @SafeVarargs
    public static <T> List<T> mergeListByObjectsDistinct(List<T>... objects){
        return mergeListByObjects(objects);
    }
    private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor)  {
        Map<Object,Boolean> seen = new ConcurrentHashMap<>();
        //putIfAbsent方法添加键值对,如果map集合中没有该key对应的值,则直接添加,并返回null,如果已经存在对应的值,则依旧为原来的值。
        //如果返回null表示添加数据成功(不重复),不重复(null==null :TRUE)
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }
    /**
     * å¯¹è±¡é›†åˆåˆå¹¶
     * @param objects
     * @param <T>
     * @return
     */
    @SafeVarargs
    private static <T> List<T> mergeListByObjects(List<T>... objects){
        return Stream.of(objects).flatMap(Collection::stream).collect(Collectors.toList());
    }
}
framework/src/main/java/com/yuanchu/limslaboratory/utils/JsonUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.yuanchu.limslaboratory.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import java.text.SimpleDateFormat;
/**
 * @Author å¼ å®¾
 */
public class JsonUtil {
    private static ObjectMapper JSON_MAPPER = new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    static {
        JSON_MAPPER.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        JSON_MAPPER.registerModule(new JavaTimeModule());
    }
    /**
     * json转换对应实体
     * @param json
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T jsonToPojo(String json, Class<T> clazz){
        T t=null;
        try {
            t=JSON_MAPPER.readValue(json,clazz);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return t;
    }
    /**
     * å®žä½“转换成json字符
     * @param t
     * @param <T>
     * @return
     */
    public static <T> String jsonToString(T t){
        String result=null;
        try {
            result=JSON_MAPPER.writeValueAsString(t);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return result;
    }
}
framework/src/main/java/com/yuanchu/limslaboratory/utils/MapUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.yuanchu.limslaboratory.utils;
import org.apache.commons.lang3.ArrayUtils;
import java.util.Iterator;
import java.util.Map;
/**
 * @Author å¼ å®¾
 */
public class MapUtil{
    /**
     * Map中根据key批量删除键值对
     * @param map
     * @param excludeKeys
     * @param <K>
     * @param <V>
     * @return
     */
    public static <K, V> Map removeEntries(Map<K, V> map, K[] excludeKeys) {
        Iterator<K> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            K key = iterator.next();
            // å¦‚æžœkey åˆšå¥½åœ¨è¦æŽ’除的key的范围中
            if (ArrayUtils.contains(excludeKeys, key)) {
                iterator.remove();
                map.remove(key);
            }
        }
        return map;
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/HomeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.yuanchu.limslaboratory.controller;
import com.yuanchu.limslaboratory.pojo.ProjectNum;
import com.yuanchu.limslaboratory.service.HomeService;
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.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * é¦–页
 * @author zss
 * @since 2023-08-03 13:03:36
 */
@Api(tags = "首页")
@RestController
@RequestMapping("/home")
public class HomeController {
    @Resource
    HomeService homeService;
    @ApiOperation("计算检验与未检验的单子与项目的数量接口")
    @GetMapping("/checkProjectNum")
    public Result checkProjectNum() {
        ProjectNum projectNum=homeService.checkProjectNum();
        return Result.success(projectNum);
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
@@ -6,6 +6,7 @@
import java.util.*;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yuanchu.limslaboratory.mapper.UserMapper;
import com.yuanchu.limslaboratory.pojo.Inspection;
import com.yuanchu.limslaboratory.pojo.Report;
import com.yuanchu.limslaboratory.pojo.vo.InspectionVo;
@@ -45,6 +46,9 @@
    @Resource
    LinkBasicInformationService linkBasicInformationService;
    @Resource
    UserMapper userMapper;
    @ApiOperation(value = "查询检验申请单列表")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "pageSize", value = "页数", dataTypeClass = Integer.class, required = true),
@@ -71,10 +75,10 @@
            case 0:
                //原材料
                return Result.success(rawMaterialService.selectRawmaAll());
            case 1:
            case 2:
                //委托单
                return Result.success(linkBasicInformationService.selectLinkAll());
            case 2:
            case 1:
                //成品检验
                return Result.success("请输入检验信息!");
        }
@@ -99,19 +103,31 @@
        return Result.success(inspectionService.selectInspectsListById(id));
    }
    @ApiOperation(value = "上报(更新检验状态)")
    @ApiOperation(value = "选择检验项目的责任人")
    @GetMapping("/selectUser")
    public Result selectUser() {
        return Result.success(userMapper.selectUser());
    }
    @ApiOperation(value = "保存检验项目责任人")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "检验单项目id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "userProId", value = "责任人id", dataTypeClass = Integer.class, required = true)
    })
    @GetMapping("/chooseUseProId")
    public Result chooseUseProId(Integer id,Integer userProId) {
        return Result.success(inspectionService.chooseUseProId(id,userProId));
    }
    @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;
/**
@@ -57,11 +58,30 @@
    @ApiOperation("分配")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "检验项目id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "userId", value = "检验人id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "userId", value = "执行人id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "instrumentId", value = "设备id", dataTypeClass = Integer.class, required = true)
    })
    @PostMapping("/distribution")
    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/QualificationRateStatisticsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.yuanchu.limslaboratory.controller;
import com.yuanchu.limslaboratory.pojo.Dto.SelectQualificationRateDto;
import com.yuanchu.limslaboratory.service.QualificationRateStatisticsService;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * @Author å¼ å®¾
 * @Date 2023/8/21
 */
@Api(tags = "试验管理-->合格率统计")
@RequestMapping("/qualificationRate")
@RestController
public class QualificationRateStatisticsController {
    @Resource
    private QualificationRateStatisticsService service;
    @ApiOperation("查询申请物料单供应商列表")
    @GetMapping("/getSupplierList")
    public Result<?> getSupplierList() {
        return Result.success(service.getSupplierList());
    }
    @ApiOperation("查询检验样品合格率统计")
    @GetMapping("/getTestSampleStatistics")
    public Result<?> getTestSampleStatistics(SelectQualificationRateDto dto){
        return Result.success(service.getTestSampleStatistics(dto));
    }
    @ApiOperation("查询供应商不合格统计次数")
    @GetMapping("/getSupplierNoPassStatistics")
    public Result<?> getSupplierNoPassStatistics(SelectQualificationRateDto dto){
        return Result.success(service.getSupplierNoPassStatistics(dto));
    }
    @ApiOperation("查询不合格项目统计")
    @GetMapping("/getNoPassProjectStatistics")
    public Result<?> getNoPassProjectStatistics(SelectQualificationRateDto dto){
        return Result.success(service.getNoPassProjectStatistics(dto));
    }
}
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;
/**
@@ -25,5 +22,11 @@
     * @return
     */
    IPage<Map<String, Object>> selectInspectsList(Page<Object> page, String message);
    //计算已检验检验单数量
    Integer seleCountIns();
    //计算未检验的数量
    Integer seleCountUnIns();
}
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,19 @@
 */
public interface InspectionProductMapper extends BaseMapper<InspectionProduct> {
    //根据项目id将已有的检验结论改为null
    void upda(Integer id);
    //根据检验单id查询检验项目的检验结果
    List<Integer> getresult(Integer id);
    //根据检验样品id作废检验项目
    void updat(Integer id);
    //计算已检验项目数量
    Integer seleCountInspro();
    //计算未检验项目数量
    Integer seleCountUnInspro();
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/QualificationRateStatisticsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.limslaboratory.mapper;
import com.yuanchu.limslaboratory.pojo.Dto.SelectQualificationRateDto;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
 * @Author å¼ å®¾
 * @Date 2023/8/21
 */
@Repository
public interface QualificationRateStatisticsMapper {
    @MapKey("id")
    List<Map<String, Object>>selectSupplierByCondition(@Param("dto") SelectQualificationRateDto dto);
}
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/Dto/MapHandlerDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.limslaboratory.pojo.Dto;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import com.yuanchu.limslaboratory.utils.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
 * @Author å¼ å®¾
 * @Date 2023/8/21
 */
@Component
@Slf4j
public class MapHandlerDto {
    public static  String comparingBySupplier(Object o){
        Map map= JsonUtil.jsonToPojo(JsonUtil.jsonToString(o),Map.class);
        return String.valueOf(map.get("supplier"));
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/NonConformingFeedbackDto.java
@@ -24,12 +24,12 @@
    @ApiModelProperty(value = "分页多少条", example = "10", required = true)
    private Long pageNum;
    @ApiModelProperty(value = "样品编号", example = "1680929494813868034", required = true)
    @ApiModelProperty(value = "样品编号", example = "1680929494813868034")
    private String materialCode;
    @ApiModelProperty(value = "样品名称", example = "电线电缆", required = true)
    @ApiModelProperty(value = "样品名称", example = "电线电缆")
    private String materialName;
    @ApiModelProperty(value = "申请单号", example = "XG-UGYUGH", required = true)
    @ApiModelProperty(value = "申请单号", example = "XG-UGYUGH")
    private String inspectionCode;
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectQualificationRateDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.yuanchu.limslaboratory.pojo.Dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * @Author å¼ å®¾
 * @Date 2023/8/21
 */
@Data
@ApiModel(value="查询合格率对象", description="")
public class SelectQualificationRateDto implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * å¼€å§‹æ—¶é—´
     */
    @ApiModelProperty(value = "开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date beginDate;
    /**
     * ç»“束时间
     */
    @ApiModelProperty(value = "结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endDate;
    /***
     * ç±»åž‹
     */
    @ApiModelProperty(value = "检验类型")
    private Integer type;
    /**
     * ä¾›åº”商
     */
    @ApiModelProperty(value = "供应商")
    private String supplier;
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SeriesDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.yuanchu.limslaboratory.pojo.Dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * @Author å¼ å®¾
 * @Date 2023/8/21
 */
@Data
public class SeriesDto implements Serializable {
    private String name;
    private List<Long> data;
    private String type;
    private String stack;
    public SeriesDto(String name, List<Long> data) {
        this.name = name;
        this.data = data;
        this.type = "bar";
        this.stack = "x";
    }
    public SeriesDto(String name) {
        this.name = name;
        this.type = "bar";
        this.stack = "x";
    }
}
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/InspectionProduct.java
@@ -84,7 +84,7 @@
    private Integer inspectionMaterialId;
    /**
     * å…³è” ç”¨æˆ·id è¯•验员
     * å…³è” ç”¨æˆ·id æ‰§è¡Œäºº
     **/
    private Integer userId;
@@ -92,5 +92,10 @@
     * å…³è” è®¾å¤‡id
     **/
    private Integer instrumentId;
    /**
     * å…³è” ç”¨æˆ·id è´£ä»»äºº
     **/
    private Integer userProId;
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/NonConformingFeedback.java
@@ -18,6 +18,8 @@
    private static final long serialVersionUID = 1L;
    private Integer id;
    /**
     * æ ·å“ç¼–号
     */
@@ -50,4 +52,8 @@
     */
    private String specifications;
    /**
     * ç»“论0:不合格 ; 1:合格
     */
    private Integer result;
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ProjectNum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.yuanchu.limslaboratory.pojo;
import lombok.Data;
@Data
public class ProjectNum {
    private int insNum;         //已检验的检验单数量
    private int insUnNum;       //未检验的检验单数量
    private int insproNum;      //已检验的检验项目数量
    private int insproUnNum;    //未检验的检验项目数量
}
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/HomeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.yuanchu.limslaboratory.service;
import com.yuanchu.limslaboratory.pojo.ProjectNum;
public interface HomeService {
    /**
     * è®¡ç®—检验与未检验的单子与项目的数量接口
     * @return
     */
    ProjectNum checkProjectNum();
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java
@@ -43,11 +43,20 @@
     */
    InspectDetailVo selectInspectsListById(Integer id);
    /**
     * ä¸ŠæŠ¥(更新检验单检验结果)
     * ä½œåºŸæ£€éªŒå•
     * @param id
     * @return
     */
    boolean updateInspectsById(Integer id);
    String delInspect(Integer id);
    /**
     * ä¿å­˜æ£€éªŒé¡¹ç›®è´£ä»»äºº
     * @param id
     * @param userProId
     * @return
     */
    String chooseUseProId(Integer id, Integer userProId);
}
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 id
     * @return
     */
    String reported(Integer id);
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/QualificationRateStatisticsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.yuanchu.limslaboratory.service;
import com.yuanchu.limslaboratory.pojo.Dto.SelectQualificationRateDto;
import com.yuanchu.limslaboratory.pojo.InspectionMaterial;
import java.util.List;
import java.util.Map;
/**
 * @Author å¼ å®¾
 * @Date 2023/8/21
 */
public interface QualificationRateStatisticsService {
    /**
     * èŽ·å–ç”³è¯·ç‰©æ–™å•ä¸‹æ‰€æœ‰ä¾›åº”å•†åˆ—è¡¨
     * @return
     */
    List<InspectionMaterial> getSupplierList();
    Map<String, Object> getTestSampleStatistics(SelectQualificationRateDto dto);
    Map<String, Object> getSupplierNoPassStatistics(SelectQualificationRateDto dto);
    Map<String, Object> getNoPassProjectStatistics(SelectQualificationRateDto dto);
}
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/HomeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.yuanchu.limslaboratory.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yuanchu.limslaboratory.mapper.InspectionMapper;
import com.yuanchu.limslaboratory.mapper.InspectionProductMapper;
import com.yuanchu.limslaboratory.pojo.Inspection;
import com.yuanchu.limslaboratory.pojo.ProjectNum;
import com.yuanchu.limslaboratory.service.HomeService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class HomeServiceImpl implements HomeService {
    @Resource
    InspectionMapper inspectionMapper;
    @Resource
    InspectionProductMapper inspectionProductMapper;
    //计算检验与未检验的单子与项目的数量接口
    @Override
    public ProjectNum checkProjectNum() {
        ProjectNum projectNum = new ProjectNum();
        //已检验的检验单数量
        projectNum.setInsNum(inspectionMapper.seleCountIns());
        //未检验的检验单数量
        projectNum.setInsUnNum(inspectionMapper.seleCountUnIns());
        //已检验的检验项目数量
        projectNum.setInsproNum(inspectionProductMapper.seleCountInspro());
        //未检验的检验项目数量
        projectNum.setInsproUnNum(inspectionProductMapper.seleCountUnInspro());
        return projectNum;
    }
}
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,7 +12,6 @@
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;
@@ -61,8 +59,6 @@
    @Resource
    UserMapper userMapper;
    @Resource
    ReportMapper reportMapper;
    /**
     * æŸ¥è¯¢æ£€éªŒç”³è¯·å•列表
@@ -188,36 +184,34 @@
        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 "作废成功!";
    }
    //保存检验项目责任人
    @Override
    public String chooseUseProId(Integer id, Integer userProId) {
        InspectionProduct inspectionProduct = new InspectionProduct();
        inspectionProduct.setId(id);
        inspectionProduct.setUserProId(userProId);
        inspectionProductMapper.updateById(inspectionProduct);
        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();
    }
    //分配人员与设备
@@ -60,9 +65,123 @@
    public String distribution(Integer id, Integer userId, Integer instrumentId) {
        InspectionProduct inspectionProduct = new InspectionProduct();
        inspectionProduct.setId(id);
        //执行人
        inspectionProduct.setUserId(userId);
        inspectionProduct.setInstrumentId(instrumentId);
        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/QualificationRateStatisticsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.yuanchu.limslaboratory.service.impl;
import cn.hutool.json.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yuanchu.limslaboratory.mapper.InspectionMaterialMapper;
import com.yuanchu.limslaboratory.mapper.QualificationRateStatisticsMapper;
import com.yuanchu.limslaboratory.pojo.Dto.MapHandlerDto;
import com.yuanchu.limslaboratory.pojo.Dto.SelectQualificationRateDto;
import com.yuanchu.limslaboratory.pojo.Dto.SeriesDto;
import com.yuanchu.limslaboratory.pojo.InspectionMaterial;
import com.yuanchu.limslaboratory.service.QualificationRateStatisticsService;
import com.yuanchu.limslaboratory.utils.ArrayListUtil;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
/**
 * @Author å¼ å®¾
 * @Date 2023/8/21
 */
@Service
@Slf4j
public class QualificationRateStatisticsServiceImpl implements QualificationRateStatisticsService {
    @Resource
    private InspectionMaterialMapper inspectionMaterialMapper;
    @Resource
    private QualificationRateStatisticsMapper qualificationRateStatisticsMapper;
    @Override
    public List<InspectionMaterial> getSupplierList() {
        QueryWrapper<InspectionMaterial> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().select(InspectionMaterial::getSupplier)
                .eq(InspectionMaterial::getState, 1).groupBy(InspectionMaterial::getSupplier);
        return inspectionMaterialMapper.selectList(queryWrapper);
    }
    @Override
    public Map<String, Object> getTestSampleStatistics(SelectQualificationRateDto dto) {
        System.out.println(dto);
        return null;
    }
    @Override
    public Map<String, Object> getSupplierNoPassStatistics(SelectQualificationRateDto dto) {
        Map<String, Object> allMap = new HashMap<>(16);
        List<Map<String, Object>> mapList = qualificationRateStatisticsMapper.selectSupplierByCondition(dto);
        mapList.forEach(System.out::println);
        System.out.println("=================================");
        //去重取出供应商
        List<Map<String, Object>> supplierDistinct = ArrayListUtil.oneObjectsDistinctByProperty(MapHandlerDto::comparingBySupplier, mapList);
        List<String> supplierList = new ArrayList<String>();
        supplierDistinct.forEach(l -> {
            supplierList.add(String.valueOf(l.get("supplier")));
        });
        allMap.put("xAxis", supplierList);
        List<SeriesDto>seriesDtoList=new ArrayList<SeriesDto>(2);
        SeriesDto seriesDto2=new SeriesDto("不合格数量");
        SeriesDto seriesDto=new SeriesDto("合格数量");
        // å–出对应合格数量不合格数量
        List<Long>pass=new ArrayList<>();
        List<Long>noPass=new ArrayList<>();
        AtomicLong integerPass=new AtomicLong(0L);
        AtomicLong integerNoPass=new AtomicLong(0L);
        supplierList.forEach(s -> {
            mapList.stream()
                    .filter(l -> Objects.equals(l.get("supplier"), s))
                    .forEach(l -> {
                        if(Objects.equals(l.get("inspectionStatus"),1)){
                            integerPass.incrementAndGet();
                        }else {
                            integerNoPass.incrementAndGet();
                        }
                    });
            pass.add(integerPass.get());
            noPass.add(integerNoPass.get());
            integerNoPass.set(0L);
            integerPass.set(0L);
        });
        seriesDto.setData(pass);
        seriesDto2.setData(noPass);
        seriesDtoList.add(seriesDto);
        seriesDtoList.add(seriesDto2);
        System.out.println("数量=======>");
        System.out.println(seriesDtoList);
        return null;
    }
    @Override
    public Map<String, Object> getNoPassProjectStatistics(SelectQualificationRateDto dto) {
        return null;
    }
}
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/InspectionMapper.xml
@@ -20,10 +20,26 @@
        from lims_laboratory.inspection i
        join lims_laboratory.user u on i.user_id = u.id
        join lims_laboratory.inspection_material im on i.id = im.inspection_id
        where   i.state=1
        where i.state=1
        <if test="message!=null">
            and i.code like concat('%', #{message}, '%')
            or im.name like concat('%', #{message}, '%')
        </if>
    </select>
    <!--计算检验的检验单数量-->
    <select id="seleCountIns" resultType="java.lang.Integer">
        select count(id)
        from lims_laboratory.inspection
        where state = 1
          and inspection_status in (0, 1)
    </select>
    <!--计算未检验的检验单数量-->
    <select id="seleCountUnIns" resultType="java.lang.Integer">
        select count(id)
        from lims_laboratory.inspection
        where state = 1
          and inspection_status is null
    </select>
</mapper>
inspection-server/src/main/resources/mapper/InspectionProductMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
<?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>
    <!--计算已检验项目数量-->
    <select id="seleCountInspro" resultType="java.lang.Integer">
        select count(id)
        from lims_laboratory.inspection_product
        where state = 1
          and test_state in (0, 1)
    </select>
    <!--计算未检验项目数量-->
    <select id="seleCountUnInspro" resultType="java.lang.Integer">
        select count(id)
        from lims_laboratory.inspection_product
        where state = 1
          and test_state is null
    </select>
</mapper>
inspection-server/src/main/resources/mapper/NonConformingFeedbackMapper.xml
@@ -1,35 +1,34 @@
<?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.NonConformingFeedbackMapper">
    <select id="selectNonConformingFeedback" resultType="nonConformingFeedback" parameterType="com.yuanchu.limslaboratory.pojo.Dto.NonConformingFeedbackDto">
        SELECT
            im.`code` materialCode,
            im.`name` materialName,
            i.`code` inspectionCode,
            i.create_time createTime,
            u.`name` testManager,
            im.specifications specifications
    <select id="selectNonConformingFeedback" resultType="nonConformingFeedback"
            parameterType="com.yuanchu.limslaboratory.pojo.Dto.NonConformingFeedbackDto">
        SELECT im.id,
        im.`code` materialCode,
        im.`name` materialName,
        i.`code` inspectionCode,
        i.create_time createTime,
        u.`name` testManager,
        im.specifications specifications,
        inspection_status result
        FROM
            inspection i,
            inspection_material im,
            `user` u
        lims_laboratory.inspection i,
        lims_laboratory.inspection_material im,
        lims_laboratory.`user` u
        WHERE
            1 = 1
          AND i.id = im.inspection_id
          AND i.user_id = u.id
        i.id = im.inspection_id
        AND i.user_id = u.id
        <if test="nonConformingFeedbackDto.materialCode!=null and nonConformingFeedbackDto.materialCode!=''">
            and  im.`code` like concat("%",#{nonConformingFeedbackDto.materialCode},"%")
            and im.`code` like concat('%',#{nonConformingFeedbackDto.materialCode},'%')
        </if>
        <if test="nonConformingFeedbackDto.materialName!=null and nonConformingFeedbackDto.materialName!=''">
            and im.`name` like concat("%",#{nonConformingFeedbackDto.materialName},"%")
            and im.`name` like concat('%',#{nonConformingFeedbackDto.materialName},'%')
        </if>
        <if test="nonConformingFeedbackDto.inspectionCode!=null and nonConformingFeedbackDto.inspectionCode!=''">
            and im.specifications like concat("%",#{nonConformingFeedbackDto.inspectionCode},"%")
            and im.specifications like concat('%',#{nonConformingFeedbackDto.inspectionCode},'%')
        </if>
          and i.state=1
          and im.state=1
        and i.state=1
        and im.state=1
        and i.inspection_status =0
    </select>
</mapper>
inspection-server/src/main/resources/mapper/PlanMapper.xml
@@ -1,19 +1,17 @@
<?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="samplename" column="samplename"/>
        <result property="inspectionStatus" column="inspectionStatus"/>
        <result property="startTime" column="startTime"/>
        <result property="endTime" column="endTime"/>
        <collection property="father" resultMap="selectAllPlanMapTowMap" javaType="List"/>
    </resultMap>
    <resultMap id="selectAllPlanMapTowMap" type="map">
        <id property="samplename" column="samplename"/>
        <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 +22,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 +40,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/QualificationRateStatisticsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
<?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.QualificationRateStatisticsMapper">
    <select id="selectSupplierByCondition" resultType="java.util.Map">
        SELECT i.id,
        i.type,
        im.`name`,
        im.supplier,
        i.inspection_status inspectionStatus,
        i.start_time startTime,
        i.end_time endTime
        FROM inspection i
        INNER JOIN inspection_material im ON i.id = im.inspection_id
        where (i.state = 1 AND TRUE = IFNULL(i.inspection_status, FALSE))
        <if test="dto.beginDate!=null and dto.endDate!=null">
            DATE_FORMAT( i.end_time, '%Y-%m-%d' ) BETWEEN #{dto.beginDate}
            AND #{dto.endDate}
            AND DATE_FORMAT( i.start_time, '%Y-%m-%d' )>= #{dto.beginDate}
        </if>
        <if test="dto.type!=null">
            and i.type=#{dto.type}
        </if>
        <if test="dto.supplier!=null and dto.supplier!=''">
            and im.supplier=#{dto.supplier}
        </if>
    </select>
</mapper>
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/controller/MetricalInformationController.java
@@ -2,6 +2,7 @@
import com.yuanchu.limslaboratory.pojo.MetricalInformation;
import com.yuanchu.limslaboratory.pojo.dto.UpdateMetricalInformationDto;
import com.yuanchu.limslaboratory.pojo.dto.UpdatedMetricalInformationDto;
import com.yuanchu.limslaboratory.service.MetricalInformationService;
import com.yuanchu.limslaboratory.service.UserService;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
@@ -89,8 +90,9 @@
    }
    @ApiOperation("更新计量结果")
    public Result<?> updateMetricalInformationResult(String code,Integer result){
        return null;
    @PostMapping("/updateMetricalInformationInfo")
    public Result<?> updateMetricalInformationInfo(@RequestBody UpdatedMetricalInformationDto dto){
        return Result.success(metricalInformationService.updateMetricalInformationInfo(dto));
    }
}
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/java/com/yuanchu/limslaboratory/pojo/MetricalInfoAndIns.java
@@ -21,6 +21,8 @@
@ApiModel(value="MeteringPlanAndInfoAndIns对象", description="")
public class MetricalInfoAndIns extends Instrument implements Serializable {
    private Long imId;
    @ApiModelProperty(value = "计量编号", example = "1", required = true)
    private String code;
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdatedMetricalInformationDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.yuanchu.limslaboratory.pojo.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
import java.util.Date;
/**
 * @Author å¼ å®¾
 * @Date 2023/8/21
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "UpdatedMetricalInformationDto对象", description = "")
public class UpdatedMetricalInformationDto implements Serializable {
 @ApiModelProperty(value = "主键", example = "1", required = true)
 private Integer id;
 @ApiModelProperty(value = "编码", example = "1", required = true)
 private String code;
 @ApiModelProperty(value = "结果", example = "1", required = true)
 private Integer result;
 @ApiModelProperty(value = "计量日期", example = "1", required = true)
 @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
 @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME)
 private Date date;
 @ApiModelProperty(value = "不确定度", example = "1", required = true)
 private String uncertainty;
 @ApiModelProperty(value = "性能指标", example = "1", required = true)
 private String performanceIndex;
 @ApiModelProperty(value = "备注", example = "1", required = true)
 private String remarks;
 //@ApiModelProperty(value = "文件", example = "1", required = true)
 //private MultipartFile[] file;
 //@ApiModelProperty(value = "有效周期", example = "1", required = true)
 //private String termValidity;
}
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java
@@ -2,6 +2,7 @@
import com.yuanchu.limslaboratory.pojo.MetricalInformation;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.limslaboratory.pojo.dto.UpdatedMetricalInformationDto;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -24,4 +25,6 @@
    Integer deleteMetricalInformation(Integer metricalInformationId);
    Integer updateMetricalInformation(MetricalInformation metricalInformation, MultipartFile file);
    boolean updateMetricalInformationInfo(UpdatedMetricalInformationDto dto);
}
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java
@@ -1,9 +1,11 @@
package com.yuanchu.limslaboratory.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yuanchu.limslaboratory.pojo.MetricalInformation;
import com.yuanchu.limslaboratory.mapper.MetricalInformationMapper;
import com.yuanchu.limslaboratory.pojo.dto.UpdatedMetricalInformationDto;
import com.yuanchu.limslaboratory.service.MetricalInformationService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.limslaboratory.utils.FileSaveUtil;
@@ -68,4 +70,20 @@
        }
        return metricalInformationMapper.updateById(metricalInformation);
    }
    @Override
    public boolean updateMetricalInformationInfo(UpdatedMetricalInformationDto dto) {
        System.out.println(dto);
        MetricalInformation info = new MetricalInformation();
        info.setId(dto.getId());
        info.setRemarks(dto.getRemarks());
        info.setPerformanceIndex(dto.getPerformanceIndex());
        info.setResult(dto.getResult());
        info.setUncertainty(dto.getUncertainty());
        info.setEndDate(dto.getDate());
        info.setUpdateTime(DateUtil.date());
        System.out.println(info);
        //文件滤过
        return metricalInformationMapper.updateById(info)>0;
    }
}
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>
laboratory-server/src/main/resources/mapper/MeteringPlanMapper.xml
@@ -77,14 +77,22 @@
               im.imName                                           imName,
               im.create_time                                      imCreateTime,
               im.measurement_unit                                 imUnit,
               im.`code`                                           imCode
               im.`code`                                           imCode,
               im.id                                                imId,
               im.uncertainty                                       uncertainty ,
               im.performance_index                                  performanceIndex ,
               im.remarks                                           remarks
        FROM metering_plan m
                 LEFT JOIN `user` u ON m.create_Person = u.id
                 LEFT JOIN (
            SELECT i.equipment_code,
                   i.equipment_name,
                   i.measuring_range,
                   im.id,
                   i.term_validity,
                   im.uncertainty,
                   im.performance_index,
                   im.remarks,
                   im.result,
                   im.end_date,
                   (SELECT NAME FROM USER WHERE id = im.user_id) imName,
@@ -114,7 +122,11 @@
               (SELECT NAME FROM USER WHERE id = im.user_id) imName,
               im.create_time                                imCreateTime,
               im.measurement_unit                           imUnit,
               im.`code`                                     imCode
               im.`code`                                     imCode,
               im.id                                            imId,
               im.uncertainty                                       uncertainty ,
               im.performance_index                                  performanceIndex ,
               im.remarks                                           remarks
        FROM metrical_information im,
             metering_plan m,
             instrument i
@@ -144,6 +156,10 @@
        <result property="measuringRange" column="measuringRange"/>
        <result property="equipmentName" column="equipmentName"/>
        <result property="equipmentCode" column="equipmentCode"/>
        <result property="imId" column="imId"/>
        <result property="performanceIndex" column="performanceIndex"/>
        <result property="uncertainty" column="uncertainty"/>
        <result property="remarks" column="remarks"/>
    </resultMap>
    <resultMap id="measureInsAndPlanMap" type="meteringPlanAndInfoAndIns">
@@ -166,6 +182,10 @@
            <result property="measuringRange" column="measuringRange"/>
            <result property="equipmentName" column="equipmentName"/>
            <result property="equipmentCode" column="equipmentCode"/>
            <result property="imId" column="imId"/>
            <result property="performanceIndex" column="performanceIndex"/>
            <result property="uncertainty" column="uncertainty"/>
            <result property="remarks" column="remarks"/>
        </collection>
    </resultMap>
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/MaterialMapper.java
@@ -26,8 +26,7 @@
    // å››çº§æ ‘
    List<Map<String, Object>> FourTree(String specificationsName);
    //选择样品名称
    List<String> selectmater();
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/ProductModelMapper.java
@@ -23,10 +23,10 @@
    //添加标准-->选择项目分组
    List<String> selectfather();
    //查询项目模版根据样品名
    List<Map<String, Object>> seleMode(String name);
    //选择样品名称
    List<String> selectmater();
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java
@@ -85,9 +85,11 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer addMaterialInformation(AddMaterialDto addMaterialDto) {
        Material material = materialMapper.selectOne(Wrappers.<Material>query().eq("name", addMaterialDto.getMaterialName()));
        material.setType(addMaterialDto.getType());
        int isInsertSuccess = materialMapper.updateById(material);
        Material material = new Material()
                .setCode("BZ" + IdWorker.getIdStr())
                .setName(addMaterialDto.getMaterialName())
                .setType(addMaterialDto.getType());
        int isInsertSuccess = materialMapper.insert(material);
        if (isInsertSuccess > 0) {
            Standard standard = new Standard()
                    .setMaterialId(material.getId())
@@ -125,7 +127,7 @@
    //添加指标-->选择样品名称
    @Override
    public List<String> selectmater() {
        return materialMapper.selectmater();
        return productModelMapper.selectmater();
    }
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductModelServiceImpl.java
@@ -28,13 +28,10 @@
    @Resource
    ProductModelMapper productModelMapper;
    @Resource
    MaterialMapper materialMapper;
    //选择样品
    @Override
    public List<String> selectmater() {
        return materialMapper.selectmater();
        return productModelMapper.selectmater();
    }
    //添加标准-->选择项目分组
@@ -58,10 +55,6 @@
            BeanUtils.copyProperties(productModelDto, productModel);
            productModelMapper.insert(productModel);
        }
        //添加物料产品库
        Material material = new Material();
        material.setName(productModelDto.getMaterial()).setCode(MyUtil.getTimeSixNumberCode("CP", "CP"));
        materialMapper.insert(material);
    }
    //查询标准模版列表
standard-server/src/main/resources/mapper/MaterialMapper.xml
@@ -66,11 +66,4 @@
        WHERE m.`state` = 1
    </select>
    <!--添加标准选择样品名称-->
    <select id="selectmater" resultType="java.lang.String">
        select  name
        from lims_laboratory.material
        where state = 1
    </select>
</mapper>
standard-server/src/main/resources/mapper/ProductModelMapper.xml
@@ -47,6 +47,13 @@
               unit
        from lims_laboratory.product_model
        where state = 1
          and material =#{name}
          and material = #{name}
    </select>
    <!--添加标准选择样品名称-->
    <select id="selectmater" resultType="java.lang.String">
        select material
        from lims_laboratory.product_model
        where state = 1
    </select>
</mapper>
user-server/src/main/java/com/yuanchu/limslaboratory/pojo/User.java
@@ -8,7 +8,6 @@
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sun.jmx.snmp.Timestamp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
user-server/src/main/resources/mapper/UserMapper.xml
@@ -40,5 +40,6 @@
    <select id="selectUser" resultType="Map">
        select id, name
        from lims_laboratory.user
        where job_state!=0
    </select>
</mapper>