From 10de56ca16261e6a4eec49dfd32f0a6b232f7baf Mon Sep 17 00:00:00 2001 From: 晏有为 <13214124+yan-youwei@user.noreply.gitee.com> Date: 星期四, 23 五月 2024 19:05:08 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-after --- cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java | 138 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 134 insertions(+), 4 deletions(-) diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java index d101d18..2e227d8 100644 --- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java +++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java @@ -1,5 +1,8 @@ package com.yuanchu.mom.service.impl; +import cn.hutool.json.JSONUtil; +import cn.hutool.poi.excel.ExcelUtil; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -11,10 +14,11 @@ import com.yuanchu.mom.utils.QueryWrappers; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.IOException; +import java.util.*; /** * @author Administrator @@ -42,7 +46,7 @@ @Override public List<StandardMethod> selectStandardMethods() { - return standardMethodMapper.selectList(Wrappers.<StandardMethod>lambdaQuery().select(StandardMethod::getId,StandardMethod::getCode,StandardMethod::getName)); + return standardMethodMapper.selectList(Wrappers.<StandardMethod>lambdaQuery().select(StandardMethod::getId,StandardMethod::getCode,StandardMethod::getName).ne(StandardMethod::getId, 0)); } @Override @@ -62,6 +66,132 @@ int i = standardMethodMapper.updateById(standardMethod); return i; } + + @Transactional(rollbackFor = Exception.class) + @Override + public void inputExcel(MultipartFile file) throws IOException { + // 瀛樺偍妫�娴嬪璞ist + List<Object> structureTestObjectIdList = new ArrayList<>(); + List<StandardMethod> result = new ArrayList<>(); + ExcelUtil.readBySax(file.getInputStream(), 0, (i, l, list) -> { + // 鍘婚櫎绗竴琛岃〃澶� + if (l == 0) { + return; + } + // 瀛樺偍鍞竴妫�娴嬪璞� + if (!structureTestObjectIdList.contains(list.get(2))) { + structureTestObjectIdList.add(list.get(2)); + } + StandardMethod standardMethod = formatData(list); + result.add(standardMethod); + }); + addStructureTest(structureTestObjectIdList, result); + } + + // 鏍煎紡鍖栨暟鎹� + public StandardMethod formatData(List<Object> list) { + StandardMethod standardMethod = new StandardMethod(); + standardMethod.setField(list.get(1).toString()); + // 閫犳牸寮� + List<List<Object>> structureTestObjectId = new ArrayList<>(); + if (ObjectUtils.isEmpty(list.get(3))){ + structureTestObjectId.add(Arrays.asList(list.get(2))); + } else { + structureTestObjectId.add(Arrays.asList(list.get(2), list.get(3))); + } + standardMethod.setStructureTestObjectId(JSONUtil.toJsonStr(structureTestObjectId)); + standardMethod.setCode(list.get(4).toString()); + standardMethod.setName(list.get(5).toString()); + standardMethod.setNameEn(list.get(6).toString()); + if (!Objects.equals(list.get(7), null)) { + standardMethod.setRemark(list.get(7).toString()); + } + standardMethod.setQualificationId(list.get(8).toString()); + if (ObjectUtils.isNotEmpty(list.get(9))) { + if (list.get(9).equals("鏄�")) { + standardMethod.setIsProduct(1); + } else if (list.get(9).equals("鍚�")) { + standardMethod.setIsProduct(0); + } + } + if (ObjectUtils.isNotEmpty(list.get(10))) { + if (list.get(10).equals("鏄�")) { + standardMethod.setIsUse(1); + } else if (list.get(9).equals("鍚�")) { + standardMethod.setIsUse(0); + } + } + return standardMethod; + } + + // 鏂板鏁版嵁 + public void addStructureTest(List<Object> structureTestObjectIdList, List<StandardMethod> standardMethodList) { + List<StandardMethod> updateList = new ArrayList<>(); + List<Integer> deleteListId = new ArrayList<>(); + List<StandardMethod> addList = new ArrayList<>(); + if (!structureTestObjectIdList.isEmpty()) { + // 寰幆excel閲岄潰鐨勫垎缁� + structureTestObjectIdList.forEach(j -> { + // 浠xcel涓殑缁勫悕鏌ヨ鏁版嵁搴撲腑鐨勫垎缁� + List<StandardMethod> standardMethods = baseMapper.selectList(Wrappers.<StandardMethod>lambdaQuery() + .like(StandardMethod::getStructureTestObjectId, "\"" + j + "\"")); + // 灏嗙粨鏋滃惊鐜尮閰� + for (int i = 0; i < standardMethods.size(); i++) { + boolean isExistence = false; + for (int i1 = 0; i1 < standardMethodList.size(); i1++) { + // 鏇存柊 + if (standardMethods.get(i).getStructureTestObjectId().equals(standardMethodList.get(i1).getStructureTestObjectId()) + && standardMethods.get(i).getCode().equals(standardMethodList.get(i1).getCode()) + && standardMethods.get(i).getField().equals(standardMethodList.get(i1).getField())) { + // 缁檈xcel鏁版嵁璧嬪�糹d鍋氭洿鏂� + standardMethodList.get(i1).setId(standardMethods.get(i).getId()); + // 鏇存柊 + updateList.add(standardMethodList.get(i1)); + isExistence = true; + break; + } + } + // 鍒犻櫎 + if (!isExistence) { + deleteListId.add(standardMethods.get(i).getId()); + } + } + for (int i = 0; i < standardMethodList.size(); i++) { + if (standardMethodList.get(i).getStructureTestObjectId().contains("\"" + j + "\"")) { + boolean isExistence = false; + for (int i1 = 0; i1 < standardMethods.size(); i1++) { + if (standardMethods.get(i1).getStructureTestObjectId().equals(standardMethodList.get(i).getStructureTestObjectId()) + && standardMethods.get(i1).getCode().equals(standardMethodList.get(i).getCode()) + && standardMethods.get(i1).getField().equals(standardMethodList.get(i).getField())) { + isExistence = true; + break; + } + } + // 鏂板 + if (!isExistence) { + addList.add(standardMethodList.get(i)); + } + } + } + }); + } + if (!addList.isEmpty()) { + // 鏂板 + baseMapper.insertBatchSomeColumn(addList); + } + + if (!deleteListId.isEmpty()) { + // 鍒犻櫎 + baseMapper.deleteBatchIds(deleteListId); + } + + if (!updateList.isEmpty()) { + // 鏇存柊 + updateList.forEach(i -> { + baseMapper.updateById(i); + }); + } + } } -- Gitblit v1.9.3