|
|
@@ -1,6 +1,8 @@
|
|
|
package com.xjrsoft.module.textbook.service.impl;
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
@@ -22,6 +24,7 @@ import com.xjrsoft.module.organization.mapper.RoleMapper;
|
|
|
import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
|
|
|
+import com.xjrsoft.module.textbook.dto.ClaimRecordsExportQueryDto;
|
|
|
import com.xjrsoft.module.textbook.dto.ConfirmDistributeDto;
|
|
|
import com.xjrsoft.module.textbook.dto.DistributePageDto;
|
|
|
import com.xjrsoft.module.textbook.dto.WfTextbookClaimPageDto;
|
|
|
@@ -38,6 +41,7 @@ import org.camunda.bpm.engine.history.HistoricProcessInstance;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
@@ -119,7 +123,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
.collect(Collectors.toList());
|
|
|
Map<Long, WfTextbookClaimItem> applicantTatolNumberMap = new HashMap<>();
|
|
|
WfTextbookClaimItem wfTextbookClaimItem;
|
|
|
- if(ObjectUtils.isNotEmpty(distributePageVos)){
|
|
|
+ if(ObjectUtils.isNotEmpty(textbookClaimIds)){
|
|
|
MPJLambdaWrapper<WfTextbookClaimItem> wfTextbookClaimItemLambdaQueryWrapper = new MPJLambdaWrapper<>();
|
|
|
wfTextbookClaimItemLambdaQueryWrapper
|
|
|
.selectAs(WfTextbookClaimItem::getWfTextbookClaimId, WfTextbookClaimItem::getWfTextbookClaimId)
|
|
|
@@ -572,4 +576,89 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ByteArrayOutputStream claimRecordsExportQuery(ClaimRecordsExportQueryDto dto) {
|
|
|
+ MPJLambdaWrapper<WfTextbookClaim> wfTextbookClaimMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ wfTextbookClaimMPJLambdaWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .select(WfTextbookClaim::getId)
|
|
|
+ .select(WfTextbookClaim.class,x -> VoToColumnUtil.fieldsToColumns(ClaimRecordsExportQueryVo.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, WfTextbookClaim::getId)
|
|
|
+ .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, WfTextbookClaim::getClaimType,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(DictionaryDetail::getName, ClaimRecordsExportQueryVo::getClaimTypeCn)
|
|
|
+ )
|
|
|
+ .leftJoin(XjrUser.class, XjrUser::getId, WfTextbookClaim::getApplicantUserId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(XjrUser::getName, ClaimRecordsExportQueryVo::getApplicantUserIdCn)
|
|
|
+ )
|
|
|
+ .leftJoin(BaseClass.class, BaseClass::getId, WfTextbookClaim::getClassId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(BaseClass::getName, ClaimRecordsExportQueryVo::getClassIdCn)
|
|
|
+ )
|
|
|
+ .leftJoin(BaseSemester.class, BaseSemester::getId, WfTextbookClaim::getBaseSemesterId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(BaseSemester::getName, ClaimRecordsExportQueryVo::getBaseSemesterIdCn)
|
|
|
+ )
|
|
|
+ .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
|
|
|
+ .eq(ObjectUtils.isNotEmpty(dto.getBaseSemesterId()), WfTextbookClaim::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+ ;
|
|
|
+ List<ClaimRecordsExportQueryVo> dataList = this.selectJoinList(ClaimRecordsExportQueryVo.class, wfTextbookClaimMPJLambdaWrapper);
|
|
|
+
|
|
|
+ // 处理申领总数量和已经发放总数量
|
|
|
+ if(ObjectUtils.isNotEmpty(dataList)){
|
|
|
+ List<Long> textbookClaimIds = dataList.stream()
|
|
|
+ .map(ClaimRecordsExportQueryVo::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<Long, WfTextbookClaimItem> applicantTatolNumberMap = new HashMap<>();
|
|
|
+ WfTextbookClaimItem wfTextbookClaimItem;
|
|
|
+ if(ObjectUtils.isNotEmpty(textbookClaimIds)){
|
|
|
+ MPJLambdaWrapper<WfTextbookClaimItem> wfTextbookClaimItemLambdaQueryWrapper = new MPJLambdaWrapper<>();
|
|
|
+ wfTextbookClaimItemLambdaQueryWrapper
|
|
|
+ .selectAs(WfTextbookClaimItem::getWfTextbookClaimId, WfTextbookClaimItem::getWfTextbookClaimId)
|
|
|
+ .selectSum(WfTextbookClaimItem::getApplicantNumber, WfTextbookClaimItem::getApplicantNumber)
|
|
|
+ .selectSum(WfTextbookClaimItem::getIssueNumber, WfTextbookClaimItem::getIssueNumber)
|
|
|
+ .in(WfTextbookClaimItem::getWfTextbookClaimId, textbookClaimIds)
|
|
|
+ .groupBy(WfTextbookClaimItem::getWfTextbookClaimId)
|
|
|
+ ;
|
|
|
+ List<WfTextbookClaimItem> wfTextbookClaimItemList = wfTextbookClaimWfTextbookClaimItemMapper.selectJoinList(WfTextbookClaimItem.class, wfTextbookClaimItemLambdaQueryWrapper);
|
|
|
+ if(ObjectUtils.isNotEmpty(wfTextbookClaimItemList)){
|
|
|
+ applicantTatolNumberMap = wfTextbookClaimItemList.stream()
|
|
|
+ .collect(Collectors.toMap(WfTextbookClaimItem::getWfTextbookClaimId, w -> w, (w1, w2) -> w1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(ObjectUtils.isNotEmpty(applicantTatolNumberMap)){
|
|
|
+ for(ClaimRecordsExportQueryVo vo : dataList){
|
|
|
+ wfTextbookClaimItem = applicantTatolNumberMap.get(vo.getId());
|
|
|
+ if(ObjectUtils.isNotEmpty(wfTextbookClaimItem)){
|
|
|
+ vo.setApplicantTatolNumber(wfTextbookClaimItem.getApplicantNumber());
|
|
|
+ vo.setIssueTatolNumber(wfTextbookClaimItem.getIssueNumber());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for(ClaimRecordsExportQueryVo vo : dataList){
|
|
|
+ if(ObjectUtils.isNotEmpty(vo.getClaimType()) && ClaimTypeEnum.ClaimClass.getCode().equals(vo.getClaimType())){
|
|
|
+ vo.setReceiver(vo.getClassIdCn());
|
|
|
+ }else {
|
|
|
+ vo.setReceiver(vo.getApplicantUserIdCn());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1:未发放,2:部分发放,3:全部发放)
|
|
|
+ if (vo.getStatus() == 2) {
|
|
|
+ vo.setStatusStr("部分发放");
|
|
|
+ }else if (vo.getStatus() == 3) {
|
|
|
+ vo.setStatusStr("全部发放");
|
|
|
+ }else {
|
|
|
+ vo.setStatusStr("未发放");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
+ EasyExcel.write(bot, ClaimRecordsExportQueryVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
|
|
|
+
|
|
|
+ return bot;
|
|
|
+ }
|
|
|
}
|