package com.yuanchu.mom.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.yuanchu.mom.pojo.Device;
|
import com.yuanchu.mom.pojo.InspectionItem;
|
import com.yuanchu.mom.mapper.InspectionItemMapper;
|
import com.yuanchu.mom.pojo.dto.InspectionItemDto;
|
import com.yuanchu.mom.pojo.dto.UpdateInspectionItemDto;
|
import com.yuanchu.mom.service.DeviceService;
|
import com.yuanchu.mom.service.InspectionItemService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.yuanchu.mom.service.SpecificationsService;
|
import com.yuanchu.mom.utils.JackSonUtil;
|
import com.yuanchu.mom.utils.MyUtil;
|
import io.swagger.annotations.ApiModelProperty;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author 江苏鵷雏网络科技有限公司
|
* @since 2023-08-01
|
*/
|
@Service
|
public class InspectionItemServiceImpl extends ServiceImpl<InspectionItemMapper, InspectionItem> implements InspectionItemService {
|
|
@Resource
|
private InspectionItemMapper inspectionItemMapper;
|
|
@Autowired
|
private DeviceService deviceService;
|
|
@Override
|
public void insertList(Integer finishInspectId, List<Map<String, Object>> list) {
|
List<InspectionItem> list1 = new ArrayList<>();
|
for (Map<String, Object> map : list){
|
try {
|
InspectionItem inspectionItem = JackSonUtil.unmarshal(JackSonUtil.marshal(map), InspectionItem.class);
|
inspectionItem.setFinishInspectId(finishInspectId);
|
list1.add(inspectionItem);
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
}
|
inspectionItemMapper.insertBatchSomeColumn(list1);
|
}
|
|
@Override
|
public List<InspectionItemDto> selectInspectionItem(Integer finishInspectId) {
|
return inspectionItemMapper.selectInspectionItem(finishInspectId);
|
}
|
|
@Override
|
public Integer addProcessInspectionSheet(String username, UpdateInspectionItemDto updateInspectionItemDto) {
|
LambdaUpdateWrapper<InspectionItem> wrapper = new LambdaUpdateWrapper<>();
|
wrapper.eq(InspectionItem::getId, updateInspectionItemDto.getInspectionItemId());
|
wrapper.set(InspectionItem::getInspectionValue, updateInspectionItemDto.getInspectionValue());
|
wrapper.set(InspectionItem::getDeviceId, updateInspectionItemDto.getDeviceId());
|
int i = checkValues(updateInspectionItemDto.getRequired(), updateInspectionItemDto.getInternal(), updateInspectionItemDto.getInspectionValue());
|
wrapper.set(InspectionItem::getResult, i);
|
wrapper.set(InspectionItem::getUsername, username);
|
int update = inspectionItemMapper.update(new InspectionItem(), wrapper);
|
if (update > 0){
|
return i;
|
}
|
return 2;
|
}
|
|
@Override
|
public List<Map<String, Object>> selectDeviceIdAndName() {
|
LambdaQueryWrapper<Device> wrapper = new LambdaQueryWrapper<>();
|
wrapper.select(Device::getId, Device::getName);
|
return deviceService.listMaps(wrapper);
|
}
|
|
/*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/
|
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.equals(standardValue);
|
case "≥":
|
return detectionValue >= standardValue;
|
case "≤":
|
return detectionValue <= standardValue;
|
default:
|
return false;
|
}
|
}
|
}
|
}
|