package com.ruoyi.inspect.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONArray;
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.basic.dto.StandardTreeTemplateBindingVo;
|
import com.ruoyi.basic.service.StandardTreeService;
|
import com.ruoyi.inspect.mapper.InsOrderTemplateMapper;
|
import com.ruoyi.inspect.pojo.InsOrderTemplate;
|
import com.ruoyi.inspect.service.InsOrderTemplateService;
|
import com.ruoyi.inspect.vo.InsOrderTemplateDetailVo;
|
import lombok.AllArgsConstructor;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author Administrator
|
* @description 针对表【ins_order_template】的数据库操作Service实现
|
* @createDate 2024-03-18 14:14:54
|
*/
|
@Service
|
@AllArgsConstructor
|
public class InsOrderTemplateServiceImpl extends ServiceImpl<InsOrderTemplateMapper, InsOrderTemplate>
|
implements InsOrderTemplateService {
|
|
private InsOrderTemplateMapper insOrderTemplateMapper;
|
|
private StandardTreeService standardTreeService;
|
|
@Override
|
public int addInsOrderTemplate(InsOrderTemplate insOrderTemplate) {
|
return insOrderTemplateMapper.insert(insOrderTemplate);
|
}
|
|
@Override
|
public List<InsOrderTemplate> selectInsOrderTemplate(String company) {
|
if (ObjectUtils.isEmpty(company) || company.equals("")) {
|
return insOrderTemplateMapper.selectList(Wrappers.<InsOrderTemplate>lambdaQuery()
|
.select(InsOrderTemplate.class, info -> !info.getColumn().equals("thing")));
|
} else {
|
//根据委托单位进行筛选
|
return insOrderTemplateMapper.selectList(Wrappers.<InsOrderTemplate>lambdaQuery()
|
.like(InsOrderTemplate::getThing,"\"company\":\""+ company+"\"")
|
.select(InsOrderTemplate.class, info -> !info.getColumn().equals("thing")));
|
}
|
}
|
|
@Override
|
public InsOrderTemplateDetailVo selectInsOrderTemplateById(Integer id) {
|
InsOrderTemplate template = insOrderTemplateMapper.selectById(id);
|
InsOrderTemplateDetailVo vo = new InsOrderTemplateDetailVo();
|
if (template == null) {
|
vo.setTemplateBindings(new ArrayList<>());
|
return vo;
|
}
|
vo.setThing(template.getThing());
|
// 优先取模板列上持久化的标准ID,历史数据回退到从表单快照 addObj.standardTreeId 解析
|
Integer standardTreeId = template.getStandardTreeId();
|
if (standardTreeId == null) {
|
standardTreeId = parseStandardTreeId(template.getThing());
|
}
|
vo.setStandardTreeId(standardTreeId);
|
if (standardTreeId != null) {
|
List<StandardTreeTemplateBindingVo> bindings = standardTreeService.selectTemplateBindings(standardTreeId);
|
// 新保存的下单模板记录了实际保留的原始记录模板;旧模板没有该字段,沿用标准库绑定列表。
|
JSONObject content = StringUtils.isBlank(template.getThing())
|
? null : JSON.parseObject(template.getThing());
|
JSONArray savedSelections = content == null ? null : content.getJSONArray("templateList");
|
if (savedSelections == null) {
|
vo.setTemplateBindings(bindings == null ? new ArrayList<>() : bindings);
|
} else {
|
Map<Integer, StandardTreeTemplateBindingVo> currentBindings = (bindings == null
|
? new ArrayList<StandardTreeTemplateBindingVo>() : bindings).stream()
|
.collect(Collectors.toMap(StandardTreeTemplateBindingVo::getTemplateId,
|
Function.identity(), (first, ignored) -> first));
|
List<StandardTreeTemplateBindingVo> selected = new ArrayList<>();
|
for (int index = 0; index < savedSelections.size(); index++) {
|
JSONObject selection = savedSelections.getJSONObject(index);
|
if (selection == null) continue;
|
StandardTreeTemplateBindingVo binding = currentBindings.get(selection.getInteger("templateId"));
|
if (binding != null) {
|
binding.setSort(index);
|
selected.add(binding);
|
}
|
}
|
vo.setTemplateBindings(selected);
|
}
|
} else {
|
vo.setTemplateBindings(new ArrayList<>());
|
}
|
return vo;
|
}
|
|
private Integer parseStandardTreeId(String thing) {
|
if (StringUtils.isBlank(thing)) {
|
return null;
|
}
|
try {
|
JSONObject addObj = JSON.parseObject(thing).getJSONObject("addObj");
|
return addObj == null ? null : addObj.getInteger("standardTreeId");
|
} catch (Exception ignored) {
|
return null;
|
}
|
}
|
|
@Override
|
public int delInsOrderTemplate(Integer id) {
|
return insOrderTemplateMapper.deleteById(id);
|
}
|
}
|