package com.ruoyi.basic.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.mapper.StandardMethodListMapper; import com.ruoyi.basic.mapper.StandardProductListMapper; import com.ruoyi.basic.mapper.WorkShopMapper; import com.ruoyi.basic.pojo.StandardMethodList; import com.ruoyi.basic.pojo.StandardProductList; import com.ruoyi.basic.pojo.WorkShop; import com.ruoyi.basic.service.StandardMethodListService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author Administrator * @description 针对表【standard_method_list(标准树下的标准列表)】的数据库操作Service实现 * @createDate 2024-03-04 13:44:04 */ @Service @AllArgsConstructor public class StandardMethodListServiceImpl extends ServiceImpl implements StandardMethodListService{ private StandardMethodListMapper standardMethodListMapper; private StandardProductListMapper standardProductListMapper; @Autowired private WorkShopMapper workShopMapper; @Override public Map> selectsStandardMethodByFLSSM(String tree) { Map> map = new HashMap<>(); String sampleType = ""; // 检验对象 // 拼接树 String[] trees = tree.split(" - "); map.put("standardMethodList", null); if(trees == null && trees.length < 4){ return map; } StringBuilder checkItemQueryTree = new StringBuilder(); // 检查项查询 StringBuilder productTree = new StringBuilder(); // 检验产品树 // 判断是否包含车间 boolean existWorkShopFlag = this.existWorkShop(tree); // 车间层级多一层级 if(existWorkShopFlag){ switch (trees.length) { case 7: sampleType = trees[4]; checkItemQueryTree.append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\",\"").append(trees[6]).append("\""); productTree.append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\""); break; case 6: sampleType = trees[4]; checkItemQueryTree.append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\""); break; case 5: sampleType = trees[4]; checkItemQueryTree.append("\"").append(trees[4]).append("\"").append("]"); break; } }else { switch (trees.length) { case 6: sampleType = trees[3]; checkItemQueryTree.append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\",\"").append(trees[5]).append("\""); productTree.append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\""); break; case 5: sampleType = trees[3]; checkItemQueryTree.append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\""); break; case 4: sampleType = trees[3]; checkItemQueryTree.append("\"").append(trees[3]).append("\"").append("]"); break; } } if(StringUtils.isEmpty(checkItemQueryTree.toString())){ return map; } List standardMethodListArray = standardMethodListMapper.selectStandardMethodLists(checkItemQueryTree.toString()); // 查不到查询检查对象 if(CollectionUtils.isEmpty(standardMethodListArray)){ // 如果是完整层级,向上推到产品层级 if((existWorkShopFlag&&trees.length == 7) || (!existWorkShopFlag&&trees.length == 6)){ standardMethodListArray = standardMethodListMapper.selectStandardMethodLists(productTree.toString()); } // 还是为空查询对象层级 if(CollectionUtils.isEmpty(standardMethodListArray)){ standardMethodListArray = standardMethodListMapper.selectStandardMethodLists(sampleType); } } map.put("standardMethodList", standardMethodListArray); return map; } @Override public List selectStandardMethodEnum() { return standardMethodListMapper.selectListEnum(); } @Override public Integer getStandardMethodId(String code) { return baseMapper.getStandardMethodId(code); } /** * 判断是否包含车间 * * @param tree * @return */ @Override public boolean existWorkShop(String tree){ QueryWrapper queryWrapper = new QueryWrapper<>(); List workShopList = workShopMapper.selectList(queryWrapper); String[] trees = tree.split(" - "); if(trees != null && trees.length > 0){ for (int i = 0; i < trees.length; i++) { for (WorkShop workShop : workShopList) { if(workShop.getName().equals(trees[i].trim())){ return true; } } } } return false; } }