|
@@ -3,7 +3,8 @@ package com.xjrsoft.module.textbook.service.impl;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
-import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.db.Entity;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
@@ -11,16 +12,24 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.google.gson.JsonArray;
|
|
|
+import com.google.gson.JsonElement;
|
|
|
+import com.google.gson.JsonObject;
|
|
|
+import com.google.gson.JsonParser;
|
|
|
import com.xjrsoft.common.enums.DeleteMark;
|
|
|
import com.xjrsoft.common.enums.WarehouseModeEnum;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
|
+import com.xjrsoft.common.utils.LocalDateTimeUtil;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
+import com.xjrsoft.module.attendance.vo.AttendanceStatisticsRecordVo;
|
|
|
import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
import com.xjrsoft.module.base.entity.BaseCourseSubject;
|
|
|
import com.xjrsoft.module.base.entity.BaseGrade;
|
|
|
import com.xjrsoft.module.base.entity.BaseSemester;
|
|
|
-import com.xjrsoft.module.student.entity.BaseClassMajorSet;
|
|
|
+import com.xjrsoft.module.generator.constant.ComponentTypeConstant;
|
|
|
+import com.xjrsoft.module.generator.entity.ColumnConfig;
|
|
|
+import com.xjrsoft.module.generator.entity.ImportConfig;
|
|
|
import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import com.xjrsoft.module.textbook.dto.*;
|
|
@@ -28,17 +37,27 @@ import com.xjrsoft.module.textbook.entity.*;
|
|
|
import com.xjrsoft.module.textbook.mapper.*;
|
|
|
import com.xjrsoft.module.textbook.service.ITextbookSubscriptionService;
|
|
|
import com.xjrsoft.module.textbook.vo.*;
|
|
|
+import com.xjrsoft.module.veb.util.ImportExcelUtil;
|
|
|
+import com.xjrsoft.module.veb.vo.InternshipPlanImportVo;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import oracle.sql.INTERVALDS;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.poi.ss.usermodel.*;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.math.RoundingMode;
|
|
|
+import java.sql.Time;
|
|
|
+import java.sql.Timestamp;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
@@ -469,7 +488,7 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
|
|
|
|
|
|
LambdaQueryWrapper<TextbookWarehouseRecord> textbookWarehouseRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
textbookWarehouseRecordLambdaQueryWrapper
|
|
|
- .in(TextbookWarehouseRecord::getDataId, textbookSubscription.getId())
|
|
|
+ .eq(TextbookWarehouseRecord::getDataId, textbookSubscription.getId())
|
|
|
.eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
;
|
|
|
List<TextbookWarehouseRecord> textbookWarehouseRecords = textbookWarehouseRecordMapper.selectList(textbookWarehouseRecordLambdaQueryWrapper);
|
|
@@ -584,73 +603,163 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public String instockroomExcelImport(InputStream inputStream, Long textbookSubscriptionId) {
|
|
|
- AtomicReference<Map<String, Object>> atomicMap = new AtomicReference<>(new HashMap<>());
|
|
|
- List<Map<Integer, Object>> excalDataList = EasyExcel.read(inputStream).sheet().headRowNumber(1).doReadSync();
|
|
|
- String regex = "\\d+";
|
|
|
- Pattern pattern = Pattern.compile(regex);
|
|
|
- List<TextbookInstockroomImportDto> dataList = new ArrayList<>();
|
|
|
- for (Map<Integer, Object> integerObjectMap : excalDataList) {
|
|
|
- Matcher matcher = pattern.matcher(integerObjectMap.get(11).toString());
|
|
|
- int inNum = 0;
|
|
|
- if (matcher.find()) {
|
|
|
- inNum = Integer.parseInt(integerObjectMap.get(11).toString());
|
|
|
- }
|
|
|
- TextbookInstockroomImportDto importDto = new TextbookInstockroomImportDto();
|
|
|
- importDto.setInNum(inNum);
|
|
|
- importDto.setIssn(integerObjectMap.get(2).toString());
|
|
|
- dataList.add(importDto);
|
|
|
- }
|
|
|
+ public String instockroomExcelImport(InputStream inputStream) {
|
|
|
+ List<TextbookSubscriptionExportQueryListVo> excelDataList = EasyExcel.read(inputStream).headRowNumber(3).head(TextbookSubscriptionExportQueryListVo.class).sheet().doReadSync();
|
|
|
+
|
|
|
+ List<Long> idList = excelDataList.stream()
|
|
|
+ .map(t -> Long.parseLong(t.getTextbookSubscriptionItemId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
- MPJLambdaWrapper<TextbookSubscriptionItem> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
+ LambdaQueryWrapper<TextbookSubscriptionItem> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper
|
|
|
- .select(TextbookSubscriptionItem::getId)
|
|
|
- .selectAs(Textbook::getIssn, TextbookSubscriptionItemVo::getIssn)
|
|
|
- .select(TextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionItemVo.class).contains(x.getProperty()))
|
|
|
- .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId)
|
|
|
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, textbookSubscriptionId)
|
|
|
+ .in(TextbookSubscriptionItem::getId, idList)
|
|
|
.eq(TextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
;
|
|
|
- List<TextbookSubscriptionItemVo> textbookSubscriptionItemVos = textbookSubscriptionTextbookSubscriptionItemMapper.selectJoinList(TextbookSubscriptionItemVo.class, queryWrapper);
|
|
|
+ List<TextbookSubscriptionItem> textbookSubscriptionItemList = textbookSubscriptionTextbookSubscriptionItemMapper.selectList(queryWrapper);
|
|
|
+ if (ObjectUtils.isEmpty(textbookSubscriptionItemList)) {
|
|
|
+ throw new MyException("征订数据被修改,请刷新重试");
|
|
|
+ }
|
|
|
+ Map<Long, TextbookSubscriptionItem> byIdMap = textbookSubscriptionItemList.stream()
|
|
|
+ .collect(Collectors.toMap(TextbookSubscriptionItem::getId, t -> t, (t1, t2) -> t1));
|
|
|
|
|
|
- if (textbookSubscriptionItemVos.isEmpty()) {
|
|
|
- return null;
|
|
|
+ TextbookSubscription textbookSubscription = this.getById(textbookSubscriptionItemList.get(0).getTextbookSubscriptionId());
|
|
|
+ if (ObjectUtils.isEmpty(textbookSubscription)) {
|
|
|
+ throw new MyException("需要入库对应的征订记录失效");
|
|
|
}
|
|
|
|
|
|
- Map<String, TextbookSubscriptionItemVo> itemByIssnMap = new HashMap<>();
|
|
|
- for (TextbookSubscriptionItemVo el : textbookSubscriptionItemVos) {
|
|
|
- itemByIssnMap.put(el.getIssn(), el);
|
|
|
+
|
|
|
+ LambdaQueryWrapper<TextbookWarehouseRecord> textbookWarehouseRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ textbookWarehouseRecordLambdaQueryWrapper
|
|
|
+ .in(TextbookWarehouseRecord::getDataItemId, idList)
|
|
|
+ .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ ;
|
|
|
+ List<TextbookWarehouseRecord> textbookWarehouseRecords = textbookWarehouseRecordMapper.selectList(textbookWarehouseRecordLambdaQueryWrapper);
|
|
|
+
|
|
|
+ Map<Long, TextbookWarehouseRecord> textbookWarehouseRecordByItemIdMap = textbookWarehouseRecords.stream()
|
|
|
+ .collect(Collectors.toMap(TextbookWarehouseRecord::getDataItemId, t -> t, (t1, t2) -> t2));
|
|
|
+
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ sb.append("RK");
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
+ String nowStr = now.format(dateTimeFormatter);
|
|
|
+ sb.append(nowStr);
|
|
|
+
|
|
|
+ LambdaQueryWrapper<TextbookWarehouseRecord> maxOrderNumberLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ maxOrderNumberLambdaQueryWrapper
|
|
|
+ .like(TextbookWarehouseRecord::getOrderNumber, sb.toString() + "%")
|
|
|
+ .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .orderByDesc(TextbookWarehouseRecord::getOrderNumber)
|
|
|
+ .last("limit 1")
|
|
|
+ ;
|
|
|
+ TextbookWarehouseRecord maxOrderNumber = textbookWarehouseRecordMapper.selectOne(maxOrderNumberLambdaQueryWrapper);
|
|
|
+ int oldOrderInteger = 0;
|
|
|
+ if(ObjectUtils.isNotEmpty(maxOrderNumber) && ObjectUtils.isNotEmpty(maxOrderNumber.getOrderNumber())){
|
|
|
+ String oldOrderNumber = maxOrderNumber.getOrderNumber();
|
|
|
+ String oldOrder = oldOrderNumber.substring(oldOrderNumber.length() - 3);
|
|
|
+ oldOrderInteger = Integer.parseInt(oldOrder);
|
|
|
}
|
|
|
|
|
|
int successNum = 0;
|
|
|
int instockroomNum = 0;
|
|
|
- for (TextbookInstockroomImportDto item : dataList) {
|
|
|
- if (StringUtils.isBlank(item.getIssn())) {
|
|
|
- continue;
|
|
|
+
|
|
|
+
|
|
|
+ TextbookSubscriptionItem oldItem;
|
|
|
+ TextbookSubscriptionItem updateItem;
|
|
|
+ TextbookWarehouseRecord oldTextbookWarehouseRecord;
|
|
|
+ TextbookWarehouseRecord textbookWarehouseRecord;
|
|
|
+ TextbookWarehouseRecordDetail textbookWarehouseRecordDetail;
|
|
|
+ Date nowDate = new Date();
|
|
|
+ Long loginId = StpUtil.getLoginIdAsLong();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++){
|
|
|
+ TextbookSubscriptionExportQueryListVo vo = excelDataList.get(i);
|
|
|
+ if(ObjectUtils.isEmpty(vo)){
|
|
|
+ throw new MyException("第" + (i + 4) + "行数据写入失败,请刷新重试");
|
|
|
}
|
|
|
- TextbookSubscriptionItemVo old = itemByIssnMap.get(item.getIssn());
|
|
|
- if (old == null) {
|
|
|
+
|
|
|
+ if(ObjectUtils.isEmpty(vo.getInNum()) || vo.getInNum() <= 0){
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- TextbookSubscriptionItem updateItem = new TextbookSubscriptionItem();
|
|
|
- updateItem.setId(old.getId());
|
|
|
- updateItem.setInStockNum(old.getInStockNum() + item.getInNum());
|
|
|
+ if(StringUtils.isEmpty(vo.getTextbookSubscriptionItemId())){
|
|
|
+ throw new MyException("第" + (i + 4) + "行数据主键被修改,请重新下载模板");
|
|
|
+ }
|
|
|
+
|
|
|
+ oldItem = byIdMap.get(Long.parseLong(vo.getTextbookSubscriptionItemId()));
|
|
|
+
|
|
|
+ if(ObjectUtils.isEmpty(oldItem)){
|
|
|
+ throw new MyException("第" + (i + 4) + "行数据主键被修改,请重新下载模板");
|
|
|
+ }
|
|
|
+
|
|
|
+ oldTextbookWarehouseRecord = textbookWarehouseRecordByItemIdMap.get(Long.parseLong(vo.getTextbookSubscriptionItemId()));
|
|
|
+
|
|
|
+ updateItem = new TextbookSubscriptionItem();
|
|
|
+ updateItem.setId(oldItem.getId());
|
|
|
+ if(ObjectUtils.isEmpty(oldItem.getInStockNum()) || oldItem.getInStockNum() <= 0){
|
|
|
+ updateItem.setDiscount(vo.getDiscount());
|
|
|
+ updateItem.setPrice(vo.getPrice().multiply(BigDecimal.valueOf(vo.getDiscount() / 10)));
|
|
|
+ }
|
|
|
+ updateItem.setInStockNum(oldItem.getInStockNum() + vo.getInNum());
|
|
|
+ updateItem.setModifyDate(nowDate);
|
|
|
+ updateItem.setModifyUserId(loginId);
|
|
|
textbookSubscriptionTextbookSubscriptionItemMapper.updateById(updateItem);
|
|
|
|
|
|
-
|
|
|
- TextbookWarehouseRecord textbookWarehouseRecord = new TextbookWarehouseRecord();
|
|
|
- textbookWarehouseRecord.setTextbookId(old.getTextbookId());
|
|
|
- textbookWarehouseRecord.setDataId(textbookSubscriptionId);
|
|
|
- textbookWarehouseRecord.setDataItemId(old.getId());
|
|
|
- textbookWarehouseRecord.setWarehouseNumber(item.getInNum());
|
|
|
- textbookWarehouseRecord.setWarehouseMode(WarehouseModeEnum.WmManual.getCode());
|
|
|
- textbookWarehouseRecordMapper.insert(textbookWarehouseRecord);
|
|
|
- successNum++;
|
|
|
- successNum += item.getInNum();
|
|
|
+
|
|
|
+
|
|
|
+ long textbookWarehouseRecordId = IdUtil.getSnowflakeNextId();
|
|
|
+ if (ObjectUtils.isEmpty(oldTextbookWarehouseRecord)) {
|
|
|
+
|
|
|
+ textbookWarehouseRecord = new TextbookWarehouseRecord();
|
|
|
+ textbookWarehouseRecord.setId(textbookWarehouseRecordId);
|
|
|
+ textbookWarehouseRecord.setBaseSemesterId(textbookSubscription.getBaseSemesterId());
|
|
|
+ textbookWarehouseRecord.setTextbookId(oldItem.getTextbookId());
|
|
|
+ textbookWarehouseRecord.setDataId(oldItem.getTextbookSubscriptionId());
|
|
|
+ textbookWarehouseRecord.setDataItemId(oldItem.getId());
|
|
|
+ textbookWarehouseRecord.setWarehouseNumber(ObjectUtils.isNotEmpty(vo.getInNum()) ? vo.getInNum() : 0);
|
|
|
+ textbookWarehouseRecord.setPrice(ObjectUtils.isNotEmpty(oldItem.getPrice()) ? oldItem.getPrice() : BigDecimal.ZERO);
|
|
|
+ textbookWarehouseRecord.setDiscount(ObjectUtils.isNotEmpty(updateItem.getDiscount()) ? updateItem.getDiscount() : oldItem.getDiscount());
|
|
|
+ textbookWarehouseRecord.setSubtotal(textbookWarehouseRecord.getPrice().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getDiscount() / 10)));
|
|
|
+ textbookWarehouseRecord.setTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getWarehouseNumber())));
|
|
|
+ oldOrderInteger += 1;
|
|
|
+ String newOrder = String.format("%03d", oldOrderInteger);
|
|
|
+ textbookWarehouseRecord.setOrderNumber(sb + newOrder);
|
|
|
+ textbookWarehouseRecord.setReturnBookstoreNumber(0);
|
|
|
+ textbookWarehouseRecord.setActualWarehouseNumber(textbookWarehouseRecord.getWarehouseNumber() - textbookWarehouseRecord.getReturnBookstoreNumber());
|
|
|
+ textbookWarehouseRecord.setActualTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getActualWarehouseNumber())));
|
|
|
+ textbookWarehouseRecord.setIssuedNumber(0);
|
|
|
+ textbookWarehouseRecord.setRecedeNumber(0);
|
|
|
+ textbookWarehouseRecord.setRemainNumber(textbookWarehouseRecord.getActualWarehouseNumber());
|
|
|
+ textbookWarehouseRecord.setWarehouseMode(WarehouseModeEnum.WmSubscription.getCode());
|
|
|
+ textbookWarehouseRecord.setCreateDate(nowDate);
|
|
|
+ textbookWarehouseRecord.setCreateUserId(loginId);
|
|
|
+ textbookWarehouseRecordMapper.insert(textbookWarehouseRecord);
|
|
|
+ }else {
|
|
|
+ textbookWarehouseRecordId = oldTextbookWarehouseRecord.getId();
|
|
|
+ textbookWarehouseRecord = BeanUtil.toBean(oldTextbookWarehouseRecord, TextbookWarehouseRecord.class);
|
|
|
+ textbookWarehouseRecord.setWarehouseNumber(textbookWarehouseRecord.getWarehouseNumber() + vo.getInNum());
|
|
|
+ textbookWarehouseRecord.setTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getWarehouseNumber())));
|
|
|
+ textbookWarehouseRecord.setActualWarehouseNumber(textbookWarehouseRecord.getActualWarehouseNumber() + vo.getInNum());
|
|
|
+ textbookWarehouseRecord.setActualTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getActualWarehouseNumber())));
|
|
|
+ textbookWarehouseRecord.setRemainNumber(textbookWarehouseRecord.getRemainNumber() + vo.getInNum());
|
|
|
+ textbookWarehouseRecord.setModifyDate(nowDate);
|
|
|
+ textbookWarehouseRecord.setModifyUserId(loginId);
|
|
|
+ textbookWarehouseRecordMapper.updateById(textbookWarehouseRecord);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ textbookWarehouseRecordDetail = new TextbookWarehouseRecordDetail();
|
|
|
+ textbookWarehouseRecordDetail.setTextbookWarehouseRecordId(textbookWarehouseRecordId);
|
|
|
+ textbookWarehouseRecordDetail.setWarehouseMode(WarehouseModeEnum.WmSubscription.getCode());
|
|
|
+ textbookWarehouseRecordDetail.setWarehouseNumber(vo.getInNum());
|
|
|
+ textbookWarehouseRecordDetail.setCreateDate(nowDate);
|
|
|
+ textbookWarehouseRecordDetail.setCreateUserId(loginId);
|
|
|
+ textbookWarehouseRecordDetailMapper.insert(textbookWarehouseRecordDetail);
|
|
|
+ successNum += 1;
|
|
|
+ instockroomNum += vo.getInNum();
|
|
|
}
|
|
|
- return "成功入库" + successNum + "样,成功入库" + successNum + "本";
|
|
|
+ return "成功入库" + successNum + "样,成功入库" + instockroomNum + "本";
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -887,59 +996,102 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<TextbookSubscriptionExportQueryListVo> textbookSubscriptionExportQuery(TextbookSubscriptionExportQueryListDto dto) {
|
|
|
- TextbookSubscription textbookSubscription = this.getById(dto.getTextbookSubscriptionId());
|
|
|
- if (textbookSubscription == null) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- MPJLambdaWrapper<TextbookSubscriptionItem> textbookSubscriptionItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
- textbookSubscriptionItemMPJLambdaWrapper
|
|
|
- .selectAs(BaseCourseSubject::getName, TextbookSubscriptionExportQueryListVo::getCourseName)
|
|
|
+ public ByteArrayOutputStream textbookSubscriptionExportQuery(TextbookSubscriptionExportQueryListDto dto) throws IOException {
|
|
|
+ MPJLambdaWrapper<TextbookSubscriptionItem> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
+ queryWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .selectAs(TextbookSubscriptionItem::getId, TextbookSubscriptionExportQueryListVo::getTextbookSubscriptionItemId)
|
|
|
+ .selectAs(Textbook::getPrice, TextbookSubscriptionExportQueryListVo::getPrice)
|
|
|
+ .selectAs(TextbookSubscriptionItem::getDiscount, TextbookSubscriptionExportQueryListVo::getDiscount)
|
|
|
.selectAs(TextbookSubscriptionItem::getStudentNum, TextbookSubscriptionExportQueryListVo::getStudentSubscriptionNumber)
|
|
|
.selectAs(TextbookSubscriptionItem::getTeacherNum, TextbookSubscriptionExportQueryListVo::getTeacherSubscriptionNumber)
|
|
|
- .selectAs(TextbookSubscriptionItem::getInStockNum, TextbookSubscriptionExportQueryListVo::getInStockroomNum)
|
|
|
- .selectAs(TextbookSubscription::getBaseClassIds, TextbookSubscriptionExportQueryListVo::getClassIds)
|
|
|
- .select("t.student_num + t.teacher_num as subscription_sum")
|
|
|
- .select(TextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
|
|
|
.select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
|
|
|
- .leftJoin(TextbookSubscription.class, TextbookSubscription::getId, TextbookSubscriptionItem::getTextbookSubscriptionId)
|
|
|
+ .select(TextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
|
|
|
.leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId)
|
|
|
+ .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(BaseCourseSubject::getName, TextbookSubscriptionExportQueryListVo::getCourseName)
|
|
|
+ )
|
|
|
.leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
|
|
|
- ext -> ext.selectAs(DictionaryDetail::getName, TextbookSubscriptionExportQueryListVo::getTextbookTypeCn))
|
|
|
- .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
|
|
|
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, textbookSubscription.getId())
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(DictionaryDetail::getName, TextbookSubscriptionExportQueryListVo::getTextbookTypeCn)
|
|
|
+ )
|
|
|
+ .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getTextbookSubscriptionId())
|
|
|
+ .orderByAsc(TextbookSubscriptionItem::getInStockNum)
|
|
|
;
|
|
|
- List<TextbookSubscriptionExportQueryListVo> itemList = textbookSubscriptionTextbookSubscriptionItemMapper.selectJoinList(TextbookSubscriptionExportQueryListVo.class, textbookSubscriptionItemMPJLambdaWrapper);
|
|
|
|
|
|
-
|
|
|
- String classIds = "";
|
|
|
- List<String> classIdList = new ArrayList<>();
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- if (!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")) {
|
|
|
- classIds = itemList.get(0).getClassIds();
|
|
|
- String[] classIdArr = classIds.split(",");
|
|
|
- classIdList = Arrays.asList(classIdArr);
|
|
|
-
|
|
|
- List<BaseClass> baseClassList = baseClassMapper.selectList(Wrappers.<BaseClass>query().lambda().in(BaseClass::getId, classIdList));
|
|
|
- Map<Long, BaseClass> baseClassMap = baseClassList.stream()
|
|
|
- .collect(Collectors.toMap(BaseClass::getId, baseClass -> baseClass));
|
|
|
-
|
|
|
- for (String classId : classIdList){
|
|
|
- BaseClass baseClass = baseClassMap.get(Long.parseLong(classId));
|
|
|
- if(baseClass != null){
|
|
|
- sb.append(baseClass.getName());
|
|
|
- sb.append(",");
|
|
|
- }
|
|
|
- }
|
|
|
- sb.deleteCharAt(sb.length() - 1);
|
|
|
- }*/
|
|
|
+ List<TextbookSubscriptionExportQueryListVo> vos = textbookSubscriptionTextbookSubscriptionItemMapper.selectJoinList(TextbookSubscriptionExportQueryListVo.class, queryWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ List<List<String>> dataList = new ArrayList<>();
|
|
|
+ for (TextbookSubscriptionExportQueryListVo vo : vos) {
|
|
|
+ List<String> data = new ArrayList<>();
|
|
|
+ data.add(vo.getTextbookSubscriptionItemId());
|
|
|
+ data.add(vo.getCourseName());
|
|
|
+ data.add(vo.getBookName());
|
|
|
+ data.add(vo.getIssn());
|
|
|
+ data.add(vo.getEditorInChief());
|
|
|
+ data.add(vo.getPublishingHouse());
|
|
|
+ data.add(vo.getTextbookTypeCn());
|
|
|
+ data.add(vo.getVersion());
|
|
|
+ data.add(vo.getUseType() + "");
|
|
|
+ data.add(vo.getStudentSubscriptionNumber() + "");
|
|
|
+ data.add(vo.getTeacherSubscriptionNumber() + "");
|
|
|
+ data.add(vo.getInStockNum() + "");
|
|
|
+ data.add(vo.getPrice() + "");
|
|
|
+ data.add(vo.getDiscount() + "");
|
|
|
+ dataList.add(data);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Workbook workbook = new XSSFWorkbook();
|
|
|
+
|
|
|
+ String sheetName = "sheet1";
|
|
|
+ Sheet sheet = workbook.createSheet(sheetName);
|
|
|
+
|
|
|
+ List<ImportConfig> importConfigs = ImportExcelUtil.allFields(new TextbookSubscriptionExportQueryListVo());
|
|
|
+
|
|
|
+
|
|
|
+ ImportExcelUtil.createBigHead(workbook, sheet, "教材入库导入模板", 0, importConfigs.size() - 1);
|
|
|
+
|
|
|
+
|
|
|
+ String cautionHead = "说明:教材的基础信息不能修改,请输入实际折扣和入库数量,然后直接导入当前excel";
|
|
|
+ ImportExcelUtil.createCautionHead(workbook, sheet, 1, cautionHead, importConfigs.size() - 1, 12);
|
|
|
+
|
|
|
+
|
|
|
+ ImportExcelUtil.createHead(workbook, sheet, importConfigs, 2);
|
|
|
+
|
|
|
+
|
|
|
+ int dataRowNumber = 3;
|
|
|
+
|
|
|
+
|
|
|
+ Font font = workbook.createFont();
|
|
|
+ font.setBold(false);
|
|
|
+ font.setFontName("宋体");
|
|
|
+ font.setFontHeightInPoints((short)12);
|
|
|
+ CellStyle cellStyle = workbook.createCellStyle();
|
|
|
+ cellStyle.setFont(font);
|
|
|
+ cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
+ cellStyle.setAlignment(HorizontalAlignment.LEFT);
|
|
|
+
|
|
|
+ for (List<String> rowData : dataList) {
|
|
|
+ Row dataRow = sheet.createRow(dataRowNumber);
|
|
|
+ for (int i = 0; i < rowData.size(); i ++){
|
|
|
+ String content = rowData.get(i);
|
|
|
+
|
|
|
+ Cell cell = dataRow.createCell(i);
|
|
|
+ cell.setCellValue(content);
|
|
|
+ cell.setCellStyle(cellStyle);
|
|
|
+ }
|
|
|
+ dataRowNumber ++;
|
|
|
}
|
|
|
|
|
|
- for (TextbookSubscriptionExportQueryListVo w : itemList) {
|
|
|
- w.setClassNum(classIdList.size());
|
|
|
+ for (int i = 0; i < importConfigs.size(); i++){
|
|
|
+ sheet.autoSizeColumn(i);
|
|
|
}
|
|
|
|
|
|
- return itemList;
|
|
|
+ ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
+ workbook.write(bot);
|
|
|
+ return bot;
|
|
|
}
|
|
|
}
|