package com.yuanchu.mom.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
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.sql.Wrapper;
|
import java.util.Arrays;
|
import java.util.Date;
|
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<RawInsProductMapper, RawInsProduct> 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);
|
if (testValue.equals("过")){
|
rawInsProduct.setTestState(1);
|
}else if (testValue.equals("不过")){
|
rawInsProduct.setTestState(0);
|
}else {
|
char req = required.charAt(0);
|
List<Integer> list = Arrays.stream(testValue.split(",")).map(s -> {
|
int values=2;
|
if (req == '>' || req == '<' || req == '=') {
|
values = checkValues(required, internal, s);
|
}else {
|
values = conValues(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());
|
rawInspectMapper.updateById(rawInspect);
|
}
|
|
//只更改设备,之前的检验值删掉
|
@Override
|
public void updateDevByRpId(Integer rpId, Integer devId) {
|
LambdaUpdateWrapper<RawInsProduct> updateWrapper = Wrappers.<RawInsProduct>lambdaUpdate()
|
.eq(RawInsProduct::getId, rpId)
|
.set(RawInsProduct::getDeviceId, devId)
|
.set(RawInsProduct::getTestState, null)
|
.set(RawInsProduct::getTestValue, null);
|
rawInsProductMapper.update(new RawInsProduct(), updateWrapper);
|
}
|
|
/*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/
|
//如果是±的操作
|
private int conValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
|
double standVar = Double.parseDouble(standardValueStr);
|
double controlVar = Double.parseDouble(controlValueStr);
|
double detecVar = Double.parseDouble(detectionValueStr);
|
double a = standVar + controlVar;
|
double b = standVar - controlVar;
|
if (detecVar >= b && detecVar <= a) {
|
return 1;
|
}
|
return 0;
|
}
|
//如果是> , < ,=的操作
|
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;
|
}
|
}
|
}
|
|
}
|