package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.mapper.RawInsProductMapper; import com.yuanchu.mom.pojo.RawInsProduct; import com.yuanchu.mom.service.RawInsProductService; import com.yuanchu.mom.utils.MyUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * 原材料申请单中的项目列表(RawInsProduct)表服务实现类 * * @author zss * @since 2023-08-01 13:52:31 */ @Service public class RawInsProductServiceImpl extends ServiceImpl implements RawInsProductService { @Resource RawInsProductMapper rawInsProductMapper; //更新检验项目 @Override public void updaterawInsProduct(int userId, RawInsProduct rawInsProduct) { //赋值检验员id rawInsProduct.setUserId(userId); //判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格0 String testValue = rawInsProduct.getTestValue();//检验值 String required = rawInsProduct.getRequired();//标准值 String internal = rawInsProduct.getInternal();//内控值 rawInsProduct.setTestState(checkValues(required, internal, testValue)); //根据检验项目名和关联的检验单id来查询检验项目的数据 LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(RawInsProduct::getRawInspectId, rawInsProduct.getRawInspectId()) .eq(RawInsProduct::getName, rawInsProduct.getName()); rawInsProductMapper.update(rawInsProduct, updateWrapper); } @Override public List> selectInspectIdAndName() { return rawInsProductMapper.selectInspectIdAndName(); } @Override public IPage> selectPageDevice(Integer pageNo, Integer pageSize, String codeOrNameOrModel) { return rawInsProductMapper.selectPageDevice(pageNo, pageSize, codeOrNameOrModel); } @Override public Map inspectIdSelect(Integer inspectId) { return rawInsProductMapper.inspectIdSelect(inspectId); } @Override public List> parentClassification() { return rawInsProductMapper.parentClassification(); } /*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/ 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; } } } }