|
|
@@ -6,9 +6,11 @@ import com.goafanti.RD.bo.InputRdList;
|
|
|
import com.goafanti.RD.bo.OutRdDetails;
|
|
|
import com.goafanti.RD.service.RDService;
|
|
|
import com.goafanti.common.bo.Error;
|
|
|
+import com.goafanti.common.bo.Result;
|
|
|
import com.goafanti.common.constant.AFTConstants;
|
|
|
import com.goafanti.common.dao.AdminMapper;
|
|
|
import com.goafanti.common.dao.RdDetailsMapper;
|
|
|
+import com.goafanti.common.enums.NoticeTypes;
|
|
|
import com.goafanti.common.error.BusinessException;
|
|
|
import com.goafanti.common.model.Admin;
|
|
|
import com.goafanti.common.model.RdDetails;
|
|
|
@@ -22,6 +24,7 @@ import com.goafanti.core.shiro.token.TokenManager;
|
|
|
import com.goafanti.order.bo.TemporaryReceivablesBo;
|
|
|
import org.apache.poi.ss.usermodel.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
@@ -36,6 +39,8 @@ public class RDServiceImpl extends BaseMybatisDao<RdDetailsMapper> implements RD
|
|
|
private AdminMapper adminMapper;
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public int add(RdDetails in) {
|
|
|
Admin admin = adminMapper.selectByPrimaryKey(TokenManager.getAdminId());
|
|
|
@@ -58,17 +63,30 @@ public class RDServiceImpl extends BaseMybatisDao<RdDetailsMapper> implements RD
|
|
|
|
|
|
@Override
|
|
|
public Object list(InputRdList in) {
|
|
|
+ Map<String, Object> param = getParam(in);
|
|
|
+
|
|
|
+ return findPage("RdDetailsList","RdDetailsCount",param,in.getPageNo(), in.getPageSize());
|
|
|
+ }
|
|
|
+
|
|
|
+ private Map<String, Object> getParam(InputRdList in) {
|
|
|
Map<String,Object> param=new HashMap<>();
|
|
|
- param.put("RdStart",in.getRdStart());
|
|
|
- param.put("RdEnd",in.getRdStart());
|
|
|
- param.put("RdName",in.getRdName());
|
|
|
+ param.put("RdStart", in.getRdStart());
|
|
|
+ param.put("RdEnd", in.getRdStart());
|
|
|
+ param.put("RdName", in.getRdName());
|
|
|
+ return param;
|
|
|
+ }
|
|
|
|
|
|
- return findPage("RdDetailsList","RdDetailsCount",param,in.getPaseNo(), in.getPaseSize());
|
|
|
+ @Override
|
|
|
+ public Result exportList(InputRdList in, String uploadPath) {
|
|
|
+ Map<String, Object> param = getParam(in);
|
|
|
+ List<InputExcelRdDetails> list = (List<InputExcelRdDetails>) findList("RdDetailsList", param, 1, 9999);
|
|
|
+ NewExcelUtil<InputExcelRdDetails> newExcelUtil=new NewExcelUtil<>(InputExcelRdDetails.class);
|
|
|
+ return newExcelUtil.exportExcel(list,"研发活动信息",uploadPath);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Object batchList(MultipartFile file) {
|
|
|
- NewExcelUtil<InputExcelRdDetails> newExcelUtil=new NewExcelUtil<InputExcelRdDetails>(InputExcelRdDetails.class);
|
|
|
+ NewExcelUtil<InputExcelRdDetails> newExcelUtil=new NewExcelUtil<>(InputExcelRdDetails.class);
|
|
|
List<InputExcelRdDetails> list = null;
|
|
|
try {
|
|
|
list = newExcelUtil.importExcel(file.getInputStream());
|
|
|
@@ -78,133 +96,12 @@ public class RDServiceImpl extends BaseMybatisDao<RdDetailsMapper> implements RD
|
|
|
|
|
|
// List<InputRdDetails> list= pushRdDetails(file);
|
|
|
//新增
|
|
|
- return insertBatch(list);
|
|
|
- }
|
|
|
-
|
|
|
- private List<InputExcelRdDetails> pushRdDetails(MultipartFile file) {
|
|
|
- List<InputExcelRdDetails> list=new ArrayList<>();
|
|
|
- Workbook workbook = ExcelUtils.getWorkBook(file);
|
|
|
- Sheet sheet=null;
|
|
|
- //创建一个对象,用来存储数据
|
|
|
- if (workbook != null) {
|
|
|
- //获得当前sheet工作表
|
|
|
- sheet = workbook.getSheetAt(0);
|
|
|
- if (sheet == null) {
|
|
|
- throw new BusinessException(new Error("未找到正确的参数。"));
|
|
|
- }
|
|
|
- //获得当前sheet的开始行
|
|
|
- int firstRowNum = sheet.getFirstRowNum();
|
|
|
- //获得当前sheet的结束行
|
|
|
- int lastRowNum = sheet.getLastRowNum();
|
|
|
- //处理空白行
|
|
|
- Integer getLast = 0;
|
|
|
- for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) {
|
|
|
- Row r = sheet.getRow(i);
|
|
|
- if (r == null) {
|
|
|
- // 如果是空行(即没有任何数据、格式),直接把它以下的数据往上移动
|
|
|
- sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
|
|
|
- continue;
|
|
|
- }
|
|
|
- boolean flag = false;
|
|
|
- for (Cell c : r) {
|
|
|
- if (c.getCellTypeEnum() != CellType.BLANK) {
|
|
|
- flag = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (flag) {
|
|
|
- getLast++;
|
|
|
- continue;
|
|
|
- }
|
|
|
- }
|
|
|
- //行数从0开始所以减一
|
|
|
- getLast--;
|
|
|
- if (getLast < 1) {
|
|
|
- throw new BusinessException(new Error("未找到正确的参数。"));
|
|
|
- }
|
|
|
- lastRowNum=getLast;
|
|
|
-
|
|
|
- Date date=new Date();
|
|
|
- //循环除了第1行的所有行 行数从0开始,最大行数所以
|
|
|
- for(int rowNum = firstRowNum+2;rowNum <= lastRowNum;rowNum++) {
|
|
|
- //获得当前行
|
|
|
- Row row = sheet.getRow(rowNum);
|
|
|
- if (row == null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- //获得当前行的开始列
|
|
|
- int firstCellNum = row.getFirstCellNum();
|
|
|
- //获得当前行的列数
|
|
|
- int lastCellNum = row.getLastCellNum();
|
|
|
- InputExcelRdDetails in = new InputExcelRdDetails();
|
|
|
- for (int cellNum = (firstCellNum); cellNum < lastCellNum; cellNum++) {
|
|
|
- Cell cell = row.getCell(cellNum);
|
|
|
- try {
|
|
|
- switch (cellNum) {
|
|
|
- case 0:
|
|
|
- in.setUserName(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- in.setRdNo(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- in.setIpNo(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- in.setRdName(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- in.setRdStart(ExcelUtils.getCellDate(cell, AFTConstants.YYYYMMDD_2));
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- in.setRdEnd(ExcelUtils.getCellDate(cell, AFTConstants.YYYYMMDD_2));
|
|
|
- break;
|
|
|
- case 6:
|
|
|
- in.setTechnicalField(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 7:
|
|
|
- in.setTechnologySource(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 8:
|
|
|
- String str = ExcelUtils.getCellValue(cell);
|
|
|
- if (StringUtils.isBlank(str)) str = "0";
|
|
|
- in.setTotalAmount(new BigDecimal(str));
|
|
|
- break;
|
|
|
- case 9:
|
|
|
- String str2 = ExcelUtils.getCellValue(cell);
|
|
|
- if (StringUtils.isBlank(str2)) str2 = "0";
|
|
|
- in.setRecentThreeAmount(new BigDecimal(str2));
|
|
|
- break;
|
|
|
- case 10:
|
|
|
- in.setRdObjective(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 11:
|
|
|
- in.setCoreTechnology(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 12:
|
|
|
- in.setAchieveResults(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- case 13:
|
|
|
- in.setConsultantName(ExcelUtils.getCellValue(cell));
|
|
|
- break;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- throw new BusinessException(new Error("表格第" + (rowNum + 1) + "行输入内容不正确。"));
|
|
|
- }
|
|
|
- }
|
|
|
- in.setAid(TokenManager.getAdminId());
|
|
|
- in.setCreateTime(date);
|
|
|
- in.setStatus(0);
|
|
|
- list.add(in);
|
|
|
- }
|
|
|
- }
|
|
|
- return list;
|
|
|
-
|
|
|
+ return insertBatchList(list);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- private Map<String,Object> insertBatch(List<InputExcelRdDetails> list) {
|
|
|
+ private Map<String,Object> insertBatchList(List<InputExcelRdDetails> list) {
|
|
|
+ String aid=TokenManager.getAdminId();
|
|
|
+ Date date =new Date();
|
|
|
Map<String,Object> map=new HashMap<>();
|
|
|
List<InputExcelRdDetails> relust= new ArrayList<>();
|
|
|
List<String>errors=new ArrayList<>();
|
|
|
@@ -216,9 +113,25 @@ public class RDServiceImpl extends BaseMybatisDao<RdDetailsMapper> implements RD
|
|
|
relust.add(in);
|
|
|
}
|
|
|
}
|
|
|
- if (relust.size()>0)rdDetailsMapper.insertBatch(list);
|
|
|
+ for (InputExcelRdDetails in : relust) {
|
|
|
+ in.setStatus(1);
|
|
|
+ in.setAid(aid);
|
|
|
+ in.setCreateTime(date);
|
|
|
+ }
|
|
|
+ if (relust.size()>0)insertBatch(relust);
|
|
|
map.put("OK",relust.size());
|
|
|
map.put("ERROR",errors);
|
|
|
return map;
|
|
|
}
|
|
|
+
|
|
|
+ private void insertBatch(List<InputExcelRdDetails> relust) {
|
|
|
+ List<InputExcelRdDetails> list=new ArrayList<>();
|
|
|
+ for (int i = 0; i < relust.size(); i++) {
|
|
|
+ list.add(relust.get(i));
|
|
|
+ if (50 == list.size() || i == relust.size() - 1) {
|
|
|
+ if (list.size() > 0) rdDetailsMapper.insertBatch(list);
|
|
|
+ list.clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|