| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095 |
- 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.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;
- 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.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.*;
- 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.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;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- /**
- * @title: 教材教辅征订记录表
- * @Author dzx
- * @Date: 2024-12-16
- * @Version 1.0
- */
- @Service
- @AllArgsConstructor
- public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<TextbookSubscriptionMapper, TextbookSubscription> implements ITextbookSubscriptionService {
- private final TextbookSubscriptionMapper textbookSubscriptionTextbookSubscriptionMapper;
- private final TextbookSubscriptionItemMapper textbookSubscriptionTextbookSubscriptionItemMapper;
- private final TextbookSubscriptionClassMapper textbookSubscriptionClassMapper;
- private final TextbookSubscriptionItemClassMapper textbookSubscriptionItemClassMapper;
- private final TextbookWarehouseRecordMapper textbookWarehouseRecordMapper;
- private final TextbookSubscriptionItemHistoryMapper textbookSubscriptionItemHistoryMapper;
- private final TextbookWarehouseRecordDetailMapper textbookWarehouseRecordDetailMapper;
- @Override
- public IPage<TextbookSubscriptionPageVo> pageRubAndHand(TextbookSubscriptionPageDto dto) {
- MPJLambdaWrapper<TextbookSubscription> queryWrapper = new MPJLambdaWrapper<>();
- queryWrapper
- .select(TextbookSubscription::getId)
- .selectAs(BaseSemester::getName, TextbookSubscriptionPageVo::getBaseSemesterIdCn)
- .select(TextbookSubscription.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionPageVo.class).contains(x.getProperty()))
- .leftJoin(BaseSemester.class, BaseSemester::getId, TextbookSubscription::getBaseSemesterId)
- .eq(dto.getBaseSemesterId() != null && dto.getBaseSemesterId() > 0, TextbookSubscription::getBaseSemesterId, dto.getBaseSemesterId())
- .eq(dto.getSubscriptionMethod() != null && dto.getSubscriptionMethod() > 0, TextbookSubscription::getSubscriptionMethod, dto.getSubscriptionMethod())
- .eq(StringUtils.isNotBlank(dto.getId()), TextbookSubscription::getId, dto.getId())
- .orderByDesc(TextbookSubscription::getCreateDate)
- ;
- return this.selectJoinListPage(ConventPage.getPage(dto), TextbookSubscriptionPageVo.class, queryWrapper);
- }
- @Override
- public IPage<InstockroomRecordsPageVo> instockroomRecordsPage(InstockroomRecordsPageDto dto) {
- MPJLambdaWrapper<TextbookWarehouseRecord> textbookWarehouseRecordMPJLambdaWrapper = new MPJLambdaWrapper<>();
- textbookWarehouseRecordMPJLambdaWrapper
- .disableSubLogicDel()
- .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(InstockroomRecordsPageVo.class).contains(x.getProperty()))
- .selectAs(TextbookWarehouseRecord::getDiscount, InstockroomRecordsPageVo::getActualDiscount)
- .selectAs(TextbookWarehouseRecord::getSubtotal, InstockroomRecordsPageVo::getActualPrice)
- .selectAs(TextbookWarehouseRecordDetail::getWarehouseNumber, InstockroomRecordsPageVo::getWarehouseNumber)
- .selectAs(TextbookWarehouseRecordDetail::getCreateDate, InstockroomRecordsPageVo::getCreateDate)
- .innerJoin(TextbookWarehouseRecordDetail.class, TextbookWarehouseRecordDetail::getTextbookWarehouseRecordId, TextbookWarehouseRecord::getId)
- .leftJoin(Textbook.class, Textbook::getId, TextbookWarehouseRecord::getTextbookId)
- .leftJoin(TextbookSubscriptionItem.class, TextbookSubscriptionItem::getId, TextbookWarehouseRecord::getDataItemId,
- wrapper -> wrapper
- .selectAs(TextbookSubscriptionItem::getStudentNum, InstockroomRecordsPageVo::getStudentNum)
- .selectAs(TextbookSubscriptionItem::getTeacherNum, InstockroomRecordsPageVo::getTeacherNum)
- .select("t3.student_num + t3.teacher_num as tatol_num")
- )
- .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
- wrapper -> wrapper
- .selectAs(BaseCourseSubject::getName, InstockroomRecordsPageVo::getCourseSubjectIdCn)
- )
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
- wrapper -> wrapper
- .selectAs(DictionaryDetail::getName, InstockroomRecordsPageVo::getTextbookTypeCn)
- )
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, TextbookWarehouseRecordDetail::getWarehouseMode,
- wrapper -> wrapper
- .selectAs(DictionaryDetail::getName, InstockroomRecordsPageVo::getWarehouseModeCn)
- )
- .leftJoin(XjrUser.class, XjrUser::getId, TextbookWarehouseRecordDetail::getCreateUserId,
- wrapper -> wrapper
- .selectAs(XjrUser::getName, InstockroomRecordsPageVo::getCreateUserIdCn)
- )
- .eq(TextbookWarehouseRecord::getDataId, dto.getId())
- .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
- .eq(TextbookWarehouseRecordDetail::getDeleteMark, DeleteMark.NODELETE.getCode())
- .eq(Textbook::getDeleteMark, DeleteMark.NODELETE.getCode())
- .eq(TextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
- ;
- return textbookWarehouseRecordMapper.selectJoinPage(ConventPage.getPage(dto), InstockroomRecordsPageVo.class, textbookWarehouseRecordMPJLambdaWrapper);
- }
- @Override
- public List<TextbookInstockroomListVo> instockroomList(TextbookInstockroomListDto dto) {
- MPJLambdaWrapper<TextbookSubscriptionItem> queryWrapper = new MPJLambdaWrapper<>();
- queryWrapper
- .disableSubLogicDel()
- .selectAs(Textbook::getPrice, TextbookInstockroomListVo::getPrice)
- .selectAs(TextbookSubscriptionItem::getDiscount, TextbookInstockroomListVo::getDiscount)
- .selectAs(TextbookSubscriptionItem::getPrice, TextbookInstockroomListVo::getActualPrice)
- .selectAs(TextbookSubscriptionItem::getStudentNum, TextbookInstockroomListVo::getStudentSubscriptionNumber)
- .selectAs(TextbookSubscriptionItem::getTeacherNum, TextbookInstockroomListVo::getTeacherSubscriptionNumber)
- .selectAs(TextbookSubscriptionItem::getId, TextbookInstockroomListVo::getTextbookSubscriptionItemId)
- .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomListVo.class).contains(x.getProperty()))
- .select(TextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomListVo.class).contains(x.getProperty()))
- // .selectAs(TextbookSubscriptionItem::getPrice, TextbookInstockroomListVo::getActualPrice)
- // .selectAs(TextbookSubscriptionItem::getDiscount, TextbookInstockroomListVo::getDiscount)
- .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId)
- .leftJoin(TextbookWarehouseRecord.class, TextbookWarehouseRecord::getDataItemId, TextbookSubscriptionItem::getId)
- .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
- wrapper -> wrapper
- .selectAs(BaseCourseSubject::getName, TextbookInstockroomListVo::getCourseName)
- .like(StringUtils.isNotEmpty(dto.getCourseName()), BaseCourseSubject::getName, dto.getCourseName())
- )
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
- wrapper -> wrapper
- .selectAs(DictionaryDetail::getName, TextbookInstockroomListVo::getTextbookTypeCn)
- )
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getTextbookSubscriptionId())
- .like(StringUtils.isNotEmpty(dto.getBookName()), Textbook::getBookName, dto.getBookName())
- .like(StringUtils.isNotEmpty(dto.getIssn()), Textbook::getIssn, dto.getIssn())
- .orderByAsc(TextbookSubscriptionItem::getInStockNum)
- ;
- return textbookSubscriptionTextbookSubscriptionItemMapper.selectJoinList(TextbookInstockroomListVo.class, queryWrapper);
- }
- @Override
- public List<TextbookInstockroomOnceListVo> everyInstockroomList(TextbookInstockroomOnceListDto dto) {
- MPJLambdaWrapper<TextbookWarehouseRecord> queryWrapper = new MPJLambdaWrapper<>();
- queryWrapper
- .select(TextbookSubscriptionItem::getId)
- .selectAs(TextbookWarehouseRecord::getWarehouseNumber, TextbookInstockroomOnceListVo::getOnceInStockNum)
- .selectAs(TextbookWarehouseRecord::getCreateDate, TextbookInstockroomOnceListVo::getCreateDate)
- .selectAs(TextbookWarehouseRecord::getCreateUserId, TextbookInstockroomOnceListVo::getCreateUserId)
- .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomOnceListVo.class).contains(x.getProperty()))
- .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId)
- .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
- wrapper -> wrapper
- .selectAs(BaseCourseSubject::getName, TextbookInstockroomOnceListVo::getCourseName)
- )
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
- wrapper -> wrapper
- .selectAs(DictionaryDetail::getName, TextbookInstockroomOnceListVo::getTextbookTypeCn)
- )
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getTextbookSubscriptionId())
- .orderByAsc(TextbookSubscriptionItem::getInStockNum)
- ;
- return textbookWarehouseRecordMapper.selectJoinList(TextbookInstockroomOnceListVo.class, queryWrapper);
- }
- @Override
- public TextbookSubscriptionVo infoRubAndHand(Long id) {
- TextbookSubscription textbookSubscription = this.getById(id);
- TextbookSubscriptionVo textbookSubscriptionVo = BeanUtil.toBean(textbookSubscription, TextbookSubscriptionVo.class);
- MPJLambdaWrapper<TextbookSubscriptionItem> textbookSubscriptionItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
- textbookSubscriptionItemMPJLambdaWrapper
- .select(TextbookSubscriptionItem::getId)
- .select(TextbookSubscriptionItem.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionItemVo.class).contains(x.getProperty()))
- .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId,
- wrapper -> wrapper
- .select(Textbook.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionItemVo.class).contains(x.getProperty()))
- .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
- wp -> wp
- .selectAs(BaseCourseSubject::getName, TextbookSubscriptionItemVo::getCourseSubjectIdCn)
- )
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
- wp -> wp
- .selectAs(DictionaryDetail::getName, TextbookSubscriptionItemVo::getTextbookTypeCn)
- )
- )
- .selectAs(TextbookSubscriptionItem::getPrice, TextbookSubscriptionItemVo::getPricing)
- .selectAs(Textbook::getPrice, TextbookSubscriptionItemVo::getPrice)
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, id)
- ;
- List<TextbookSubscriptionItemVo> list = textbookSubscriptionTextbookSubscriptionItemMapper.selectJoinList(TextbookSubscriptionItemVo.class, textbookSubscriptionItemMPJLambdaWrapper);
- textbookSubscriptionVo.setTextbookSubscriptionItemList(list);
- return textbookSubscriptionVo;
- }
- @Override
- public TextbookSubscriptionDetailVo detail(Long id) {
- TextbookSubscription textbookSubscription = this.getById(id);
- if (ObjectUtils.isEmpty(textbookSubscription)) {
- throw new MyException("证订记录被修改,请刷新重试");
- }
- // 获取所有的证订项目
- LambdaQueryWrapper<TextbookSubscriptionItem> subscriptionItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
- subscriptionItemLambdaQueryWrapper
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, id)
- .eq(TextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
- ;
- List<TextbookSubscriptionItem> textbookSubscriptionItemList = textbookSubscriptionTextbookSubscriptionItemMapper.selectList(subscriptionItemLambdaQueryWrapper);
- int stuNum = 0;
- int teaNum = 0;
- BigDecimal totalPrice = BigDecimal.valueOf(0);
- BigDecimal currentPrice;
- BigDecimal currentTotalPrice;
- for (TextbookSubscriptionItem textbookSubscriptionItem : textbookSubscriptionItemList) {
- stuNum += textbookSubscriptionItem.getStudentNum();
- teaNum += textbookSubscriptionItem.getTeacherNum();
- currentPrice = textbookSubscriptionItem.getPrice();
- currentTotalPrice = currentPrice.multiply(BigDecimal.valueOf(textbookSubscriptionItem.getTeacherNum() + textbookSubscriptionItem.getStudentNum()));
- totalPrice = totalPrice.add(currentTotalPrice);
- }
- TextbookSubscriptionDetailVo textbookSubscriptionDetailVo = new TextbookSubscriptionDetailVo();
- textbookSubscriptionDetailVo.setId(String.valueOf(id));
- textbookSubscriptionDetailVo.setStudentTatolNum(stuNum);
- textbookSubscriptionDetailVo.setTeacherTatolNum(teaNum);
- textbookSubscriptionDetailVo.setSum(stuNum + teaNum);
- textbookSubscriptionDetailVo.setSumPrice(totalPrice);
- return textbookSubscriptionDetailVo;
- }
- @Override
- public IPage<TextbookSubscriptionItemPageVo> itemPage(TextbookSubscriptionItemPageDto dto) {
- MPJLambdaWrapper<TextbookSubscriptionItem> textbookSubscriptionItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
- textbookSubscriptionItemMPJLambdaWrapper
- .select(TextbookSubscriptionItem::getId)
- .select(TextbookSubscriptionItem.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionItemPageVo.class).contains(x.getProperty()))
- .leftJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId,
- wrapper -> wrapper
- .select(Textbook.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionItemPageVo.class).contains(x.getProperty()))
- .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId,
- wp -> wp
- .selectAs(BaseCourseSubject::getName, TextbookSubscriptionItemPageVo::getCourseSubjectIdCn)
- .like(StringUtils.isNotBlank(dto.getCourseSubjectIdCn()), BaseCourseSubject::getName, dto.getCourseSubjectIdCn())
- )
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
- wp -> wp
- .selectAs(DictionaryDetail::getName, TextbookSubscriptionItemPageVo::getTextbookTypeCn)
- )
- .like(StringUtils.isNotBlank(dto.getBookName()), Textbook::getBookName, dto.getBookName())
- .eq(StringUtils.isNotBlank(dto.getTextbookType()), Textbook::getTextbookType, dto.getTextbookType())
- )
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getTextbookSubscriptionId())
- ;
- IPage<TextbookSubscriptionItemPageVo> page = textbookSubscriptionTextbookSubscriptionItemMapper.selectJoinPage(ConventPage.getPage(dto), TextbookSubscriptionItemPageVo.class, textbookSubscriptionItemMPJLambdaWrapper);
- return page;
- }
- @Override
- public IPage<BaseclassPageVo> baseclassPage(BaseclassPageDto dto) {
- // 查询征订记录总的征订班级
- MPJLambdaWrapper<TextbookSubscriptionItem> baseClassMPJLambdaWrapper = new MPJLambdaWrapper<>();
- baseClassMPJLambdaWrapper
- .disableSubLogicDel()
- .distinct()
- .selectAs(BaseGrade::getName, BaseclassPageVo::getGradeIdCn)
- .selectAs(XjrUser::getName, BaseclassPageVo::getTeacherIdCn)
- .select(" (select" +
- " count(a.id)" +
- " from base_student_school_roll a" +
- " where a.class_id = t1.base_class_id" +
- " and a.archives_status = 'FB2901'" +
- " and a.delete_mark = 0" +
- " ) as total_student")
- .select(BaseClass.class, x -> VoToColumnUtil.fieldsToColumns(BaseclassPageVo.class).contains(x.getProperty()))
- .innerJoin(TextbookSubscriptionItemClass.class, TextbookSubscriptionItemClass::getTextbookSubscriptionItemId, TextbookSubscriptionItem::getId)
- .leftJoin(BaseClass.class, BaseClass::getId, TextbookSubscriptionItemClass::getBaseClassId)
- .leftJoin(BaseGrade.class, BaseGrade::getId, BaseClass::getGradeId)
- .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
- .eq(ObjectUtils.isNotEmpty(dto.getId()), TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getId())
- .eq(ObjectUtils.isNotEmpty(dto.getTextbookSubscriptionItemId()), TextbookSubscriptionItem::getId, dto.getTextbookSubscriptionItemId())
- .eq(TextbookSubscriptionClass::getDeleteMark, DeleteMark.NODELETE.getCode())
- ;
- return textbookSubscriptionTextbookSubscriptionItemMapper.selectJoinPage(ConventPage.getPage(dto), BaseclassPageVo.class, baseClassMPJLambdaWrapper);
- }
- @Override
- public List<SubscriptionItemListDistributeVo> itemListConfirmDistribute(SubscriptionItemListDistributeDto dto) {
- MPJLambdaWrapper<TextbookWarehouseRecord> textbookWarehouseRecordMPJLambdaWrapper = new MPJLambdaWrapper<>();
- textbookWarehouseRecordMPJLambdaWrapper
- .disableSubLogicDel()
- .select(TextbookWarehouseRecord::getId)
- .selectAs(TextbookWarehouseRecord::getSubtotal, SubscriptionItemListDistributeVo::getActulPrice)
- .select(TextbookWarehouseRecord.class,x -> VoToColumnUtil.fieldsToColumns(SubscriptionItemListDistributeVo.class).contains(x.getProperty()))
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, TextbookWarehouseRecord::getWarehouseMode,
- wrapper -> wrapper
- .selectAs(DictionaryDetail::getName, SubscriptionItemListDistributeVo::getWarehouseModeCn)
- )
- .eq(TextbookWarehouseRecord::getTextbookId, dto.getTextbookId())
- .gt(TextbookWarehouseRecord::getRemainNumber, 0)
- .orderByAsc(TextbookWarehouseRecord::getCreateDate)
- ;
- return textbookWarehouseRecordMapper.selectJoinList(SubscriptionItemListDistributeVo.class, textbookWarehouseRecordMPJLambdaWrapper);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean add(TextbookSubscription textbookSubscription) {
- // 处理征订表
- int sum = 0;
- for (TextbookSubscriptionItem textbookSubscriptionItem : textbookSubscription.getTextbookSubscriptionItemList()) {
- textbookSubscriptionItem.setStudentNum(ObjectUtils.isEmpty(textbookSubscriptionItem.getStudentNum()) ? 0 : textbookSubscriptionItem.getStudentNum());
- textbookSubscriptionItem.setTeacherNum(ObjectUtils.isEmpty(textbookSubscriptionItem.getTeacherNum()) ? 0 : textbookSubscriptionItem.getTeacherNum());
- sum += textbookSubscriptionItem.getStudentNum() + textbookSubscriptionItem.getTeacherNum();
- }
- textbookSubscription.setSum(sum);
- textbookSubscription.setCreateDate(new Date());
- // 处理征订单号
- StringBuilder sb = new StringBuilder();
- sb.append("ZD");
- LocalDateTime now = LocalDateTime.now();
- DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
- String nowStr = now.format(dateTimeFormatter);
- sb.append(nowStr);
- // 根据当前征订编号前缀去数据库找是否已经存在了
- LambdaQueryWrapper<TextbookSubscription> textbookSubscriptionLambdaQueryWrapper = new LambdaQueryWrapper<>();
- textbookSubscriptionLambdaQueryWrapper
- .like(TextbookSubscription::getOrderNumber, sb.toString() + "%")
- .eq(TextbookSubscription::getDeleteMark, DeleteMark.NODELETE.getCode())
- .orderByDesc(TextbookSubscription::getOrderNumber)
- .last("limit 1")
- ;
- TextbookSubscription maxOrderNumber = textbookSubscriptionTextbookSubscriptionMapper.selectOne(textbookSubscriptionLambdaQueryWrapper);
- int oldOrderInteger = 1;
- if(ObjectUtils.isNotEmpty(maxOrderNumber) && ObjectUtils.isNotEmpty(maxOrderNumber.getOrderNumber())){
- String oldOrderNumber = maxOrderNumber.getOrderNumber();
- String oldOrder = oldOrderNumber.substring(oldOrderNumber.length() - 3);
- oldOrderInteger = Integer.parseInt(oldOrder);
- oldOrderInteger += 1;
- }
- String newOrder = String.format("%03d", oldOrderInteger); // 补零并格式化为三位数
- textbookSubscription.setOrderNumber(sb + newOrder);
- textbookSubscriptionTextbookSubscriptionMapper.insert(textbookSubscription);
- // // 处理征订和班级关联表
- // if (ObjectUtils.isNotEmpty(textbookSubscription.getSubscriptionMethod())
- // && textbookSubscription.getSubscriptionMethod() == 1
- // && StringUtils.isNotBlank(textbookSubscription.getBaseClassIds())
- // ) {
- // String[] classIdArr = textbookSubscription.getBaseClassIds().split(",");
- // TextbookSubscriptionClass textbookSubscriptionClass;
- // for (String str : classIdArr) {
- // textbookSubscriptionClass = new TextbookSubscriptionClass();
- // textbookSubscriptionClass.setTextbookSubscriptionId(textbookSubscription.getId());
- // textbookSubscriptionClass.setBaseClassId(Long.parseLong(str));
- // textbookSubscriptionClass.setCreateDate(new Date());
- // textbookSubscriptionClassMapper.insert(textbookSubscriptionClass);
- // }
- // }
- // 处理征订项
- TextbookSubscriptionItemClass textbookSubscriptionItemClass;
- for (TextbookSubscriptionItem textbookSubscriptionItem : textbookSubscription.getTextbookSubscriptionItemList()) {
- String[] classIdArr = new String[0];
- if (ObjectUtils.isNotEmpty(textbookSubscription.getSubscriptionMethod())
- && textbookSubscription.getSubscriptionMethod() == 1
- && ObjectUtils.isNotEmpty(textbookSubscriptionItem.getClassIds())
- ) {
- classIdArr = textbookSubscriptionItem.getClassIds().split(",");
- }
- textbookSubscriptionItem.setUseClassNum(classIdArr.length);
- textbookSubscriptionItem.setTextbookSubscriptionId(textbookSubscription.getId());
- textbookSubscriptionItem.setCreateDate(new Date());
- textbookSubscriptionTextbookSubscriptionItemMapper.insert(textbookSubscriptionItem);
- // 处理征订项和班级关联表
- for (String str : classIdArr) {
- textbookSubscriptionItemClass = new TextbookSubscriptionItemClass();
- textbookSubscriptionItemClass.setTextbookSubscriptionItemId(textbookSubscriptionItem.getId());
- textbookSubscriptionItemClass.setBaseClassId(Long.parseLong(str));
- textbookSubscriptionItemClass.setCreateDate(new Date());
- textbookSubscriptionItemClassMapper.insert(textbookSubscriptionItemClass);
- }
- }
- return true;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean instockroom(List<TextbookInstockroomDto> dtos) {
- if (dtos.isEmpty()) {
- return false;
- }
- TextbookSubscription textbookSubscription = this.getById(dtos.get(0).getTextbookSubscriptionId());
- if (ObjectUtils.isEmpty(textbookSubscription)) {
- throw new MyException("请选择需要入库的征订记录");
- }
- List<Long> textbookSubscriptionItemIds = new ArrayList<>();
- for (TextbookInstockroomDto dto : dtos) {
- if(ObjectUtils.isNotEmpty(dto.getTextbookSubscriptionItemId())){
- textbookSubscriptionItemIds.add(dto.getTextbookSubscriptionItemId());
- }
- }
- if (textbookSubscriptionItemIds.isEmpty()) {
- throw new MyException("请选择需要入库的教材");
- }
- //获取需要修改的list
- LambdaQueryWrapper<TextbookSubscriptionItem> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper
- .select(TextbookSubscriptionItem::getId)
- .select(TextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionItem.class).contains(x.getProperty()))
- .in(TextbookSubscriptionItem::getId, textbookSubscriptionItemIds)
- .eq(TextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
- ;
- List<TextbookSubscriptionItem> textbookSubscriptionItemList = textbookSubscriptionTextbookSubscriptionItemMapper.selectList(queryWrapper);
- if (textbookSubscriptionItemList.isEmpty()) {
- throw new MyException("证订项已经变更,请刷新重试");
- }
- Map<Long, TextbookSubscriptionItem> itemByIdMap = new HashMap<>();
- for (TextbookSubscriptionItem el : textbookSubscriptionItemList) {
- if(ObjectUtils.isNotEmpty(el.getId()) && !itemByIdMap.containsKey(el.getId())){
- itemByIdMap.put(el.getId(), el);
- }
- }
- // 获取当前征订已经产生的入库记录
- LambdaQueryWrapper<TextbookWarehouseRecord> textbookWarehouseRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
- textbookWarehouseRecordLambdaQueryWrapper
- .eq(TextbookWarehouseRecord::getDataId, textbookSubscription.getId())
- .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
- ;
- List<TextbookWarehouseRecord> textbookWarehouseRecords = textbookWarehouseRecordMapper.selectList(textbookWarehouseRecordLambdaQueryWrapper);
- Map<Long, TextbookWarehouseRecord> textbookWarehouseRecordByItemIdMap = new HashMap<>();
- for (TextbookWarehouseRecord twr : textbookWarehouseRecords) {
- if(ObjectUtils.isNotEmpty(twr.getDataItemId()) && !textbookWarehouseRecordByItemIdMap.containsKey(twr.getDataItemId())){
- textbookWarehouseRecordByItemIdMap.put(twr.getDataItemId(), twr);
- }
- }
- // 处理入库单号
- 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);
- }
- // 处理入库细节
- TextbookSubscriptionItem old = null;
- TextbookSubscriptionItem updateItem;
- TextbookWarehouseRecord textbookWarehouseRecord;
- TextbookWarehouseRecord oldTextbookWarehouseRecord = null;
- TextbookWarehouseRecordDetail textbookWarehouseRecordDetail;
- for (TextbookInstockroomDto dto : dtos) {
- if (ObjectUtils.isNotEmpty(dto.getTextbookSubscriptionItemId())) {
- old = itemByIdMap.get(dto.getTextbookSubscriptionItemId());
- oldTextbookWarehouseRecord = textbookWarehouseRecordByItemIdMap.get(dto.getTextbookSubscriptionItemId());
- }
- if (ObjectUtils.isEmpty(old)) {
- continue;
- }
- updateItem = new TextbookSubscriptionItem();
- updateItem.setId(old.getId());
- updateItem.setDiscount(ObjectUtils.isNotEmpty(dto.getDiscount()) ? dto.getDiscount() : 10);
- updateItem.setPrice(dto.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount() / 10)));
- updateItem.setInStockNum(old.getInStockNum() + dto.getInNum());
- updateItem.setModifyDate(new Date());
- updateItem.setModifyUserId(StpUtil.getLoginIdAsLong());
- textbookSubscriptionTextbookSubscriptionItemMapper.updateById(updateItem);
- // 判断当前征订中的当前教材是否已经有了入库记录
- // 当前征订项第一次入库
- long textbookWarehouseRecordId = IdUtil.getSnowflakeNextId();
- if (ObjectUtils.isEmpty(oldTextbookWarehouseRecord)) {
- //新增入库记录
- textbookWarehouseRecord = new TextbookWarehouseRecord();
- textbookWarehouseRecord.setId(textbookWarehouseRecordId);
- textbookWarehouseRecord.setBaseSemesterId(textbookSubscription.getBaseSemesterId());
- textbookWarehouseRecord.setTextbookId(old.getTextbookId());
- textbookWarehouseRecord.setDataId(dto.getTextbookSubscriptionId());
- textbookWarehouseRecord.setDataItemId(dto.getTextbookSubscriptionItemId());
- textbookWarehouseRecord.setWarehouseNumber(ObjectUtils.isNotEmpty(dto.getInNum()) ? dto.getInNum() : 0);
- textbookWarehouseRecord.setPrice(ObjectUtils.isNotEmpty(dto.getPrice()) ? dto.getPrice() : BigDecimal.ZERO);
- textbookWarehouseRecord.setDiscount(ObjectUtils.isNotEmpty(dto.getDiscount()) ? dto.getDiscount() : 10D);
- textbookWarehouseRecord.setSubtotal(dto.getPrice().multiply(BigDecimal.valueOf(dto.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(new Date());
- textbookWarehouseRecord.setCreateUserId(StpUtil.getLoginIdAsLong());
- textbookWarehouseRecordMapper.insert(textbookWarehouseRecord);
- }else {
- textbookWarehouseRecordId = oldTextbookWarehouseRecord.getId();
- textbookWarehouseRecord = BeanUtil.toBean(oldTextbookWarehouseRecord, TextbookWarehouseRecord.class);
- textbookWarehouseRecord.setWarehouseNumber(textbookWarehouseRecord.getWarehouseNumber() + dto.getInNum());
- textbookWarehouseRecord.setTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getWarehouseNumber())));
- textbookWarehouseRecord.setActualWarehouseNumber(textbookWarehouseRecord.getActualWarehouseNumber() + dto.getInNum());
- textbookWarehouseRecord.setActualTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(textbookWarehouseRecord.getActualWarehouseNumber())));
- textbookWarehouseRecord.setRemainNumber(textbookWarehouseRecord.getRemainNumber() + dto.getInNum());
- textbookWarehouseRecord.setModifyDate(new Date());
- textbookWarehouseRecord.setModifyUserId(StpUtil.getLoginIdAsLong());
- textbookWarehouseRecordMapper.updateById(textbookWarehouseRecord);
- }
- // 新增教材入库记录详细入库记录
- textbookWarehouseRecordDetail = new TextbookWarehouseRecordDetail();
- textbookWarehouseRecordDetail.setTextbookWarehouseRecordId(textbookWarehouseRecordId);
- textbookWarehouseRecordDetail.setWarehouseMode(WarehouseModeEnum.WmSubscription.getCode());
- textbookWarehouseRecordDetail.setWarehouseNumber(dto.getInNum());
- textbookWarehouseRecordDetail.setCreateDate(new Date());
- textbookWarehouseRecordDetailMapper.insert(textbookWarehouseRecordDetail);
- }
- return true;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- 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());
- //获取需要修改的list
- LambdaQueryWrapper<TextbookSubscriptionItem> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper
- .in(TextbookSubscriptionItem::getId, idList)
- .eq(TextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
- ;
- 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));
- TextbookSubscription textbookSubscription = this.getById(textbookSubscriptionItemList.get(0).getTextbookSubscriptionId());
- if (ObjectUtils.isEmpty(textbookSubscription)) {
- throw new MyException("需要入库对应的征订记录失效");
- }
- // 获取当前征订已经产生的入库记录
- 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;
- // 处理入库细节
- 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) + "行数据写入失败,请刷新重试");
- }
- if(ObjectUtils.isEmpty(vo.getInNum()) || vo.getInNum() <= 0){
- continue;
- }
- 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(ObjectUtils.isNotEmpty(vo.getDiscount()) ? vo.getDiscount() : 10);
- 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);
- // 判断当前征订中的当前教材是否已经有了入库记录
- // 当前征订项第一次入库
- 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 + "样,成功入库" + instockroomNum + "本";
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean update(TextbookSubscription textbookSubscription) {
- int sum = 0;
- //********************************* TextbookSubscriptionItem 增删改 开始 *******************************************/
- {
- // 查出所有子级的id
- List<TextbookSubscriptionItem> textbookSubscriptionItemList = textbookSubscriptionTextbookSubscriptionItemMapper.selectList(
- Wrappers.lambdaQuery(TextbookSubscriptionItem.class)
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, textbookSubscription.getId())
- .select(TextbookSubscriptionItem::getId));
- List<Long> textbookSubscriptionItemIds = textbookSubscriptionItemList.stream()
- .map(TextbookSubscriptionItem::getId)
- .collect(Collectors.toList());
- // 原有子表单 没有被删除的主键
- List<Long> textbookSubscriptionItemOldIds = textbookSubscription.getTextbookSubscriptionItemList().stream()
- .map(TextbookSubscriptionItem::getId)
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
- // 找到需要删除的id
- List<Long> textbookSubscriptionItemRemoveIds = textbookSubscriptionItemIds.stream()
- .filter(item -> !textbookSubscriptionItemOldIds.contains(item))
- .collect(Collectors.toList());
- TextbookSubscriptionItemClass textbookSubscriptionItemClass;
- for (TextbookSubscriptionItem textbookSubscriptionItem : textbookSubscription.getTextbookSubscriptionItemList()) {
- // 如果不等于空则修改
- if (textbookSubscriptionItem.getId() != null) {
- textbookSubscriptionTextbookSubscriptionItemMapper.updateById(textbookSubscriptionItem);
- } else {
- // 如果等于空 则新增
- // 新增的时候应该处理班级关联
- String[] classIdArr = new String[0];
- if (ObjectUtils.isNotEmpty(textbookSubscription.getSubscriptionMethod())
- && textbookSubscription.getSubscriptionMethod() == 1
- && ObjectUtils.isNotEmpty(textbookSubscriptionItem.getClassIds())
- ) {
- classIdArr = textbookSubscriptionItem.getClassIds().split(",");
- }
- textbookSubscriptionItem.setUseClassNum(classIdArr.length);
- textbookSubscriptionItem.setTextbookSubscriptionId(textbookSubscription.getId());
- textbookSubscriptionItem.setCreateDate(new Date());
- textbookSubscriptionTextbookSubscriptionItemMapper.insert(textbookSubscriptionItem);
- // 处理征订项和班级关联表
- for (String str : classIdArr) {
- textbookSubscriptionItemClass = new TextbookSubscriptionItemClass();
- textbookSubscriptionItemClass.setTextbookSubscriptionItemId(textbookSubscriptionItem.getId());
- textbookSubscriptionItemClass.setBaseClassId(Long.parseLong(str));
- textbookSubscriptionItemClass.setCreateDate(new Date());
- textbookSubscriptionItemClassMapper.insert(textbookSubscriptionItemClass);
- }
- }
- textbookSubscriptionItem.setStudentNum(ObjectUtils.isEmpty(textbookSubscriptionItem.getStudentNum()) ? 0 : textbookSubscriptionItem.getStudentNum());
- textbookSubscriptionItem.setTeacherNum(ObjectUtils.isEmpty(textbookSubscriptionItem.getTeacherNum()) ? 0 : textbookSubscriptionItem.getTeacherNum());
- sum += textbookSubscriptionItem.getStudentNum() + textbookSubscriptionItem.getTeacherNum();
- }
- // 已经不存在的id 删除
- if (ObjectUtils.isNotEmpty(textbookSubscriptionItemRemoveIds.isEmpty())) {
- LambdaUpdateWrapper<TextbookSubscriptionItemClass> textbookSubscriptionItemClassLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
- textbookSubscriptionItemClassLambdaUpdateWrapper
- .in(TextbookSubscriptionItemClass::getTextbookSubscriptionItemId, textbookSubscriptionItemRemoveIds)
- .eq(TextbookSubscriptionItemClass::getDeleteMark, DeleteMark.NODELETE.getCode())
- ;
- textbookSubscriptionItemClassMapper.delete(textbookSubscriptionItemClassLambdaUpdateWrapper);
- textbookSubscriptionTextbookSubscriptionItemMapper.deleteBatchIds(textbookSubscriptionItemRemoveIds);
- }
- }
- //********************************* TextbookSubscriptionItem 增删改 结束 *******************************************/
- //********************************* TextbookSubscriptionClass 增删改 开始 *******************************************/
- // LambdaUpdateWrapper<TextbookSubscriptionClass> textbookSubscriptionClassLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
- // textbookSubscriptionClassLambdaUpdateWrapper
- // .eq(TextbookSubscriptionClass::getTextbookSubscriptionId, textbookSubscription.getId())
- // ;
- // textbookSubscriptionClassMapper.delete(textbookSubscriptionClassLambdaUpdateWrapper);
- //
- // if (ObjectUtils.isNotEmpty(textbookSubscription.getSubscriptionMethod())
- // && textbookSubscription.getSubscriptionMethod() == 1
- // && StringUtils.isNotBlank(textbookSubscription.getBaseClassIds())
- // ) {
- // String[] classIdArr = textbookSubscription.getBaseClassIds().split(",");
- // for (String str : classIdArr) {
- // TextbookSubscriptionClass textbookSubscriptionClass = new TextbookSubscriptionClass();
- // textbookSubscriptionClass.setTextbookSubscriptionId(textbookSubscription.getId());
- // textbookSubscriptionClass.setBaseClassId(Long.parseLong(str));
- // textbookSubscriptionClass.setCreateDate(new Date());
- // textbookSubscriptionClassMapper.insert(textbookSubscriptionClass);
- // }
- // }
- //********************************* TextbookSubscriptionClass 增删改 结束 *******************************************/
- textbookSubscription.setSum(sum);
- textbookSubscriptionTextbookSubscriptionMapper.updateById(textbookSubscription);
- return true;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean alteration(UpdateTextbookSubscriptionItemDto dto) {
- TextbookSubscriptionItem old = textbookSubscriptionTextbookSubscriptionItemMapper.selectById(dto.getId());
- if(old == null){
- throw new MyException("征订项已经被修改,刷新重试");
- }
- TextbookSubscription textbookSubscription = this.getById(old.getTextbookSubscriptionId());
- if(ObjectUtils.isEmpty(textbookSubscription)){
- throw new MyException("征订已经被修改,刷新重试");
- }
- // 判断变更状态
- int alterationType = 0;
- if(!old.getStudentNum().equals(dto.getStudentNum())
- || !old.getTeacherNum().equals(dto.getTeacherNum())
- ){
- alterationType = 1;
- }
- if(!old.getTextbookId().equals(dto.getTextbookId())){
- alterationType = 2;
- }
- // 变更征订总数量
- TextbookSubscription updateTotalNum = new TextbookSubscription();
- if(ObjectUtils.isNotEmpty(textbookSubscription)){
- updateTotalNum.setId(textbookSubscription.getId());
- updateTotalNum.setSum((ObjectUtils.isNotEmpty(textbookSubscription.getSum()) ? textbookSubscription.getSum() : 0)
- + ((ObjectUtils.isNotEmpty(dto.getStudentNum()) ? dto.getStudentNum() : 0)
- - (ObjectUtils.isNotEmpty(old.getStudentNum()) ? old.getStudentNum() : 0))
- + ((ObjectUtils.isNotEmpty(dto.getTeacherNum()) ? dto.getTeacherNum() : 0)
- - (ObjectUtils.isNotEmpty(old.getTeacherNum()) ? old.getTeacherNum() : 0))
- );
- updateTotalNum.setModifyDate(new Date());
- this.updateById(updateTotalNum);
- }
- // 将历史记录保存到历史变更记录表
- // 当前征订项的变更历史最后一次记录
- LambdaQueryWrapper<TextbookSubscriptionItemHistory> textbookSubscriptionItemHistoryLambdaQueryWrapper = new LambdaQueryWrapper<>();
- textbookSubscriptionItemHistoryLambdaQueryWrapper
- .eq(TextbookSubscriptionItemHistory::getTextbookSubscriptionItemId, old.getId())
- .orderByDesc(TextbookSubscriptionItemHistory::getHistoryVersion)
- .last("limit 1")
- ;
- TextbookSubscriptionItemHistory lastOne = textbookSubscriptionItemHistoryMapper.selectOne(textbookSubscriptionItemHistoryLambdaQueryWrapper);
- // 将变更前的数据记录在历史表中
- TextbookSubscriptionItemHistory textbookSubscriptionItemHistory = new TextbookSubscriptionItemHistory();
- // 变更前
- textbookSubscriptionItemHistory.setOldTextbookId(old.getTextbookId());
- textbookSubscriptionItemHistory.setOldStudentNum(old.getStudentNum());
- textbookSubscriptionItemHistory.setOldTeacherNum(old.getTeacherNum());
- textbookSubscriptionItemHistory.setOldDiscount(old.getDiscount());
- textbookSubscriptionItemHistory.setOldPrice(old.getPrice());
- textbookSubscriptionItemHistory.setOldInStockNum(old.getInStockNum());
- textbookSubscriptionItemHistory.setOldOutStockNum(old.getOutStockNum());
- // 变更后
- textbookSubscriptionItemHistory.setNewTextbookId(dto.getTextbookId());
- textbookSubscriptionItemHistory.setNewStudentNum(dto.getStudentNum());
- textbookSubscriptionItemHistory.setNewTeacherNum(dto.getTeacherNum());
- textbookSubscriptionItemHistory.setNewDiscount(dto.getDiscount());
- textbookSubscriptionItemHistory.setNewPrice(dto.getPrice());
- textbookSubscriptionItemHistory.setNewInStockNum(dto.getInStockNum());
- textbookSubscriptionItemHistory.setNewOutStockNum(dto.getOutStockNum());
- textbookSubscriptionItemHistory.setTextbookSubscriptionId(old.getTextbookSubscriptionId());
- textbookSubscriptionItemHistory.setTextbookSubscriptionItemId(old.getId());
- textbookSubscriptionItemHistory.setCreateDate(new Date());
- textbookSubscriptionItemHistory.setCreateUserId(StpUtil.getLoginIdAsLong());
- if(ObjectUtils.isNotEmpty(lastOne)){
- textbookSubscriptionItemHistory.setHistoryVersion(lastOne.getHistoryVersion() + 1);
- } else {
- textbookSubscriptionItemHistory.setHistoryVersion(1);
- }
- textbookSubscriptionItemHistory.setAlterationType(alterationType);
- textbookSubscriptionItemHistoryMapper.insert(textbookSubscriptionItemHistory);
- //变更当前记录
- TextbookSubscriptionItem updateItem = new TextbookSubscriptionItem();
- BeanUtils.copyProperties(dto, updateItem);
- updateItem.setAlterationType(alterationType);
- textbookSubscriptionTextbookSubscriptionItemMapper.updateById(updateItem);
- return true;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto) {
- TextbookSubscription textbookSubscription = this.getById(dto.getId());
- if (textbookSubscription == null) {
- return false;
- }
- TextbookSubscription newT = new TextbookSubscription();
- newT.setId(textbookSubscription.getId());
- newT.setStatus(dto.getStatus());
- return this.updateById(newT);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean delete(List<Long> ids) {
- LambdaQueryWrapper<TextbookSubscriptionItem> textbookSubscriptionItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
- textbookSubscriptionItemLambdaQueryWrapper
- .in(TextbookSubscriptionItem::getTextbookSubscriptionId, ids)
- ;
- List<TextbookSubscriptionItem> textbookSubscriptionItemList = textbookSubscriptionTextbookSubscriptionItemMapper.selectList(textbookSubscriptionItemLambdaQueryWrapper);
- List<Long> textbookSubscriptionItemIds = textbookSubscriptionItemList.stream()
- .map(TextbookSubscriptionItem::getId)
- .collect(Collectors.toList());
- if(ObjectUtils.isNotEmpty(textbookSubscriptionItemIds)){
- textbookSubscriptionItemClassMapper.delete(Wrappers.lambdaQuery(TextbookSubscriptionItemClass.class).in(TextbookSubscriptionItemClass::getTextbookSubscriptionItemId, textbookSubscriptionItemIds));
- }
- if(ObjectUtils.isNotEmpty(ids)) {
- textbookSubscriptionTextbookSubscriptionItemMapper.delete(Wrappers.lambdaQuery(TextbookSubscriptionItem.class).in(TextbookSubscriptionItem::getTextbookSubscriptionId, ids));
- textbookSubscriptionClassMapper.delete(Wrappers.lambdaQuery(TextbookSubscriptionClass.class).in(TextbookSubscriptionClass::getTextbookSubscriptionId, ids));
- textbookSubscriptionTextbookSubscriptionMapper.deleteBatchIds(ids);
- }
- return true;
- }
- @Override
- 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)
- .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
- .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,
- wrapper -> wrapper
- .selectAs(DictionaryDetail::getName, TextbookSubscriptionExportQueryListVo::getTextbookTypeCn)
- )
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getTextbookSubscriptionId())
- .orderByAsc(TextbookSubscriptionItem::getInStockNum)
- ;
- 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();
- // 创建一个工作表(sheet)
- 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, IndexedColors.RED.getIndex());
- // 表头
- 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 (int i = 0; i < importConfigs.size(); i++){
- sheet.autoSizeColumn(i);
- }
- ByteArrayOutputStream bot = new ByteArrayOutputStream();
- workbook.write(bot);
- return bot;
- }
- }
|