From db504ee3159dfe3ebfb407e66ef9d46bac5caadb Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期四, 23 五月 2024 16:47:40 +0800 Subject: [PATCH] 2024-5-23 导入标准明细完成 --- cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java | 6 + cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java | 5 - cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java | 10 +++ cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java | 136 ++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 149 insertions(+), 8 deletions(-) diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java index 072928d..d8c5d3f 100644 --- a/cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java +++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java @@ -11,7 +11,9 @@ import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Map; @Api(tags = "鏍囧噯鏂规硶") @@ -55,4 +57,12 @@ public Result<?> upStandardMethod(@RequestBody StandardMethod standardMethod) { return Result.success(standardMethodService.upStandardMethod(standardMethod)); } + + @ValueClassify("瀹為獙瀹ょ殑妫�娴嬭兘鍔涙。妗�") + @ApiOperation(value = "瀵煎叆鏍囧噯鏄庣粏") + @PostMapping("/inputFansSubmitCsv") + public Result<?> inputExcel(@RequestPart("file") MultipartFile file) throws IOException { + standardMethodService.inputExcel(file); + return Result.success(); + } } diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java index 9fcddc7..065b6b1 100644 --- a/cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java +++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java @@ -3,9 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yuanchu.mom.mybatis_config.MyBaseMapper; import com.yuanchu.mom.pojo.StandardMethod; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yuanchu.mom.pojo.StructureItemParameter; /** * @author Administrator @@ -13,7 +12,7 @@ * @createDate 2024-03-03 19:21:41 * @Entity com.yuanchu.mom.pojo.StandardMethod */ -public interface StandardMethodMapper extends BaseMapper<StandardMethod> { +public interface StandardMethodMapper extends MyBaseMapper<StandardMethod> { IPage<StandardMethod> selectStandardMethodList(Page page, QueryWrapper<StandardMethod> ew); diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java index 8bfb29f..7f7d8fb 100644 --- a/cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java +++ b/cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java @@ -1,10 +1,11 @@ package com.yuanchu.mom.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yuanchu.mom.pojo.StandardMethod; import com.baomidou.mybatisplus.extension.service.IService; -import com.yuanchu.mom.pojo.StructureItemParameter; +import com.yuanchu.mom.pojo.StandardMethod; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -25,4 +26,5 @@ int upStandardMethod(StandardMethod standardMethod); + void inputExcel(MultipartFile file) throws IOException; } 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 146faef..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 @@ -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