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.mapper.RawInspectMapper; import com.yuanchu.mom.pojo.RawInsProduct; import com.yuanchu.mom.pojo.RawInspect; import com.yuanchu.mom.service.RawInsProductService; import com.yuanchu.mom.utils.MyUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 原材料申请单中的项目列表(RawInsProduct)表服务实现类 * * @author zss * @since 2023-08-01 13:52:31 */ @Service public class RawInsProductServiceImpl extends ServiceImpl implements RawInsProductService { @Resource RawInsProductMapper rawInsProductMapper; @Resource RawInspectMapper rawInspectMapper; //更新检验项目(填写检验值,检验设备) @Override public void updaterawInsProduct(int userId,Integer rpId ,String testValue,Integer devId) { RawInsProduct rawInsProduct = rawInsProductMapper.selectById(rpId); //赋值设备 rawInsProduct.setDeviceId(devId); //赋值检验员id rawInsProduct.setUserId(userId); //判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格0 String required = rawInsProduct.getRequired();//标准值 String internal = rawInsProduct.getInternal();//内控值 rawInsProduct.setTestValue(testValue); List list = Arrays.stream(testValue.split(",")).map(s -> { int values = checkValues(required, internal, s); return values; }).collect(Collectors.toList()); if (list.contains(0)) { //如果其中一个检验值不合格则该项目检验不合格 rawInsProduct.setTestState(0); }else { rawInsProduct.setTestState(1); } /*更新原材料检验项目表*/ rawInsProductMapper.updateById(rawInsProduct); /*更新原材料检验单*/ RawInspect rawInspect = new RawInspect(); rawInspect.setId(rawInsProduct.getRawInspectId()); rawInspect.setInsState(2); rawInspectMapper.updateById(rawInspect); } /*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/ 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; } } } }