From 8676f4cb37ef31fa9fcfe2a7faf5f4c4ea77cc1a Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 29 一月 2026 09:46:05 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/zbom_dianjiang

---
 server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java |  135 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 135 insertions(+), 0 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
index d3ca1de..074a1db 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
@@ -1,20 +1,41 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.annotation.excel.ExcelImporter;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.dto.CasesImport;
+import com.doumee.dao.business.dto.MemberImport;
 import com.doumee.dao.business.model.ImportRecord;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.ImportRecordMapper;
+import com.doumee.dao.business.model.Member;
 import com.doumee.service.business.ImportRecordService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 鍒嗙被淇℃伅琛⊿ervice瀹炵幇
@@ -26,9 +47,21 @@
 
     @Autowired
     private ImportRecordMapper importRecordMapper;
+    @Resource
+    private RedisTemplate<String, Object> redisTemplate;
 
     @Override
     public Integer create(ImportRecord importRecord) {
+        if(StringUtils.isBlank(importRecord.getImgurl())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        importRecord.setDeleted(Constants.ZERO);
+        importRecord.setStatus(Constants.ZERO);
+        importRecord.setCreateTime(new Date());
+        importRecord.setCreateUser(loginUserInfo.getId());
+        importRecord.setUpdateTime(new Date());
+        importRecord.setUpdateUser(loginUserInfo.getId());
         importRecordMapper.insert(importRecord);
         return importRecord.getId();
     }
@@ -134,4 +167,106 @@
         QueryWrapper<ImportRecord> wrapper = new QueryWrapper<>(importRecord);
         return importRecordMapper.selectCount(wrapper);
     }
+    @Override
+    public ImportRecord importBatch(MultipartFile file,int type ){
+        Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_RECORD);
+        if(importing!=null && importing){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�");
+        }
+        redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_RECORD,true,30, TimeUnit.MINUTES);
+        try {
+            ImportRecord model = new ImportRecord();
+            LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+            model.setDeleted(Constants.ZERO);
+            model.setStatus(Constants.ONE);//寮傛澶勭悊涓�
+            model.setCreateTime(new Date());
+            model.setCreateUser(loginUserInfo.getId());
+            model.setUpdateTime(model.getCreateTime());
+            model.setUpdateUser(loginUserInfo.getId());
+            model.setType(type);
+            model.setTitle((type==1?"妗堜緥淇℃伅鎵归噺瀵煎叆":"鑰佸笀淇℃伅鎵归噺瀵煎叆")+ DateUtil.getPlusTime2(model.getCreateTime()));
+            model.setTotalNum(0);
+            ExcelImporter ie= new ExcelImporter(file,0,0, CellType.STRING); // 纭繚鍗曞厓鏍肩被鍨嬩负瀛楃涓�);
+            if(type == 1) {
+              model.setCaseList(ie.getDataList(CasesImport.class,null));
+              if(model.getCaseList() ==null || model.getCaseList().size()==0){
+                  throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵煎叆鏂囦欢妗堜緥淇℃伅鍐呭涓虹┖锛�");
+              }
+              model.setTotalNum(model.getCaseList().size());
+            }else{
+              model.setMemberList(ie.getDataList(MemberImport.class,null));
+              if(model.getMemberList() ==null || model.getMemberList().size()==0){
+                  throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵煎叆鏂囦欢鑰佸笀淇℃伅鍐呭涓虹┖锛�");
+              }
+              model.setTotalNum(model.getMemberList().size());
+            }
+//            model.setPictureDataList(ie);
+            importRecordMapper.insert(model);
+            return model;
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏂囦欢淇℃伅璇诲彇澶辫触锛岃妫�鏌ユ枃浠跺唴瀹瑰悗閲嶈瘯锛�");
+        }finally {
+            redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
+        }
+    }
+
+    /**
+     * 寮傛鎵ц鏂囦欢浠诲姟
+     * @param importRecord
+     */
+    @Override
+    @Async
+    public void dealImporTask(ImportRecord importRecord){
+        int success = 0;
+        if(Constants.equalsInteger(importRecord.getType(),0)){
+           dealUserImportBiz(importRecord);
+        }else{
+            dealCaseImportBiz(importRecord);
+        }
+        importRecord.setStatus(Constants.TWO);
+        importRecord.setUpdateTime(new Date());
+        importRecordMapper.updateById(importRecord);
+
+    }
+
+    /**
+     * 澶勭悊妗堜緥瀵煎叆浠诲姟
+     * @param importRecord
+     */
+
+    private int dealCaseImportBiz(ImportRecord importRecord) {
+        int success=0;
+        String msg ="";
+        try {
+            for(CasesImport param:importRecord.getCaseList()){
+
+            }
+        }catch (Exception e){
+
+        }
+        importRecord.setDoneNum(success);
+        importRecord.setErrorNum(importRecord.getTotalNum() - success);
+        return success;
+    }
+
+    /**
+     * 澶勭悊浜哄憳瀵煎叆璁板綍
+     * @param importRecord
+     */
+    private int dealUserImportBiz(ImportRecord importRecord) {
+        int success=0;
+        String msg = "";
+        try {
+            for(MemberImport param:importRecord.getMemberList()){
+
+            }
+        }catch (Exception e){
+
+        }
+        importRecord.setDoneNum(success);
+        importRecord.setErrorNum(importRecord.getTotalNum() - success);
+        importRecord.setDetail(msg);
+
+        return success;
+    }
 }

--
Gitblit v1.9.3