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; /** *

* 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2023-08-01 */ @Service public class InspectionItemServiceImpl extends ServiceImpl implements InspectionItemService { @Resource private InspectionItemMapper inspectionItemMapper; @Autowired private DeviceService deviceService; @Override public void insertList(Integer finishInspectId, List> list) { List list1 = new ArrayList<>(); for (Map 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 selectInspectionItem(Integer finishInspectId) { return inspectionItemMapper.selectInspectionItem(finishInspectId); } @Override public Integer addProcessInspectionSheet(String username, UpdateInspectionItemDto updateInspectionItemDto) { LambdaUpdateWrapper 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> selectDeviceIdAndName() { LambdaQueryWrapper 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; } } } }