package com.yuanchu.mom.controller; import cn.hutool.core.util.ObjectUtil; import cn.hutool.poi.excel.ExcelUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.annotation.ValueAuth; import com.yuanchu.mom.annotation.ValueClassify; import com.yuanchu.mom.dto.PageTestObjectDto; import com.yuanchu.mom.excel.StructureTestObjectData; import com.yuanchu.mom.excel.StructureTestObjectListener; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.pojo.*; import com.yuanchu.mom.service.*; import com.yuanchu.mom.utils.JackSonUtil; import com.yuanchu.mom.vo.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; /** * 检验项目参数(StructureItemParameter)表控制层 * * @author makejava * @since 2024-02-26 16:21:17 */ @Api(tags = "能力范围") @AllArgsConstructor @RestController @RequestMapping("/capacityScope") public class CapacityScopeController { private CapacityScopeService capacityScopeService; private ProductService productService; private StructureItemParameterService structureItemParameterService; private StandardTemplateService standardTemplateService; @ValueClassify("能力范围") @ApiOperation(value = "获取项目检验参数列表") @PostMapping("/selectItemParameterList") public Result selectItemParameterList(@RequestBody Map data) throws Exception { Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class); StructureItemParameter itemParameter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), StructureItemParameter.class); return Result.success(capacityScopeService.selectItemParameterList(page, itemParameter)); } @ValueClassify("能力范围") @ApiOperation(value = "添加项目检验参数") @PostMapping("/addItemParameter") public Result addItemParameter(@RequestBody StructureItemParameter itemParameter) { return Result.success(capacityScopeService.addItemParameter(itemParameter)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "删除项目检验参数") @PostMapping("/delItemParameter") public Result delItemParameter(Integer id) { return Result.success(capacityScopeService.delItemParameter(id)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "修改项目检验参数") @PostMapping("/upItemParameter") public Result upItemParameter(@RequestBody StructureItemParameter itemParameter) { return Result.success(capacityScopeService.upItemParameter(itemParameter)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "获取检验对象") @PostMapping("/selectTestObjectList") public Result selectTestObjectList(@RequestBody Map data) throws Exception { Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class); PageTestObjectDto pageTestObjectDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), PageTestObjectDto.class); return Result.success(capacityScopeService.selectTestObjectList(page, pageTestObjectDto)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "添加检验对象") @PostMapping("/addTestObject") public Result addTestObject(@RequestBody StructureTestObject testObject) { return Result.success(capacityScopeService.addTestObject(testObject)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "删除检验对象") @PostMapping("/delTestObject") public Result delTestObject(Integer id) { return Result.success(capacityScopeService.delTestObject(id)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "修改检验对象") @PostMapping("/upTestObject") public Result upTestObject(@RequestBody StructureTestObject testObject) { return Result.success(capacityScopeService.upTestObject(testObject)); } @ValueAuth @ApiOperation(value = "获取检验对象枚举") @GetMapping("/selectTestObjectByName") public Result selectTestObjectByName() { return Result.success(capacityScopeService.selectTestObjectByName()); } @ValueAuth @ApiOperation(value = "设备里面选择检验项目(树形结构)") @PostMapping("/getInsProduction") public Result getInsProduction() { return Result.success(capacityScopeService.getInsProduction()); } @ValueClassify(value = "能力范围") @ApiOperation(value = "维护检验对象的产品") @PostMapping("/selectProductListByObjectId") public Result selectProductListByObjectId(@RequestBody Map data) throws Exception { Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class); Product product = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), Product.class); return Result.success(productService.selectProductListByObjectId(page, product)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "添加产品") @PostMapping("/addProduct") public Result addProduct(@RequestBody Product product) { return Result.success(productService.addProduct(product)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "修改产品") @PostMapping("/upProduct") public Result upProduct(@RequestBody Product product) { return Result.success(productService.upProduct(product)); } @ValueClassify(value = "能力范围") @ApiOperation(value = "删除产品") @PostMapping("/delProduct") public Result delProduct(Integer id) { return Result.success(productService.delProduct(id)); } @ApiOperation(value = "获取检验对象树") @GetMapping("/getItemTree") @ValueAuth public Result getItemTree() { return Result.success(capacityScopeService.getItemTree()); } @Autowired private EnumService enumService; @ValueClassify(value = "能力范围") @ApiOperation(value = "导入检验项目") @PostMapping("/importData") @Transactional public Result importData(@RequestParam("file") MultipartFile file) throws Exception { InputStream inputStream = file.getInputStream(); List lists = new ArrayList<>(); AtomicReference sample = new AtomicReference<>(); ExcelUtil.readBySax(inputStream, -1, (i, l, list1) -> { if (l == 1) { sample.set(list1.get(1) + ""); } if (l >= 1) { StructureItemParameter str = new StructureItemParameter(); if (list1.get(1) == null) { str.setSample(null); } else { String brand = (String) list1.get(1); StringBuilder builder = new StringBuilder(); builder.append("["); if (ObjectUtil.isNotEmpty(list1.get(2))) { String production = (String) list1.get(2); if (!production.contains("、")) { builder.append(String.format("[\"%s\",\"%s\"]", brand, production)); } else { Arrays.stream(production.split("、")).forEach(item -> { builder.append(String.format("[\"%s\",\"%s\"],", brand, item)); }); builder.deleteCharAt(builder.length() - 1); } } else { builder.append("["); builder.append(String.format("\"%s\"", brand)); builder.append("]"); } builder.append("]"); str.setSample(builder.toString()); } str.setInspectionItem(list1.get(4).toString()); if (list1.get(5) != null) { str.setInspectionItemEn(list1.get(5).toString()); } if (list1.get(6) == null) { str.setInspectionItemSubclass(null); } else { str.setInspectionItemSubclass(list1.get(6).toString()); } if (list1.get(7) == null) { str.setInspectionItemSubclassEn(null); } else { str.setInspectionItemSubclassEn(String.valueOf(list1.get(7).toString())); } StructureItemParameter db_str; if (StringUtils.isEmpty(str.getInspectionItemSubclass())) { // 比较两个条件 try { db_str = structureItemParameterService.getOne(Wrappers.lambdaQuery(StructureItemParameter.class) .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem()) .eq(StructureItemParameter::getSample, str.getSample()) .last("limit 1") ); } catch (Exception e) { throw new ErrorException("重复查询:" + str.getInspectionItem()); } } else { try { db_str = structureItemParameterService.getOne(Wrappers.lambdaQuery(StructureItemParameter.class) .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem()) .eq(StructureItemParameter::getSample, str.getSample()) .eq(StructureItemParameter::getInspectionItemSubclass, str.getInspectionItemSubclass()) .last("limit 1") ); } catch (Exception e) { throw new ErrorException("重复查询:" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); } } if (ObjectUtils.isNotEmpty(db_str)) { str.setId(db_str.getId()); } if (list1.get(8) == null) { str.setMethod(null); } else { StringBuffer buffer = new StringBuffer(); String input = list1.get(8).toString(); buffer.append("["); String[] values = input.split("、"); for (String value : values) { buffer.append("\"").append(value.trim()).append("\","); } buffer.deleteCharAt(buffer.length() - 1); buffer.append("]"); str.setMethod(buffer.toString()); } if (list1.get(9) == null) { str.setSonLaboratory(null); } else { str.setSonLaboratory(list1.get(9).toString()); } if (list1.get(10) == null) { str.setUnit(null); } else { str.setUnit(list1.get(10).toString()); } if (list1.get(11) == null) { str.setAskTell(null); } else { str.setAskTell(list1.get(11).toString()); } if (list1.get(12) == null) { str.setAsk(null); } else { str.setAsk(list1.get(12).toString()); } if (list1.get(13) == null) { str.setPrice(null); } else { str.setPrice(list1.get(13) + ""); } if (list1.get(14) == null) { str.setManHour(null); } else { str.setManHour(Double.valueOf(list1.get(14).toString())); } if (list1.get(15) == null) { str.setManHourGroup(null); } else { str.setManHourGroup(list1.get(15).toString()); } if (list1.get(16) == null) { str.setManDay(null); } else { str.setManDay(Integer.valueOf(list1.get(16).toString())); } String jy; if (list1.get(17).toString().equals("非采集类型")) { jy = "0"; } else { jy = "1"; } str.setInspectionItemType(jy); String validateValueType = list1.get(18).toString(); if (StringUtils.isNotBlank(validateValueType)) { Enums enums = enumService.getOne(Wrappers.lambdaQuery(Enums.class) .eq(Enums::getCategory, "检验值类型") .eq(Enums::getLabel, validateValueType)); str.setInspectionValueType(enums.getValue()); } int bsm; if (list1.get(19).toString().equals("否")) { bsm = 0; } else { bsm = 1; } str.setBsm(bsm + ""); if (list1.get(20) != null) { str.setDic(list1.get(20) + ""); } else { str.setDic(null); } StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list1.get(21))); if (standTempIdByName != null) { str.setTemplateId(standTempIdByName.getId()); } else { str.setTemplateId(null); } try { if (list1.get(22) != null && list1.get(22) != "") { str.setInspectionItemClass(list1.get(22) + ""); } else { str.setInspectionItemClass(null); } } catch (Exception e) { } try { if (list1.get(23) != null && list1.get(23) != "") { str.setInspectionItemClassEn(list1.get(23) + ""); } else { str.setInspectionItemClassEn(null); } } catch (Exception e) { } try { if (list1.get(24) != null) { str.setLaboratory(list1.get(24) + ""); } } catch (Exception e) { } lists.add(str); } }); // structureItemParameterService.removeNoSample(sample.get()); // 如果数据库里面的数据存在那么就执行更新拷贝操作 try { structureItemParameterService.saveOrUpdateBatch(lists); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("服务端报错啦!!!"); } return Result.success(); } @ValueClassify(value = "能力范围") @ApiOperation(value = "装备导入检验项目") @PostMapping("/importEquipData") @Transactional public Result importEquipData(@RequestParam("file") MultipartFile file) throws Exception { InputStream inputStream = file.getInputStream(); List lists = new ArrayList<>(); AtomicReference sample = new AtomicReference<>(); ExcelUtil.readBySax(inputStream, -1, (i, l, list1) -> { if (l == 1) { sample.set(list1.get(1) + ""); } if (l >= 1) { StructureItemParameter str = new StructureItemParameter(); if (list1.get(1) == null) { str.setSample(null); } else { String brand = (String) list1.get(1); StringBuilder builder = new StringBuilder(); builder.append("["); if (ObjectUtil.isNotEmpty(list1.get(2))) { String production = (String) list1.get(2); if (!production.contains(";")) { builder.append(String.format("[\"%s\",\"%s\"]", brand, production)); } else { Arrays.stream(production.split(";")).forEach(item -> { builder.append(String.format("[\"%s\",\"%s\"],", brand, item)); }); builder.deleteCharAt(builder.length() - 1); } } else { builder.append("["); builder.append(String.format("\"%s\"", brand)); builder.append("]"); } builder.append("]"); str.setSample(builder.toString()); } str.setInspectionItem(list1.get(4).toString()); if (list1.get(5) != null) { str.setInspectionItemEn(list1.get(5).toString()); } if (list1.get(6) == null) { str.setInspectionItemSubclass(null); } else { str.setInspectionItemSubclass(list1.get(6).toString()); } if (list1.get(7) == null) { str.setInspectionItemSubclassEn(null); } else { str.setInspectionItemSubclassEn(String.valueOf(list1.get(7).toString())); } StructureItemParameter db_str; if (StringUtils.isEmpty(str.getInspectionItemSubclass())) { // 比较两个条件 try { db_str = structureItemParameterService.getOne(Wrappers.lambdaQuery(StructureItemParameter.class) .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem()) .eq(StructureItemParameter::getSample, str.getSample()) .last("limit 1") ); } catch (Exception e) { throw new ErrorException("重复查询:" + str.getInspectionItem()); } } else { try { db_str = structureItemParameterService.getOne(Wrappers.lambdaQuery(StructureItemParameter.class) .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem()) .eq(StructureItemParameter::getSample, str.getSample()) .eq(StructureItemParameter::getInspectionItemSubclass, str.getInspectionItemSubclass()) .last("limit 1") ); } catch (Exception e) { throw new ErrorException("重复查询:" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); } } if (ObjectUtils.isNotEmpty(db_str)) { str.setId(db_str.getId()); } if (list1.get(8) == null) { str.setMethod(null); } else { StringBuffer buffer = new StringBuffer(); String input = list1.get(8).toString(); buffer.append("["); String[] values = input.split(";"); for (String value : values) { buffer.append("\"").append(value.trim()).append("\","); } buffer.deleteCharAt(buffer.length() - 1); buffer.append("]"); str.setMethod(buffer.toString()); } if (list1.get(9) == null) { str.setSonLaboratory(null); } else { str.setSonLaboratory(list1.get(9).toString()); } if (list1.get(10) == null) { str.setUnit(null); } else { str.setUnit(list1.get(10).toString()); } if (list1.get(11) == null) { str.setAskTell(null); } else { str.setAskTell(list1.get(11).toString()); } if (list1.get(12) == null) { str.setAsk(null); } else { str.setAsk(list1.get(12).toString()); } if (list1.get(13) == null) { str.setPrice(null); } else { str.setPrice(list1.get(13) + ""); } if (list1.get(14) == null) { str.setManHour(null); } else { str.setManHour(Double.valueOf(list1.get(14).toString())); } if (list1.get(15) == null) { str.setManHourGroup(null); } else { str.setManHourGroup(list1.get(15).toString()); } if (list1.get(16) == null) { str.setManDay(null); } else { str.setManDay(Integer.valueOf(list1.get(16).toString())); } String jy; if (list1.get(17).toString().equals("非采集类型")) { jy = "0"; } else { jy = "1"; } str.setInspectionItemType(jy); String validateValueType = list1.get(18).toString(); if (StringUtils.isNotBlank(validateValueType)) { Enums enums = enumService.getOne(Wrappers.lambdaQuery(Enums.class) .eq(Enums::getCategory, "检验值类型") .eq(Enums::getLabel, validateValueType)); str.setInspectionValueType(enums.getValue()); } int bsm; if (list1.get(19).toString().equals("否")) { bsm = 0; } else { bsm = 1; } str.setBsm(bsm + ""); if (list1.get(20) != null) { str.setDic(list1.get(20) + ""); } else { str.setDic(null); } StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list1.get(21))); if (standTempIdByName != null) { str.setTemplateId(standTempIdByName.getId()); } else { str.setTemplateId(null); } try { if (list1.get(22) != null && list1.get(22) != "") { str.setInspectionItemClass(list1.get(22) + ""); } else { str.setInspectionItemClass(null); } } catch (Exception e) { } try { if (list1.get(23) != null && list1.get(23) != "") { str.setInspectionItemClassEn(list1.get(23) + ""); } else { str.setInspectionItemClassEn(null); } } catch (Exception e) { } try { if (list1.get(24) != null) { str.setLaboratory(list1.get(24) + ""); } } catch (Exception e) { } lists.add(str); } }); structureItemParameterService.removeNoSample(sample.get()); // 如果数据库里面的数据存在那么就执行更新拷贝操作 try { structureItemParameterService.saveOrUpdateBatch(lists); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("服务端报错啦!!!"); } return Result.success(); } @ValueClassify(value = "能力范围") @ApiOperation(value = "导入检验对象") @PostMapping("/importExcel") public Result importExcel(@RequestParam("file") MultipartFile file) { try { EasyExcel.read(file.getInputStream(), StructureTestObjectData.class, new StructureTestObjectListener(productService)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } return Result.success(); } }