liding
2 天以前 bd46f203b0d30a3d33b7c51ae9a528e4807477e1
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
@@ -7,12 +7,18 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.StandardProductListMapper;
import com.ruoyi.basic.pojo.StandardProductList;
import com.ruoyi.basic.utils.StandardTreePathParser;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.InsProductBindingDto;
import com.ruoyi.inspect.dto.WriteInspectionConditionDto;
import com.ruoyi.inspect.mapper.InsOrderMapper;
import com.ruoyi.inspect.mapper.InsOrderStandardTemplateMapper;
import com.ruoyi.inspect.mapper.InsOrderTemplateDeviceMapper;
import com.ruoyi.inspect.mapper.InsProductMapper;
import com.ruoyi.inspect.mapper.InsSampleMapper;
import com.ruoyi.inspect.pojo.InsOrder;
import com.ruoyi.inspect.pojo.InsOrderStandardTemplate;
import com.ruoyi.inspect.pojo.InsOrderTemplateDevice;
import com.ruoyi.inspect.pojo.InsProduct;
import com.ruoyi.inspect.pojo.InsSample;
import com.ruoyi.inspect.service.InsProductService;
@@ -39,6 +45,10 @@
    private StandardProductListMapper standardProductListMapper;
    private InsOrderStandardTemplateMapper insOrderStandardTemplateMapper;
    private InsOrderTemplateDeviceMapper insOrderTemplateDeviceMapper;
    @Override
    public int selectOrderManDay(Integer orderId) {
        return insProductMapper.selectOrderManDay(orderId);
@@ -54,7 +64,69 @@
    }
    @Override
    public boolean write(InsOrder insOrder) {
    public boolean write(WriteInspectionConditionDto dto) {
        if (dto == null || dto.getId() == null) {
            throw new ErrorException("订单ID不能为空");
        }
        if (dto.getTemplateId() != null) {
            InsOrderStandardTemplate snapshot = insOrderStandardTemplateMapper.selectOne(
                    Wrappers.<InsOrderStandardTemplate>lambdaQuery()
                            .eq(InsOrderStandardTemplate::getInsOrderId, dto.getId())
                            .eq(InsOrderStandardTemplate::getTemplateId, dto.getTemplateId())
                            .last("limit 1"));
            if (snapshot == null) {
                throw new ErrorException("未找到当前模板的原始记录快照");
            }
            boolean hasSnapshotField = dto.isTemperaturePresent() || dto.isHumidityPresent()
                    || dto.isDetectionTimePresent() || dto.isDetectionPlacePresent()
                    || dto.isInsResultPresent();
            if (hasSnapshotField) {
                insOrderStandardTemplateMapper.update(null,
                        Wrappers.<InsOrderStandardTemplate>lambdaUpdate()
                                .eq(InsOrderStandardTemplate::getId, snapshot.getId())
                                .set(dto.isTemperaturePresent(),
                                        InsOrderStandardTemplate::getTemperature, dto.getTemperature())
                                .set(dto.isHumidityPresent(),
                                        InsOrderStandardTemplate::getHumidity, dto.getHumidity())
                                .set(dto.isDetectionTimePresent(),
                                        InsOrderStandardTemplate::getDetectionTime, dto.getDetectionTime())
                                .set(dto.isDetectionPlacePresent(),
                                        InsOrderStandardTemplate::getDetectionPlace, dto.getDetectionPlace())
                                .set(dto.isInsResultPresent(),
                                        InsOrderStandardTemplate::getInsResult, dto.getInsResult()));
            }
            if (dto.isDeviceIdsPresent()) {
                insOrderTemplateDeviceMapper.delete(
                        Wrappers.<InsOrderTemplateDevice>lambdaQuery()
                                .eq(InsOrderTemplateDevice::getInsOrderId, dto.getId())
                                .eq(InsOrderTemplateDevice::getTemplateId, dto.getTemplateId()));
                List<Integer> deviceIds = dto.getDeviceIds() == null
                        ? Collections.emptyList()
                        : dto.getDeviceIds().stream()
                                .filter(Objects::nonNull)
                                .distinct()
                                .collect(Collectors.toList());
                if (!deviceIds.isEmpty()
                        && insOrderTemplateDeviceMapper.selectExistingDeviceIds(deviceIds).size() != deviceIds.size()) {
                    throw new ErrorException("所选设备不存在,请刷新设备列表后重试");
                }
                for (int index = 0; index < deviceIds.size(); index++) {
                    InsOrderTemplateDevice relation = new InsOrderTemplateDevice();
                    relation.setInsOrderId(dto.getId());
                    relation.setTemplateId(dto.getTemplateId());
                    relation.setDeviceId(deviceIds.get(index));
                    relation.setSort(index);
                    insOrderTemplateDeviceMapper.insert(relation);
                }
            }
            if (!hasSnapshotField && !dto.isDeviceIdsPresent()) {
                throw new ErrorException("没有需要保存的模板检验条件");
            }
            return true;
        }
        InsOrder insOrder = new InsOrder();
        insOrder.setId(dto.getId());
        insOrder.setRemark(dto.getRemark());
        insOrderMapper.updateById(insOrder);
        return true;
    }
@@ -118,11 +190,18 @@
    public List<InsProduct> getProductTreeByProductId(Integer productId) {
        // 查询检验项信息
        InsProduct insProduct = insProductMapper.selectById(productId);
        String tree = insProduct.getFactory() + " - " +
                insProduct.getLaboratory() + " - " +
                insProduct.getSampleType() + " - " +
                insProduct.getSample() + " - " +
                insProduct.getModel();
        String tree;
        if (insProduct.getSampleType() == null && insProduct.getModel() == null
                && StringUtils.isNotBlank(insProduct.getLaboratory())
                && StringUtils.isNotBlank(insProduct.getSample())) {
            tree = StandardTreePathParser.canonical(insProduct.getLaboratory(), insProduct.getSample());
        } else {
            tree = insProduct.getFactory() + " - " +
                    insProduct.getLaboratory() + " - " +
                    insProduct.getSampleType() + " - " +
                    insProduct.getSample() + " - " +
                    insProduct.getModel();
        }
        // 查询标准树
        List<StandardProductList> standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
                .eq(StandardProductList::getStandardMethodListId, insProduct.getStandardMethodListId())
@@ -135,7 +214,8 @@
            product.setTemplate(null);
            product.setStyle(null);
            return product;
        }).collect(Collectors.toList());
        }).sorted((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort())
                - (o2.getSort() == null ? 0 : o2.getSort())).collect(Collectors.toList());
        return insProducts;
    }
@@ -214,6 +294,20 @@
        return false;
    }
    @Override
    public List<InsProduct> getRevocationInsProductList(Integer orderId) {
        InsOrder insOrder = insOrderMapper.selectById(orderId);
        if(Objects.isNull(insOrder)){
            throw new RuntimeException("未找到该订单");
        }
        String revocationInsProductIds = insOrder.getRevocationInsProductIds();
        List<Integer> ids = new ArrayList<>();
        if(StringUtils.isNotBlank(revocationInsProductIds)){
            ids = Arrays.asList(revocationInsProductIds.split(",")).stream().map(Integer::parseInt).collect(Collectors.toList());
        }
        return baseMapper.getRevocationInsProductList(ids);
    }
}