From e09853e7e9fd13d53e5aeac1fed5560393bef240 Mon Sep 17 00:00:00 2001 From: whb <17803890193@163.com> Date: Tue, 3 Sep 2024 17:26:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=86=99=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?Excel=E5=AF=BC=E5=85=A5=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataRoom/dataroom-core/pom.xml | 5 + .../controller/NeUploadExcelController.java | 96 +++ .../controller/NewCategoryController.java | 97 +++ .../module/manage/dao/NeUploadExcelDao.java | 20 + .../module/manage/dao/NewCategoryDao.java | 18 + .../module/manage/dto/CategorySearchDTO.java | 15 + .../core/module/manage/dto/DatasetDTO.java | 15 + .../module/manage/dto/DatasetEntityDTO.java | 21 + .../module/manage/entity/CategoryEntity.java | 15 + .../manage/entity/StuUploadExcelUser.java | 586 ++++++++++++++++++ .../manage/service/NeUploadExcelService.java | 13 + .../manage/service/NewCategoryService.java | 60 ++ .../impl/NeUploadExcelServiceImpl.java | 20 + .../service/impl/NewCategoryServiceImpl.java | 140 +++++ .../type/controller/TypeController.java | 5 + .../dataroom/core/utils/DemoDataListener.java | 149 +++++ .../resources/mapper/NeUploadExcelDao.xml | 41 ++ 17 files changed, 1316 insertions(+) create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NeUploadExcelController.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NewCategoryController.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dao/NeUploadExcelDao.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dao/NewCategoryDao.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/CategorySearchDTO.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DatasetDTO.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DatasetEntityDTO.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/entity/CategoryEntity.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/entity/StuUploadExcelUser.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/NeUploadExcelService.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/NewCategoryService.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/NeUploadExcelServiceImpl.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/NewCategoryServiceImpl.java create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/utils/DemoDataListener.java create mode 100644 DataRoom/dataroom-core/src/main/resources/mapper/NeUploadExcelDao.xml diff --git a/DataRoom/dataroom-core/pom.xml b/DataRoom/dataroom-core/pom.xml index fffe1da7..6256d932 100644 --- a/DataRoom/dataroom-core/pom.xml +++ b/DataRoom/dataroom-core/pom.xml @@ -90,6 +90,11 @@ jsch ${jsch.version} + + com.alibaba + easyexcel + 3.2.1 + diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NeUploadExcelController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NeUploadExcelController.java new file mode 100644 index 00000000..63d02cfc --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NeUploadExcelController.java @@ -0,0 +1,96 @@ +package com.gccloud.dataroom.core.module.manage.controller; + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gccloud.common.permission.ApiPermission; +import com.gccloud.common.utils.JSON; +import com.gccloud.common.vo.R; +import com.gccloud.dataroom.core.module.manage.dao.NeUploadExcelDao; +import com.gccloud.dataroom.core.module.manage.dto.DatasetEntityDTO; +import com.gccloud.dataroom.core.module.manage.entity.StuUploadExcelUser; +import com.gccloud.dataroom.core.utils.DemoDataListener; +import com.gccloud.dataset.constant.DatasetConstant; +import com.gccloud.dataset.dto.DatasetDTO; +import com.gccloud.dataset.entity.DatasetEntity; +import com.gccloud.dataset.service.IBaseDataSetService; +import com.gccloud.dataset.service.IDatasetLabelService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; +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 javax.annotation.Resource; +import java.io.IOException; +import java.util.List; + +/** + * @author 17803 + * @date 2024-09-03 9:35 + */ +@Api(tags = "新数据集") +@RestController +@RequestMapping("/newDataset") +public class NeUploadExcelController { + + + @Resource + private IDatasetLabelService datasetLabelService; + + @Autowired + private NeUploadExcelDao neUploadExcelDao; + + @Autowired + private IBaseDataSetService dataSetService; + + @ApiOperation("新增Excel") + @PostMapping("/newAdd") + @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.ADD}) + @Transactional(rollbackFor = Exception.class) + public R newAdd(String datasetDTO, @RequestParam("file") @RequestPart MultipartFile file) throws IOException { + DatasetDTO datasetByJson = JSON.parseObject(datasetDTO, DatasetDTO.class); + // IBaseDataSetService dataSetService = dataSetServiceFactory.build(datasetByJson.getDatasetType()); + String id = dataSetService.add(datasetByJson); + + //存储excel数据 根据id关联 + + // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 + EasyExcel.read(file.getInputStream(), StuUploadExcelUser.class, + new DemoDataListener(neUploadExcelDao, datasetByJson.getRemark(), id)).sheet().doRead(); + + + // 保存与标签的关联关系 + List labelIds = datasetByJson.getLabelIds(); + if (labelIds == null || labelIds.isEmpty()) { + return R.success(id); + } + datasetLabelService.addByDatasetId(id, labelIds); + + return R.success(id); + } + + + @ApiOperation("新详情") + @GetMapping("/NewInfo") + @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.VIEW}) + public R NewInfo(String id,Integer index,Integer size) { + + DatasetEntity datasetEntity = dataSetService.getById(id); + + DatasetEntityDTO datasetEntityDTO = new DatasetEntityDTO(); + BeanUtils.copyProperties(datasetEntity,datasetEntityDTO); + + IPage page = new Page(index,size); + neUploadExcelDao.selectPage(page, null); + + datasetEntityDTO.setUploadExcelList(page.getRecords()); + + + return R.success(datasetEntityDTO); + } + + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NewCategoryController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NewCategoryController.java new file mode 100644 index 00000000..08b26392 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NewCategoryController.java @@ -0,0 +1,97 @@ +package com.gccloud.dataroom.core.module.manage.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gccloud.common.permission.ApiPermission; +import com.gccloud.common.service.ITreeService; +import com.gccloud.common.utils.BeanConvertUtils; +import com.gccloud.common.vo.R; +import com.gccloud.dataroom.core.module.manage.dao.NewCategoryDao; +import com.gccloud.dataroom.core.module.manage.dto.CategorySearchDTO; +import com.gccloud.dataroom.core.module.manage.entity.CategoryEntity; +import com.gccloud.dataroom.core.module.manage.service.NewCategoryService; +import com.gccloud.dataset.constant.DatasetConstant; + + +import com.gccloud.dataset.vo.CategoryVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +import static com.gccloud.dataroom.core.module.map.service.IDataRoomMapService.SUPER_PARENT_ID; + +/** + * @author 17803 + * @date 2024-09-02 16:01 + */ +@Api(tags = "新版数据集") +@RestController +@RequestMapping("/category") +@ConditionalOnProperty(prefix = "gc.starter.dataset.component", name = "DatasetCategoryController", havingValue = "DatasetCategoryController", matchIfMissing = true) +public class NewCategoryController { + + + + + + @Autowired + private NewCategoryService categoryService; + + @ApiOperation("新版依据类型查询对应的种类树") + @GetMapping("/queryTreeListByUserId") + @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.CATEGORY_VIEW}) + public R> queryTreeListByUserId(CategorySearchDTO searchDTO) { + List tree = categoryService.getTree(searchDTO); + return R.success(tree); + } + + + + + @ApiOperation("新增数据集") + @PostMapping("/addDataSource") + @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.CATEGORY_EDIT}) + public R addDataSource(@RequestBody CategoryEntity categoryEntity) { + String id = categoryService.add(categoryEntity); + + return R.success(id); + } + + @ApiOperation("修改数据集") + @PostMapping("/updateDataSource") + @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.CATEGORY_EDIT}) + public R updateDataSource(@RequestBody CategoryEntity categoryEntity) { + categoryService.update(categoryEntity); + return R.success(); + } + + + @ApiOperation("删除数据集") + @PostMapping("/deleteDataSource/{id}") + @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.CATEGORY_EDIT}) + public R deleteDataSource(@PathVariable String id) { + categoryService.delete(id); + return R.success(); + } + + @ApiOperation("名称查重数据集") + @PostMapping("/checkRepeatDataSource") + @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.CATEGORY_VIEW}) + public R checkRepeatDataSource(@RequestBody CategoryEntity entity) { + Boolean flag = categoryService.checkNameRepeat(entity); + return R.success(flag); + } + + + + + + + + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dao/NeUploadExcelDao.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dao/NeUploadExcelDao.java new file mode 100644 index 00000000..8b87bd34 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dao/NeUploadExcelDao.java @@ -0,0 +1,20 @@ +package com.gccloud.dataroom.core.module.manage.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gccloud.dataroom.core.module.manage.entity.CategoryEntity; +import com.gccloud.dataroom.core.module.manage.entity.StuUploadExcelUser; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @author 17803 + * @date 2024-09-03 9:32 + */ +@Mapper +public interface NeUploadExcelDao extends BaseMapper { + + + //批量导入 + void insertBatch(List cachedDataList); +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dao/NewCategoryDao.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dao/NewCategoryDao.java new file mode 100644 index 00000000..220d5250 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dao/NewCategoryDao.java @@ -0,0 +1,18 @@ +package com.gccloud.dataroom.core.module.manage.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gccloud.dataroom.core.module.manage.entity.CategoryEntity; +import org.apache.ibatis.annotations.Mapper; + + +/** + * @author 17803 + * @date 2024-09-02 16:15 + */ +@Mapper +public interface NewCategoryDao extends BaseMapper { + + + + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/CategorySearchDTO.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/CategorySearchDTO.java new file mode 100644 index 00000000..38adb129 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/CategorySearchDTO.java @@ -0,0 +1,15 @@ +package com.gccloud.dataroom.core.module.manage.dto; + +import lombok.Data; + +/** + * @author 17803 + * @date 2024-09-02 16:10 + */ +@Data +public class CategorySearchDTO extends com.gccloud.dataset.dto.CategorySearchDTO { + + + private String userId; + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DatasetDTO.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DatasetDTO.java new file mode 100644 index 00000000..a093aeb6 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DatasetDTO.java @@ -0,0 +1,15 @@ +package com.gccloud.dataroom.core.module.manage.dto; + +import lombok.Data; + +/** + * @author 17803 + * @date 2024-09-03 9:38 + */ +@Data +public class DatasetDTO extends com.gccloud.dataset.dto.DatasetDTO { + + + + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DatasetEntityDTO.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DatasetEntityDTO.java new file mode 100644 index 00000000..ab306066 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DatasetEntityDTO.java @@ -0,0 +1,21 @@ +package com.gccloud.dataroom.core.module.manage.dto; + +import com.gccloud.dataroom.core.module.manage.entity.StuUploadExcelUser; +import com.gccloud.dataset.entity.DatasetEntity; +import lombok.Data; + +import java.util.List; + +/** + * @author 17803 + * @date 2024-09-03 11:08 + */ +@Data +public class DatasetEntityDTO extends DatasetEntity { + + private List uploadExcelList; + + + + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/entity/CategoryEntity.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/entity/CategoryEntity.java new file mode 100644 index 00000000..23249a63 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/entity/CategoryEntity.java @@ -0,0 +1,15 @@ +package com.gccloud.dataroom.core.module.manage.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @author 17803 + * @date 2024-09-02 16:11 + */ +@Data +@TableName("ds_category_tree") +public class CategoryEntity extends com.gccloud.dataset.entity.CategoryEntity { + + private String userId; +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/entity/StuUploadExcelUser.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/entity/StuUploadExcelUser.java new file mode 100644 index 00000000..4261d428 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/entity/StuUploadExcelUser.java @@ -0,0 +1,586 @@ +package com.gccloud.dataroom.core.module.manage.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 外部导入excel + * + * @author whb + * stu_upload_excel_user + */ +@Data +@TableName("stu_upload_excel_user") +public class StuUploadExcelUser { + @ApiModelProperty("id") + + private Integer id; + + @ApiModelProperty("步骤一 a") + private String stepOneA; + + @ApiModelProperty("步骤一 b") + @ExcelProperty(index = 0) + private String stepOneB; + + @ApiModelProperty("步骤一 c") + @ExcelProperty(index = 1) + private String stepOneC; + + @ApiModelProperty("步骤一 d") + @ExcelProperty(index = 2) + private String stepOneD; + + @ApiModelProperty("4") + @ExcelProperty(index = 3) + private String stepTwoA; + + @ApiModelProperty("5") + @ExcelProperty(index = 4) + private String stepTwoB; + + @ApiModelProperty("6") + @ExcelProperty(index = 5) + private String stepTwoC; + + @ApiModelProperty("7") + @ExcelProperty(index = 6) + private String stepThreeA; + + @ApiModelProperty("8") + @ExcelProperty(index = 7) + private String stepThreeB; + + @ApiModelProperty("9") + @ExcelProperty(index = 8) + private String stepThreeC; + + @ApiModelProperty("10") + @ExcelProperty(index = 9) + private String stepThreeD; + + @ApiModelProperty("11") + @ExcelProperty(index = 10) + private String stepFourA; + + @ApiModelProperty("12") + @ExcelProperty(index = 11) + private String stepFourB; + + @ApiModelProperty("13") + @ExcelProperty(index = 12) + private String stepFourC; + + @ApiModelProperty("14") + @ExcelProperty(index = 13) + private String stepFourD; + + @ApiModelProperty("15") + @ExcelProperty(index = 14) + private String stepFiveA; + + @ApiModelProperty("16") + @ExcelProperty(index = 15) + private String stepFiveB; + + @ApiModelProperty("17") + private String stepFiveC; + + @ApiModelProperty("18") + private String stepFiveD; + + @ApiModelProperty("19") + private String stepSixA; + + @ApiModelProperty("20") + private String stepSixB; + + @ApiModelProperty("21") + private String stepSixC; + + @ApiModelProperty("22") + private String stepSixD; + + @ApiModelProperty("23") + private String stepSevenA; + + @ApiModelProperty("24") + private String stepSevenB; + + @ApiModelProperty("25") + private String stepSevenC; + + @ApiModelProperty("26") + private String stepSevenD; + + @ApiModelProperty("27") + private String stepEightA; + + @ApiModelProperty("28") + private String stepEightB; + + @ApiModelProperty("29") + private String stepEightC; + + @ApiModelProperty("30") + private String stepEightD; + + @ApiModelProperty("31") + private String stepNineA; + + @ApiModelProperty("32") + private String stepNineB; + + @ApiModelProperty("33") + private String stepNineC; + + @ApiModelProperty("正确次数") + private Integer successNumber; + + @ApiModelProperty("用户ID") + private String userId; + + @ApiModelProperty("提交状态(-1 未提交 1已提交)") + private Integer subState; + + @ApiModelProperty("归属模块(小模块)") + private String module; + + @ApiModelProperty("34") + private String stepNineD; + + @ApiModelProperty("35") + private String stepTenA; + + @ApiModelProperty("36") + private String stepTenB; + + @ApiModelProperty("37") + private String stepTenC; + + @ApiModelProperty("38") + private String stepTenD; + + @ApiModelProperty("39") + private String stepElevenA; + + @ApiModelProperty("40") + private String stepElevenB; + + @ApiModelProperty("41") + private String stepElevenC; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; + + @ApiModelProperty("错误字段") + private String errorField; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getStepOneA() { + return stepOneA; + } + + public void setStepOneA(String stepOneA) { + this.stepOneA = stepOneA == null ? null : stepOneA.trim(); + } + + public String getStepOneB() { + return stepOneB; + } + + public void setStepOneB(String stepOneB) { + this.stepOneB = stepOneB == null ? null : stepOneB.trim(); + } + + public String getStepOneC() { + return stepOneC; + } + + public void setStepOneC(String stepOneC) { + this.stepOneC = stepOneC == null ? null : stepOneC.trim(); + } + + public String getStepOneD() { + return stepOneD; + } + + public void setStepOneD(String stepOneD) { + this.stepOneD = stepOneD == null ? null : stepOneD.trim(); + } + + public String getStepTwoA() { + return stepTwoA; + } + + public void setStepTwoA(String stepTwoA) { + this.stepTwoA = stepTwoA == null ? null : stepTwoA.trim(); + } + + public String getStepTwoB() { + return stepTwoB; + } + + public void setStepTwoB(String stepTwoB) { + this.stepTwoB = stepTwoB == null ? null : stepTwoB.trim(); + } + + public String getStepTwoC() { + return stepTwoC; + } + + public void setStepTwoC(String stepTwoC) { + this.stepTwoC = stepTwoC == null ? null : stepTwoC.trim(); + } + + public String getStepThreeA() { + return stepThreeA; + } + + public void setStepThreeA(String stepThreeA) { + this.stepThreeA = stepThreeA == null ? null : stepThreeA.trim(); + } + + public String getStepThreeB() { + return stepThreeB; + } + + public void setStepThreeB(String stepThreeB) { + this.stepThreeB = stepThreeB == null ? null : stepThreeB.trim(); + } + + public String getStepThreeC() { + return stepThreeC; + } + + public void setStepThreeC(String stepThreeC) { + this.stepThreeC = stepThreeC == null ? null : stepThreeC.trim(); + } + + public String getStepThreeD() { + return stepThreeD; + } + + public void setStepThreeD(String stepThreeD) { + this.stepThreeD = stepThreeD == null ? null : stepThreeD.trim(); + } + + public String getStepFourA() { + return stepFourA; + } + + public void setStepFourA(String stepFourA) { + this.stepFourA = stepFourA == null ? null : stepFourA.trim(); + } + + public String getStepFourB() { + return stepFourB; + } + + public void setStepFourB(String stepFourB) { + this.stepFourB = stepFourB == null ? null : stepFourB.trim(); + } + + public String getStepFourC() { + return stepFourC; + } + + public void setStepFourC(String stepFourC) { + this.stepFourC = stepFourC == null ? null : stepFourC.trim(); + } + + public String getStepFourD() { + return stepFourD; + } + + public void setStepFourD(String stepFourD) { + this.stepFourD = stepFourD == null ? null : stepFourD.trim(); + } + + public String getStepFiveA() { + return stepFiveA; + } + + public void setStepFiveA(String stepFiveA) { + this.stepFiveA = stepFiveA == null ? null : stepFiveA.trim(); + } + + public String getStepFiveB() { + return stepFiveB; + } + + public void setStepFiveB(String stepFiveB) { + this.stepFiveB = stepFiveB == null ? null : stepFiveB.trim(); + } + + public String getStepFiveC() { + return stepFiveC; + } + + public void setStepFiveC(String stepFiveC) { + this.stepFiveC = stepFiveC == null ? null : stepFiveC.trim(); + } + + public String getStepFiveD() { + return stepFiveD; + } + + public void setStepFiveD(String stepFiveD) { + this.stepFiveD = stepFiveD == null ? null : stepFiveD.trim(); + } + + public String getStepSixA() { + return stepSixA; + } + + public void setStepSixA(String stepSixA) { + this.stepSixA = stepSixA == null ? null : stepSixA.trim(); + } + + public String getStepSixB() { + return stepSixB; + } + + public void setStepSixB(String stepSixB) { + this.stepSixB = stepSixB == null ? null : stepSixB.trim(); + } + + public String getStepSixC() { + return stepSixC; + } + + public void setStepSixC(String stepSixC) { + this.stepSixC = stepSixC == null ? null : stepSixC.trim(); + } + + public String getStepSixD() { + return stepSixD; + } + + public void setStepSixD(String stepSixD) { + this.stepSixD = stepSixD == null ? null : stepSixD.trim(); + } + + public String getStepSevenA() { + return stepSevenA; + } + + public void setStepSevenA(String stepSevenA) { + this.stepSevenA = stepSevenA == null ? null : stepSevenA.trim(); + } + + public String getStepSevenB() { + return stepSevenB; + } + + public void setStepSevenB(String stepSevenB) { + this.stepSevenB = stepSevenB == null ? null : stepSevenB.trim(); + } + + public String getStepSevenC() { + return stepSevenC; + } + + public void setStepSevenC(String stepSevenC) { + this.stepSevenC = stepSevenC == null ? null : stepSevenC.trim(); + } + + public String getStepSevenD() { + return stepSevenD; + } + + public void setStepSevenD(String stepSevenD) { + this.stepSevenD = stepSevenD == null ? null : stepSevenD.trim(); + } + + public String getStepEightA() { + return stepEightA; + } + + public void setStepEightA(String stepEightA) { + this.stepEightA = stepEightA == null ? null : stepEightA.trim(); + } + + public String getStepEightB() { + return stepEightB; + } + + public void setStepEightB(String stepEightB) { + this.stepEightB = stepEightB == null ? null : stepEightB.trim(); + } + + public String getStepEightC() { + return stepEightC; + } + + public void setStepEightC(String stepEightC) { + this.stepEightC = stepEightC == null ? null : stepEightC.trim(); + } + + public String getStepEightD() { + return stepEightD; + } + + public void setStepEightD(String stepEightD) { + this.stepEightD = stepEightD == null ? null : stepEightD.trim(); + } + + public String getStepNineA() { + return stepNineA; + } + + public void setStepNineA(String stepNineA) { + this.stepNineA = stepNineA == null ? null : stepNineA.trim(); + } + + public String getStepNineB() { + return stepNineB; + } + + public void setStepNineB(String stepNineB) { + this.stepNineB = stepNineB == null ? null : stepNineB.trim(); + } + + public String getStepNineC() { + return stepNineC; + } + + public void setStepNineC(String stepNineC) { + this.stepNineC = stepNineC == null ? null : stepNineC.trim(); + } + + public Integer getSuccessNumber() { + return successNumber; + } + + public void setSuccessNumber(Integer successNumber) { + this.successNumber = successNumber; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId == null ? null : userId.trim(); + } + + public Integer getSubState() { + return subState; + } + + public void setSubState(Integer subState) { + this.subState = subState; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module == null ? null : module.trim(); + } + + public String getStepNineD() { + return stepNineD; + } + + public void setStepNineD(String stepNineD) { + this.stepNineD = stepNineD == null ? null : stepNineD.trim(); + } + + public String getStepTenA() { + return stepTenA; + } + + public void setStepTenA(String stepTenA) { + this.stepTenA = stepTenA == null ? null : stepTenA.trim(); + } + + public String getStepTenB() { + return stepTenB; + } + + public void setStepTenB(String stepTenB) { + this.stepTenB = stepTenB == null ? null : stepTenB.trim(); + } + + public String getStepTenC() { + return stepTenC; + } + + public void setStepTenC(String stepTenC) { + this.stepTenC = stepTenC == null ? null : stepTenC.trim(); + } + + public String getStepTenD() { + return stepTenD; + } + + public void setStepTenD(String stepTenD) { + this.stepTenD = stepTenD == null ? null : stepTenD.trim(); + } + + public String getStepElevenA() { + return stepElevenA; + } + + public void setStepElevenA(String stepElevenA) { + this.stepElevenA = stepElevenA == null ? null : stepElevenA.trim(); + } + + public String getStepElevenB() { + return stepElevenB; + } + + public void setStepElevenB(String stepElevenB) { + this.stepElevenB = stepElevenB == null ? null : stepElevenB.trim(); + } + + public String getStepElevenC() { + return stepElevenC; + } + + public void setStepElevenC(String stepElevenC) { + this.stepElevenC = stepElevenC == null ? null : stepElevenC.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getErrorField() { + return errorField; + } + + public void setErrorField(String errorField) { + this.errorField = errorField == null ? null : errorField.trim(); + } +} \ No newline at end of file diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/NeUploadExcelService.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/NeUploadExcelService.java new file mode 100644 index 00000000..237c2da1 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/NeUploadExcelService.java @@ -0,0 +1,13 @@ +package com.gccloud.dataroom.core.module.manage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gccloud.common.service.ISuperService; + +import com.gccloud.dataroom.core.module.manage.entity.StuUploadExcelUser; + +/** + * @author 17803 + * @date 2024-09-03 9:32 + */ +public interface NeUploadExcelService extends IService { +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/NewCategoryService.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/NewCategoryService.java new file mode 100644 index 00000000..bb302dc0 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/NewCategoryService.java @@ -0,0 +1,60 @@ +package com.gccloud.dataroom.core.module.manage.service; + + +import com.gccloud.dataroom.core.module.manage.dto.CategorySearchDTO; +import com.gccloud.dataroom.core.module.manage.entity.CategoryEntity; + + +import com.gccloud.dataset.vo.CategoryVO; + +import java.util.List; + +/** + * @author 17803 + * @date 2024-09-02 16:22 + */ + +public interface NewCategoryService { + + /** + * 获取分类树 + * @param searchDTO + * @return + */ + List getTree(CategorySearchDTO searchDTO); + + +// /** +// * 获取节点的所有子节点id,包括子节点的子节点的... +// * @param id +// * @return +// */ +// List getAllChildrenId(String id); + + /** + * 新增 + * @param entity + * @return + */ + String add(CategoryEntity entity); + + /** + * 修改 + * @param entity + */ + void update(CategoryEntity entity); + + /** + * 删除 + * @param id + */ + void delete(String id); + + + /** + * 校验名称重复 + * @param entity + * @return + */ + boolean checkNameRepeat(CategoryEntity entity); +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/NeUploadExcelServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/NeUploadExcelServiceImpl.java new file mode 100644 index 00000000..78ade4a3 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/NeUploadExcelServiceImpl.java @@ -0,0 +1,20 @@ +package com.gccloud.dataroom.core.module.manage.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gccloud.dataroom.core.module.basic.dao.DataRoomPagePreviewDao; +import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity; +import com.gccloud.dataroom.core.module.manage.dao.NeUploadExcelDao; +import com.gccloud.dataroom.core.module.manage.entity.StuUploadExcelUser; +import com.gccloud.dataroom.core.module.manage.service.NeUploadExcelService; +import org.springframework.stereotype.Service; + +/** + * @author 17803 + * @date 2024-09-03 9:33 + */ +@Service +public class NeUploadExcelServiceImpl extends ServiceImpl implements NeUploadExcelService { + + + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/NewCategoryServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/NewCategoryServiceImpl.java new file mode 100644 index 00000000..92b409d1 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/NewCategoryServiceImpl.java @@ -0,0 +1,140 @@ +package com.gccloud.dataroom.core.module.manage.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gccloud.common.exception.GlobalException; +import com.gccloud.common.service.ITreeService; +import com.gccloud.common.utils.BeanConvertUtils; +import com.gccloud.dataroom.core.module.manage.dao.NewCategoryDao; +import com.gccloud.dataroom.core.module.manage.dto.CategorySearchDTO; +import com.gccloud.dataroom.core.module.manage.entity.CategoryEntity; +import com.gccloud.dataroom.core.module.manage.service.NewCategoryService; + +import com.gccloud.dataset.dao.CategoryDao; + +import com.gccloud.dataset.service.ICategoryService; +import com.gccloud.dataset.vo.CategoryVO; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author 17803 + * @date 2024-09-02 16:23 + */ +@Service +public class NewCategoryServiceImpl extends ServiceImpl implements NewCategoryService { + + /** + * 顶级父节点id + */ + private static final String SUPER_PARENT_ID = "0"; + + /** + * id序列分隔符 + */ + private static final String ID_SPLIT = ","; + + + @Resource + private ITreeService treeService; + + @Override + public List getTree(CategorySearchDTO searchDTO) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(searchDTO.getModuleCode()), CategoryEntity::getModuleCode, searchDTO.getModuleCode()); + wrapper.eq(StringUtils.isNotBlank(searchDTO.getType()), CategoryEntity::getType, searchDTO.getType()); + // 使用 or 将两个主要条件分开 + wrapper.and(w -> + w.eq(CategoryEntity::getUserId, searchDTO.getUserId()) + .or().eq(CategoryEntity::getId, 5) + ); + List list = this.list(wrapper); + List voList = BeanConvertUtils.convert(list, CategoryVO.class); + treeService.transToTree(voList); + voList.removeIf(categoryVO -> !SUPER_PARENT_ID.equals(categoryVO.getParentId())); + return voList; + } + +// @Override +// public List getAllChildrenId(String id) { +// CategoryEntity category = this.getById(id); +// String ids = category.getIds() + ID_SPLIT; +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.select(CategoryEntity::getId); +// wrapper.likeRight(CategoryEntity::getIds, ids); +// List list = this.list(wrapper); +// return list.stream().map(CategoryEntity::getId).collect(Collectors.toList()); +// } + + + @Override + public String add(CategoryEntity entity) { + boolean repeat = this.checkNameRepeat(entity); + if (repeat) { + throw new GlobalException("节点名称重复"); + } + if (StringUtils.isBlank(entity.getParentId())) { + entity.setParentId(SUPER_PARENT_ID); + } + this.save(entity); + entity.setIds(entity.getId()); + if (!SUPER_PARENT_ID.equals(entity.getParentId())) { + CategoryEntity parent = this.getById(entity.getParentId()); + if (parent == null) { + throw new GlobalException("父节点不存在"); + } + entity.setIds(parent.getIds() + ID_SPLIT + entity.getId()); + } + this.updateById(entity); + return entity.getId(); + } + + @Override + public void update(CategoryEntity entity) { + boolean repeat = this.checkNameRepeat(entity); + if (repeat) { + throw new GlobalException("节点名称重复"); + } + this.updateById(entity); + } + + @Override + public void delete(String id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(CategoryEntity::getId); + queryWrapper.eq(CategoryEntity::getParentId, id); + if (this.list(queryWrapper).size() > 0) { + throw new GlobalException("该节点下存在子节点,无法删除"); + } + this.removeById(id); + } + + @Override + public boolean checkNameRepeat(CategoryEntity entity) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(CategoryEntity::getId); + queryWrapper.eq(CategoryEntity::getName, entity.getName()); + queryWrapper.eq(StringUtils.isNotBlank(entity.getModuleCode()), CategoryEntity::getModuleCode, entity.getModuleCode()); + queryWrapper.eq(StringUtils.isNotBlank(entity.getType()), CategoryEntity::getType, entity.getType()); + queryWrapper.ne(StringUtils.isNotBlank(entity.getId()), CategoryEntity::getId, entity.getId()); + queryWrapper.eq(CategoryEntity::getUserId, entity.getUserId()); + if (StringUtils.isBlank(entity.getParentId())) { + queryWrapper.eq(CategoryEntity::getParentId, SUPER_PARENT_ID); + } else { + queryWrapper.eq(CategoryEntity::getParentId, entity.getParentId()); + } + // NOTE 为了兼容mybatis-plus的升级,这里不能使用count()方法 + return this.list(queryWrapper).size() > 0; + } +} + + + + + + diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/controller/TypeController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/controller/TypeController.java index 9fe28002..81577544 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/controller/TypeController.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/controller/TypeController.java @@ -136,4 +136,9 @@ public class TypeController { } + + + + + } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/utils/DemoDataListener.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/utils/DemoDataListener.java new file mode 100644 index 00000000..e44d175e --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/utils/DemoDataListener.java @@ -0,0 +1,149 @@ +package com.gccloud.dataroom.core.utils; + + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.read.listener.ReadListener; +import com.alibaba.excel.util.ConverterUtils; +import com.alibaba.excel.util.ListUtils; + + +import com.gccloud.common.utils.JSON; +import com.gccloud.dataroom.core.module.manage.dao.NeUploadExcelDao; +import com.gccloud.dataroom.core.module.manage.entity.StuUploadExcelUser; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.Field; +import java.util.*; + + +// 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去 +@Slf4j + +public class DemoDataListener implements ReadListener { + + + /** + * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收 + * + */ + private static final int BATCH_COUNT = 150; + private static final int MAX_COUNT = 1000; // 最大处理条数 + /** + * 缓存的数据 + */ + private List cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); + /** + * 假设这个是一个DAO,当然有业务逻辑这个也可以是一个service。当然如果不用存储这个对象没用。 + */ + private NeUploadExcelDao demoDAO; + private String userId; + private String id; + private int processedCount = 0; // 记录已处理的数据条数 + + List list = new ArrayList(); + + /** + * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来 + * + * @param demoDAO + */ + public DemoDataListener(NeUploadExcelDao demoDAO, String userId, String id) { + this.id = id; + this.userId = userId; + this.demoDAO = demoDAO; + } + + + /** + * 这里会一行行的返回头 + * + * @param headMap + * @param context + */ + @Override + public void invokeHead(Map> headMap, AnalysisContext context) { + // log.info("解析到一条头数据:{}", JSON.toJSONString(headMap)); + + Map integerStringMap = ConverterUtils.convertToStringMap(headMap, context); + + //log.info("转换解析到的一条头数据:{}", integerStringMap); + + + Set integers = integerStringMap.keySet(); + for (Integer integer : integers) { + list.add(integerStringMap.get(integer)); + } + + + // 如果想转成成 Map + // 方案1: 不要implements ReadListener 而是 extends AnalysisEventListener + // 方案2: 调用 ConverterUtils.convertToStringMap(headMap, context) 自动会转换 + } + + /** + * 这个每一条数据解析都会来调用 + * + * @param data one row value. Is is same as {@link AnalysisContext#readRowHolder()} + * @param context + */ + @Override + public void invoke(StuUploadExcelUser data, AnalysisContext context) { +// //log.info("解析到一条数据:{}", JSON.toJSONString(data)); +// cachedDataList.add(data); +// // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM +// +// if (cachedDataList.size() >= BATCH_COUNT) { +// saveData(); +// // 存储完成清理 list +// cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); +// } + if (processedCount >= MAX_COUNT) { + // context.interrupt(); // 终止解析 + return; + } + + cachedDataList.add(data); + processedCount++; + + if (cachedDataList.size() >= BATCH_COUNT || processedCount >= MAX_COUNT) { + saveData(); + cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); + } + } + + /** + * 所有数据解析完成了 都会来调用 + * + * @param context + */ + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + + saveData(); + log.info("所有数据解析完成!"+ ",当前线程:" + Thread.currentThread().getName()); + } + + /** + * 加上存储数据库 + */ + private void saveData() { + + + cachedDataList.forEach(item->{ + item.setUserId(userId); + item.setModule(id); + item.setStepOneA(JSON.toJSONString(list)); + }); + + + for (StuUploadExcelUser uploadExcelUser : cachedDataList) { + demoDAO.insert(uploadExcelUser); + } + + //demoDAO.insertBatch(cachedDataList); + + + + } +} \ No newline at end of file diff --git a/DataRoom/dataroom-core/src/main/resources/mapper/NeUploadExcelDao.xml b/DataRoom/dataroom-core/src/main/resources/mapper/NeUploadExcelDao.xml new file mode 100644 index 00000000..7cba13fa --- /dev/null +++ b/DataRoom/dataroom-core/src/main/resources/mapper/NeUploadExcelDao.xml @@ -0,0 +1,41 @@ + + + + + + + + INSERT INTO stu_upload_excel_user (id, step_one_a, step_one_b, step_one_c, step_one_d, + step_two_a, step_two_b, step_two_c, step_three_a, + step_three_b, step_three_c, step_three_d, step_four_a, + step_four_b, step_four_c, step_four_d, step_five_a, + step_five_b, step_five_c, step_five_d, step_six_a, + step_six_b, step_six_c, step_six_d, step_seven_a, + step_seven_b, step_seven_c, step_seven_d, step_eight_a, + step_eight_b, step_eight_c, step_eight_d, step_nine_a, + step_nine_b, step_nine_c, success_number, user_id, + sub_state, module, step_nine_d, step_ten_a, step_ten_b, + step_ten_c, step_ten_d, step_eleven_a, step_eleven_b, + step_eleven_c, create_time, update_time, error_field) + VALUES + + (#{item.id,jdbcType=INTEGER}, #{item.stepOneA,jdbcType=VARCHAR}, #{item.stepOneB,jdbcType=VARCHAR}, + #{item.stepOneC,jdbcType=VARCHAR}, #{item.stepOneD,jdbcType=VARCHAR}, #{item.stepTwoA,jdbcType=VARCHAR}, + #{item.stepTwoB,jdbcType=VARCHAR}, #{item.stepTwoC,jdbcType=VARCHAR}, #{item.stepThreeA,jdbcType=VARCHAR}, + #{item.stepThreeB,jdbcType=VARCHAR}, #{item.stepThreeC,jdbcType=VARCHAR}, #{item.stepThreeD,jdbcType=VARCHAR}, + #{item.stepFourA,jdbcType=VARCHAR}, #{item.stepFourB,jdbcType=VARCHAR}, #{item.stepFourC,jdbcType=VARCHAR}, + #{item.stepFourD,jdbcType=VARCHAR}, #{item.stepFiveA,jdbcType=VARCHAR}, #{item.stepFiveB,jdbcType=VARCHAR}, + #{item.stepFiveC,jdbcType=VARCHAR}, #{item.stepFiveD,jdbcType=VARCHAR}, #{item.stepSixA,jdbcType=VARCHAR}, + #{item.stepSixB,jdbcType=VARCHAR}, #{item.stepSixC,jdbcType=VARCHAR}, #{item.stepSixD,jdbcType=VARCHAR}, + #{item.stepSevenA,jdbcType=VARCHAR}, #{item.stepSevenB,jdbcType=VARCHAR}, #{item.stepSevenC,jdbcType=VARCHAR}, + #{item.stepSevenD,jdbcType=VARCHAR}, #{item.stepEightA,jdbcType=VARCHAR}, #{item.stepEightB,jdbcType=VARCHAR}, + #{item.stepEightC,jdbcType=VARCHAR}, #{item.stepEightD,jdbcType=VARCHAR}, #{item.stepNineA,jdbcType=VARCHAR}, + #{item.stepNineB,jdbcType=VARCHAR}, #{item.stepNineC,jdbcType=VARCHAR}, #{item.successNumber,jdbcType=INTEGER}, + #{item.userId,jdbcType=VARCHAR}, #{item.subState,jdbcType=INTEGER}, #{item.module,jdbcType=VARCHAR}, + #{item.stepNineD,jdbcType=VARCHAR}, #{item.stepTenA,jdbcType=VARCHAR}, #{item.stepTenB,jdbcType=VARCHAR}, + #{item.stepTenC,jdbcType=VARCHAR}, #{item.stepTenD,jdbcType=VARCHAR}, #{item.stepElevenA,jdbcType=VARCHAR}, + #{item.stepElevenB,jdbcType=VARCHAR}, #{item.stepElevenC,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP}, + #{item.updateTime,jdbcType=TIMESTAMP}, #{item.errorField,jdbcType=VARCHAR}) + + + \ No newline at end of file