|
|
@@ -1,41 +1,43 @@
|
|
|
package com.xjrsoft.module.textbook.service.impl;
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
-import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
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.xjrsoft.common.enums.ClaimTypeEnum;
|
|
|
+import com.xjrsoft.common.enums.DeleteMark;
|
|
|
import com.xjrsoft.common.enums.IssueModeEnum;
|
|
|
+import com.xjrsoft.common.enums.RoleEnum;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
|
import com.xjrsoft.common.utils.SortCodeUtil;
|
|
|
-import com.xjrsoft.module.organization.mapper.RoleMapper;
|
|
|
+import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
+import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
+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.ConfirmDistributeDto;
|
|
|
+import com.xjrsoft.module.textbook.dto.DistributePageDto;
|
|
|
import com.xjrsoft.module.textbook.dto.WfTextbookClaimPageDto;
|
|
|
import com.xjrsoft.module.textbook.entity.*;
|
|
|
import com.xjrsoft.module.textbook.mapper.*;
|
|
|
-import com.xjrsoft.module.textbook.service.ITextbookIssueRecordService;
|
|
|
-import com.xjrsoft.module.textbook.service.ITextbookService;
|
|
|
-import com.xjrsoft.module.textbook.service.ITextbookStudentClaimService;
|
|
|
import com.xjrsoft.module.textbook.service.IWfTextbookClaimService;
|
|
|
-import com.xjrsoft.module.textbook.vo.WfTextbookClaimItemVo;
|
|
|
-import com.xjrsoft.module.textbook.vo.WfTextbookClaimPageVo;
|
|
|
-import com.xjrsoft.module.textbook.vo.WfTextbookClaimVo;
|
|
|
+import com.xjrsoft.module.textbook.vo.*;
|
|
|
+import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
|
|
|
+import com.xjrsoft.module.workflow.mapper.WorkflowFormRelationMapper;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
-import org.glassfish.jersey.server.internal.process.MappableException;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -55,8 +57,6 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
|
|
|
private final TextbookMapper textbookMapper;
|
|
|
|
|
|
- private final TextbookStudentClaimMapper textbookStudentClaimMapper;
|
|
|
-
|
|
|
private final TextbookSubscriptionItemMapper textbookSubscriptionItemMapper;
|
|
|
|
|
|
private final TextbookIssueRecordMapper textbookIssueRecordMapper;
|
|
|
@@ -65,6 +65,79 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
|
|
|
private final ClaimItemSubscriptionItemMapper claimItemSubscriptionItemMapper;
|
|
|
|
|
|
+ private final WorkflowFormRelationMapper workflowFormRelationMapper;
|
|
|
+ private final TextbookWarehouseRecordMapper textbookWarehouseRecordMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<DistributePageVo> distributePageVo(DistributePageDto dto) {
|
|
|
+ MPJLambdaWrapper<WfTextbookClaim> wfTextbookClaimMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ wfTextbookClaimMPJLambdaWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .select(WfTextbookClaim::getId)
|
|
|
+ .select(WfTextbookClaim.class,x -> VoToColumnUtil.fieldsToColumns(DistributePageVo.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, WfTextbookClaim::getId)
|
|
|
+ .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, WfTextbookClaim::getClaimType,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(DictionaryDetail::getName, DistributePageVo::getClaimTypeCn)
|
|
|
+ )
|
|
|
+ .leftJoin(XjrUser.class, XjrUser::getId, WfTextbookClaim::getApplicantUserId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(XjrUser::getName, DistributePageVo::getApplicantUserIdCn)
|
|
|
+ )
|
|
|
+ .leftJoin(BaseClass.class, BaseClass::getId, WfTextbookClaim::getClassId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(BaseClass::getName, DistributePageVo::getClassIdCn)
|
|
|
+ )
|
|
|
+ .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
|
|
|
+ .eq(WfTextbookClaim::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+ .eq(StringUtils.isNotEmpty(dto.getClaimType()), WfTextbookClaim::getClaimType, dto.getClaimType())
|
|
|
+ .eq(ObjectUtils.isNotEmpty(dto.getDistributeStatus()), WfTextbookClaim::getStatus, dto.getDistributeStatus())
|
|
|
+ .ne(ObjectUtils.isEmpty(dto.getDistributeStatus()), WfTextbookClaim::getStatus, 1)
|
|
|
+ .and(StringUtils.isNotEmpty(dto.getName()),
|
|
|
+ wrapper -> wrapper
|
|
|
+ .like(XjrUser::getName, dto.getName())
|
|
|
+ .or()
|
|
|
+ .like(BaseClass::getName, dto.getName())
|
|
|
+ )
|
|
|
+ ;
|
|
|
+ IPage<DistributePageVo> page = this.selectJoinListPage(ConventPage.getPage(dto), DistributePageVo.class, wfTextbookClaimMPJLambdaWrapper);
|
|
|
+
|
|
|
+ List<DistributePageVo> distributePageVos = page.getRecords();
|
|
|
+ // 处理申领总数量和已经发放总数量
|
|
|
+ if(ObjectUtils.isNotEmpty(distributePageVos)){
|
|
|
+ List<Long> textbookClaimIds = distributePageVos.stream()
|
|
|
+ .map(DistributePageVo::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<Long, WfTextbookClaimItem> applicantTatolNumberMap = new HashMap<>();
|
|
|
+ WfTextbookClaimItem wfTextbookClaimItem;
|
|
|
+ if(ObjectUtils.isNotEmpty(distributePageVos)){
|
|
|
+ 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(DistributePageVo distributePageVo : page.getRecords()){
|
|
|
+ wfTextbookClaimItem = applicantTatolNumberMap.get(distributePageVo.getId());
|
|
|
+ if(ObjectUtils.isNotEmpty(wfTextbookClaimItem)){
|
|
|
+ distributePageVo.setApplicantTatolNumber(wfTextbookClaimItem.getApplicantNumber());
|
|
|
+ distributePageVo.setIssueTatolNumber(wfTextbookClaimItem.getIssueNumber());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(WfTextbookClaim wfTextbookClaim) {
|
|
|
@@ -130,7 +203,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
for (WfTextbookClaimPageVo wfTextbookClaimPageVo : page.getRecords()) {
|
|
|
//拆分代领取人
|
|
|
String receiveUserIdStr = wfTextbookClaimPageVo.getReceiveUserId();
|
|
|
- if (ObjectUtil.isNotNull(receiveUserIdStr) && !receiveUserIdStr.isEmpty()) {
|
|
|
+ if (ObjectUtils.isNotEmpty(receiveUserIdStr) && !receiveUserIdStr.isEmpty()) {
|
|
|
String[] receiveUserIdStrs = receiveUserIdStr.split(",");
|
|
|
List<Long> receiveUserIdList = new ArrayList<>();
|
|
|
for (String str : receiveUserIdStrs) {
|
|
|
@@ -140,7 +213,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
queryWrapper
|
|
|
.in(XjrUser::getId, receiveUserIdList);
|
|
|
List<XjrUser> xjrUserList = xjrUserMapper.selectList(queryWrapper);
|
|
|
- if (ObjectUtil.isNotNull(xjrUserList) && !xjrUserList.isEmpty()) {
|
|
|
+ if (ObjectUtils.isNotEmpty(xjrUserList) && !xjrUserList.isEmpty()) {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
for (int i = 0; i < xjrUserList.size(); i++) {
|
|
|
if(i == 0){
|
|
|
@@ -155,7 +228,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
//加上申领项
|
|
|
List<WfTextbookClaimItemVo> wfTextbookClaimItemVoList = wfTextbookClaimWfTextbookClaimItemMapper.getListByWfTextbookClaimId(Long.parseLong(wfTextbookClaimPageVo.getId()));
|
|
|
|
|
|
- if (ObjectUtil.isNotNull(wfTextbookClaimItemVoList) && !wfTextbookClaimItemVoList.isEmpty()) {
|
|
|
+ if (ObjectUtils.isNotEmpty(wfTextbookClaimItemVoList) && !wfTextbookClaimItemVoList.isEmpty()) {
|
|
|
wfTextbookClaimPageVo.setWfTextbookClaimItemList(wfTextbookClaimItemVoList);
|
|
|
}
|
|
|
}
|
|
|
@@ -165,10 +238,10 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
@Override
|
|
|
public WfTextbookClaimVo infoDistribute(Long id) {
|
|
|
WfTextbookClaimVo wfTextbookClaimVo = wfTextbookClaimWfTextbookClaimMapper.infoDistribute(id);
|
|
|
- if (ObjectUtil.isNotNull(wfTextbookClaimVo)) {
|
|
|
+ if (ObjectUtils.isNotEmpty(wfTextbookClaimVo)) {
|
|
|
//拆分代领人
|
|
|
String receiveUserIdStr = wfTextbookClaimVo.getReceiveUserId();
|
|
|
- if (ObjectUtil.isNotNull(receiveUserIdStr) && !receiveUserIdStr.equals("")) {
|
|
|
+ if (ObjectUtils.isNotEmpty(receiveUserIdStr) && !receiveUserIdStr.equals("")) {
|
|
|
String[] receiveUserIdStrs = receiveUserIdStr.split(",");
|
|
|
List<Long> receiveUserIdList = new ArrayList<>();
|
|
|
for (String str : receiveUserIdStrs) {
|
|
|
@@ -178,7 +251,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
queryWrapper
|
|
|
.in(XjrUser::getId, receiveUserIdList);
|
|
|
List<XjrUser> xjrUserList = xjrUserMapper.selectList(queryWrapper);
|
|
|
- if (ObjectUtil.isNotNull(xjrUserList) && xjrUserList.size() > 0) {
|
|
|
+ if (ObjectUtils.isNotEmpty(xjrUserList) && xjrUserList.size() > 0) {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
for (XjrUser xjrUser : xjrUserList) {
|
|
|
sb.append("," + xjrUser.getName());
|
|
|
@@ -189,7 +262,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
//加上申领项
|
|
|
List<WfTextbookClaimItemVo> wfTextbookClaimItemVoList = wfTextbookClaimWfTextbookClaimItemMapper.getListByWfTextbookClaimId(Long.parseLong(wfTextbookClaimVo.getId()));
|
|
|
|
|
|
- if (ObjectUtil.isNotNull(wfTextbookClaimItemVoList) && wfTextbookClaimItemVoList.size() > 0) {
|
|
|
+ if (ObjectUtils.isNotEmpty(wfTextbookClaimItemVoList) && wfTextbookClaimItemVoList.size() > 0) {
|
|
|
wfTextbookClaimVo.setWfTextbookClaimItemList(wfTextbookClaimItemVoList);
|
|
|
}
|
|
|
}
|
|
|
@@ -199,83 +272,138 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean confirmDistribute(ConfirmDistributeDto dto) {
|
|
|
- WfTextbookClaim wfTextbookClaim = this.getById(dto.getTextbookClaimId());
|
|
|
-
|
|
|
- if (ObjectUtil.isNull(wfTextbookClaim) || ObjectUtil.isNull(dto.getTextbookClaimItemList()) || dto.getTextbookClaimItemList().size() == 0) {
|
|
|
+ WfTextbookClaim wfTextbookClaim = this.getByIdDeep(dto.getTextbookClaimId());
|
|
|
+ List<WfTextbookClaimItem> wfTextbookClaimItemList = wfTextbookClaim.getWfTextbookClaimItemList();
|
|
|
+
|
|
|
+ // 获取所有入库记录
|
|
|
+ List<TextbookWarehouseRecord> textbookWarehouseRecordList = textbookWarehouseRecordMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(TextbookWarehouseRecord.class)
|
|
|
+ .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ Map<Long, TextbookWarehouseRecord> textbookWarehouseRecordMap = textbookWarehouseRecordList.stream()
|
|
|
+ .collect(Collectors.toMap(TextbookWarehouseRecord::getId, t -> t, (t1,t2) -> t1));
|
|
|
+
|
|
|
+ if (ObjectUtils.isEmpty(wfTextbookClaim)
|
|
|
+ || ObjectUtils.isEmpty(dto.getTextbookClaimItemList())
|
|
|
+ || dto.getTextbookClaimItemList().isEmpty()
|
|
|
+ || wfTextbookClaimItemList.isEmpty()
|
|
|
+ ) {
|
|
|
throw new MyException("未找到申领数据");
|
|
|
}
|
|
|
|
|
|
+ Map<Long, WfTextbookClaimItem> wfTextbookClaimItemMap = wfTextbookClaimItemList.stream()
|
|
|
+ .collect(Collectors.toMap(WfTextbookClaimItem::getId, w -> w, (w1, w2) -> w1));
|
|
|
+
|
|
|
+ // 处理出库单号
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ sb.append("CK");
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
+ String nowStr = now.format(dateTimeFormatter);
|
|
|
+ sb.append(nowStr);
|
|
|
+ int oldOrderInteger = 0;
|
|
|
+ int oldOrderLastInteger = 0;
|
|
|
+
|
|
|
+
|
|
|
//操作每一个申领项
|
|
|
for (ConfirmDistributeDto.TextbookClaimItem textbookClaimItem : dto.getTextbookClaimItemList()) {
|
|
|
+// WfTextbookClaimItem wfTextbookClaimItem = wfTextbookClaimWfTextbookClaimItemMapper.selectById(textbookClaimItem.getTextbookClaimItemId());
|
|
|
+ WfTextbookClaimItem wfTextbookClaimItem = wfTextbookClaimItemMap.get(textbookClaimItem.getTextbookClaimItemId());
|
|
|
|
|
|
- WfTextbookClaimItem wfTextbookClaimItem = wfTextbookClaimWfTextbookClaimItemMapper.selectById(textbookClaimItem.getTextbookClaimItemId());
|
|
|
-
|
|
|
- if (ObjectUtil.isNull(wfTextbookClaimItem)) {
|
|
|
+ if (ObjectUtils.isEmpty(wfTextbookClaimItem)) {
|
|
|
throw new MyException("未找到申领项详细数据");
|
|
|
}
|
|
|
|
|
|
- Textbook textbook = textbookMapper.selectById(textbookClaimItem.getTextbookId());
|
|
|
- if (ObjectUtil.isNull(textbook)) {
|
|
|
- throw new MyException("未找到相关教材数据");
|
|
|
- }
|
|
|
-
|
|
|
//判断总发放数量是否超出该申请项的申请数量
|
|
|
- Integer issueNumber = ObjectUtil.isNull(wfTextbookClaimItem.getIssueNumber()) ? 0 : wfTextbookClaimItem.getIssueNumber();//已发放
|
|
|
- Integer applicantNumber = ObjectUtil.isNull(wfTextbookClaimItem.getApplicantNumber()) ? 0 : wfTextbookClaimItem.getApplicantNumber();//申领总数量
|
|
|
- Integer confirmNumber = ObjectUtil.isNull(textbookClaimItem.getConfirmTotalNumber()) ? 0 : textbookClaimItem.getConfirmTotalNumber();//本次发放
|
|
|
+ int issueNumber = ObjectUtils.isEmpty(wfTextbookClaimItem.getIssueNumber()) ? 0 : wfTextbookClaimItem.getIssueNumber();//已发放
|
|
|
+ int applicantNumber = ObjectUtils.isEmpty(wfTextbookClaimItem.getApplicantNumber()) ? 0 : wfTextbookClaimItem.getApplicantNumber();//申领总数量
|
|
|
+ int confirmNumber = ObjectUtils.isEmpty(textbookClaimItem.getConfirmTotalNumber()) ? 0 : textbookClaimItem.getConfirmTotalNumber();//本次发放
|
|
|
if (issueNumber + confirmNumber > applicantNumber) {
|
|
|
- throw new MyException(textbook.getBookName() + "发放总数量超出申领数量");
|
|
|
+ throw new MyException(textbookClaimItem.getTextbookIdCn() + "发放总数量超出申领数量");
|
|
|
}
|
|
|
|
|
|
- for (ConfirmDistributeDto.TextbookSubscriptionItems textbookSubscriptionItems : textbookClaimItem.getTextbookSubscriptionItems()){
|
|
|
- TextbookSubscriptionItem textbookSubscriptionItem = textbookSubscriptionItemMapper.selectById(textbookSubscriptionItems.getTextbookSubscriptionItemId());
|
|
|
- if (ObjectUtils.isEmpty(textbookSubscriptionItem)) {
|
|
|
- throw new MyException("未找到征订项详细数据");
|
|
|
+ TextbookIssueRecord textbookIssueRecord;
|
|
|
+ for (ConfirmDistributeDto.TextbookWarehouseRecords textbookWarehouseRecords : textbookClaimItem.getTextbookWarehouseRecords()){
|
|
|
+ TextbookWarehouseRecord textbookWarehouseRecord = textbookWarehouseRecordMap.get(textbookWarehouseRecords.getTextbookWarehouseRecordId());
|
|
|
+ if (ObjectUtils.isEmpty(textbookWarehouseRecord)) {
|
|
|
+ throw new MyException("未找到入库详细数据");
|
|
|
}
|
|
|
|
|
|
- //更新教材征订中的的库存数量
|
|
|
- textbookSubscriptionItemMapper.updateById(new TextbookSubscriptionItem() {{
|
|
|
+ //更新教材入库中的的库存数量
|
|
|
+ textbookWarehouseRecordMapper.updateById(new TextbookWarehouseRecord() {{
|
|
|
setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
setModifyDate(new Date());
|
|
|
- setId(textbookSubscriptionItem.getId());
|
|
|
- setOutStockNum(ObjectUtil.isNull(textbookSubscriptionItem.getOutStockNum()) ? 0 : textbookSubscriptionItem.getOutStockNum()
|
|
|
+ setId(textbookWarehouseRecord.getId());
|
|
|
+ setIssuedNumber(ObjectUtils.isEmpty(textbookWarehouseRecord.getIssuedNumber()) ? 0 : textbookWarehouseRecord.getIssuedNumber()
|
|
|
+ confirmNumber);
|
|
|
+ setRemainNumber(ObjectUtils.isEmpty(textbookWarehouseRecord.getRemainNumber()) ? 0 : textbookWarehouseRecord.getRemainNumber()
|
|
|
+ - confirmNumber
|
|
|
+ );
|
|
|
}});
|
|
|
|
|
|
- claimItemSubscriptionItemMapper.insert(new ClaimItemSubscriptionItem(){{
|
|
|
- setWfTextbookClaimItemId(wfTextbookClaimItem.getId());
|
|
|
- setTextbookSubscriptionItemId(textbookSubscriptionItem.getId());
|
|
|
- setIssueNumber(confirmNumber);
|
|
|
- }});
|
|
|
- }
|
|
|
-
|
|
|
- //增加出库记录
|
|
|
- textbookIssueRecordMapper.insert(new TextbookIssueRecord() {{
|
|
|
- setCreateDate(new Date());
|
|
|
- if (ObjectUtil.isNotNull(wfTextbookClaim.getClaimType()) && wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimStudent.getCode())) {
|
|
|
- setIssueMode(IssueModeEnum.Imtudent.getCode());
|
|
|
+ oldOrderInteger += 1;
|
|
|
+ String newOrder = String.format("%03d", oldOrderInteger); // 补零并格式化为三位数
|
|
|
+ String oldPrex = sb + newOrder + "-";
|
|
|
+ //增加出库记录
|
|
|
+ textbookIssueRecord = new TextbookIssueRecord();
|
|
|
+ textbookIssueRecord.setBaseSemesterId(wfTextbookClaim.getBaseSemesterId());
|
|
|
+
|
|
|
+ // 处理出库单号
|
|
|
+ // 根据当前申领项主键id和入库主键id查找时候已经有了出库记录
|
|
|
+ LambdaQueryWrapper<TextbookIssueRecord> maxOrderNumberLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ maxOrderNumberLambdaQueryWrapper
|
|
|
+ .eq(TextbookIssueRecord::getDataItemId, wfTextbookClaimItem.getId())
|
|
|
+ .eq(TextbookIssueRecord::getTextbookWarehouseRecordId, textbookWarehouseRecord.getId())
|
|
|
+ .eq(TextbookIssueRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .orderByDesc(TextbookIssueRecord::getOrderNumber)
|
|
|
+ .last("limit 1")
|
|
|
+ ;
|
|
|
+ TextbookIssueRecord maxOrderNumber = textbookIssueRecordMapper.selectOne(maxOrderNumberLambdaQueryWrapper);
|
|
|
+ if(ObjectUtils.isNotEmpty(maxOrderNumber)
|
|
|
+ && ObjectUtils.isNotEmpty(maxOrderNumber.getOrderNumber())
|
|
|
+ ){
|
|
|
+ String oldOrderNumber = maxOrderNumber.getOrderNumber();
|
|
|
+ oldPrex = oldOrderNumber.substring(0, oldOrderNumber.length() - 3);
|
|
|
+ oldOrderInteger -= 1;
|
|
|
+ String oldOrder = oldOrderNumber.substring(oldOrderNumber.length() - 3);
|
|
|
+ oldOrderLastInteger = Integer.parseInt(oldOrder);
|
|
|
}
|
|
|
- if (ObjectUtil.isNotNull(wfTextbookClaim.getClaimType()) && wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimTeacher.getCode())) {
|
|
|
- setIssueMode(IssueModeEnum.ImTeacher.getCode());
|
|
|
+ oldOrderLastInteger += 1;
|
|
|
+ String newLastOrder = String.format("%03d", oldOrderLastInteger); // 补零并格式化为三位数
|
|
|
+
|
|
|
+ textbookIssueRecord.setOrderNumber(oldPrex + newLastOrder);
|
|
|
+ if (ObjectUtils.isNotEmpty(wfTextbookClaim.getClaimType())
|
|
|
+ && wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimStudent.getCode())
|
|
|
+ && wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimClass.getCode())
|
|
|
+ ) {
|
|
|
+ textbookIssueRecord.setIssueMode(IssueModeEnum.Imtudent.getCode());
|
|
|
}
|
|
|
-
|
|
|
- setDataId(wfTextbookClaim.getId());
|
|
|
- setDataItemId(wfTextbookClaimItem.getId());
|
|
|
-
|
|
|
- setTextbookId(wfTextbookClaimItem.getTextbookId());
|
|
|
- setIssueNumber(confirmNumber);
|
|
|
-
|
|
|
- setRemainingNumber(applicantNumber - issueNumber - confirmNumber);
|
|
|
-
|
|
|
- setReceiveUserId(dto.getReceiveUserId());
|
|
|
- setIssueUserId(StpUtil.getLoginIdAsLong());
|
|
|
-
|
|
|
- setRemark(dto.getRemark());
|
|
|
-
|
|
|
+ if (ObjectUtils.isNotEmpty(wfTextbookClaim.getClaimType())
|
|
|
+ && wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimTeacher.getCode())
|
|
|
+ ) {
|
|
|
+ textbookIssueRecord.setIssueMode(IssueModeEnum.ImTeacher.getCode());
|
|
|
+ }
|
|
|
+ textbookIssueRecord.setDataId(wfTextbookClaim.getId());
|
|
|
+ textbookIssueRecord.setDataItemId(wfTextbookClaimItem.getId());
|
|
|
+ textbookIssueRecord.setTextbookId(wfTextbookClaimItem.getTextbookId());
|
|
|
+ textbookIssueRecord.setIssueNumber(confirmNumber);
|
|
|
+ textbookIssueRecord.setRecedeNumber(0);
|
|
|
+ textbookIssueRecord.setActualIssueNumber(confirmNumber);
|
|
|
+ textbookIssueRecord.setActualTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(confirmNumber)));
|
|
|
+ if(ObjectUtils.isNotEmpty(dto.getReceiveUserId())){
|
|
|
+ textbookIssueRecord.setReceiveUserId(dto.getReceiveUserId());
|
|
|
+ }else {
|
|
|
+ textbookIssueRecord.setReceiveUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ }
|
|
|
+ textbookIssueRecord.setIssueUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ textbookIssueRecord.setCreateDate(new Date());;
|
|
|
+ textbookIssueRecord.setRemark(dto.getRemark());
|
|
|
int sortCode = SortCodeUtil.getMaxSortCode(textbookIssueRecordMapper, TextbookIssueRecord.class, "sort_code");
|
|
|
+ textbookIssueRecord.setSortCode(sortCode + 1);
|
|
|
|
|
|
- setSortCode(sortCode + 1);
|
|
|
- }});
|
|
|
+ textbookIssueRecordMapper.insert(textbookIssueRecord);
|
|
|
+ }
|
|
|
|
|
|
//更新申领项中的已经发放数量
|
|
|
wfTextbookClaimWfTextbookClaimItemMapper.updateById(new WfTextbookClaimItem() {{
|
|
|
@@ -321,19 +449,38 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
@Transactional
|
|
|
public Boolean dataHandleAddClaimUserNode(Long id) {
|
|
|
WfTextbookClaim wfTextbookClaim = this.getById(id);
|
|
|
- if (ObjectUtil.isNotNull(wfTextbookClaim)
|
|
|
- && ObjectUtil.isNotNull(wfTextbookClaim.getClaimType())) {
|
|
|
+
|
|
|
+ // 根据数据id找到所在流程得状态
|
|
|
+ WorkflowFormRelation workflowFormRelation = workflowFormRelationMapper.selectOne(
|
|
|
+ Wrappers.lambdaQuery(WorkflowFormRelation.class)
|
|
|
+ .eq(WorkflowFormRelation::getFormKeyValue, id)
|
|
|
+ );
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(wfTextbookClaim)
|
|
|
+ && ObjectUtils.isNotEmpty(wfTextbookClaim.getClaimType())
|
|
|
+ && ObjectUtils.isNotEmpty(workflowFormRelation)
|
|
|
+ && HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
|
|
|
+ ) {
|
|
|
//所有需要添加的可领取人ID
|
|
|
List<TextbookClaimUser> textbookClaimUserList = new ArrayList<>();
|
|
|
+
|
|
|
+ List<String> roleList = StpUtil.getRoleList();
|
|
|
+
|
|
|
//申领人自己可以领取
|
|
|
textbookClaimUserList.add(new TextbookClaimUser() {{
|
|
|
setCreateDate(new Date());
|
|
|
setWfTextbookClaimId(wfTextbookClaim.getId());
|
|
|
setUserId(wfTextbookClaim.getApplicantUserId());
|
|
|
- setUserType(2);
|
|
|
+ if(roleList.contains(RoleEnum.TEACHER.getCode().toString())){
|
|
|
+ setUserType(2);
|
|
|
+ }
|
|
|
+ if(roleList.contains(RoleEnum.STUDENT.getCode().toString())){
|
|
|
+ setUserType(1);
|
|
|
+ }
|
|
|
}});
|
|
|
- //申领类型是学生申领,学生代表可领取
|
|
|
- if (wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimStudent.getCode())
|
|
|
+
|
|
|
+ //申领类型是班级申领,学生代表可领取
|
|
|
+ if (ClaimTypeEnum.ClaimClass.getCode().equals(wfTextbookClaim.getClaimType())
|
|
|
&& !Objects.equals(wfTextbookClaim.getApplicantUserId(), wfTextbookClaim.getStudentUserId())
|
|
|
) {
|
|
|
textbookClaimUserList.add(new TextbookClaimUser() {{
|
|
|
@@ -343,11 +490,13 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
|
|
|
setUserType(1);
|
|
|
}});
|
|
|
}
|
|
|
+
|
|
|
//申领类型是教师申领,领取人可领取
|
|
|
- if (wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimTeacher.getCode())
|
|
|
- && ObjectUtil.isNotNull(wfTextbookClaim.getApplicantUserId())
|
|
|
- && ObjectUtil.isNotNull(wfTextbookClaim.getClaimUserId())
|
|
|
- && !wfTextbookClaim.getApplicantUserId().equals(wfTextbookClaim.getClaimUserId())) {
|
|
|
+ if (ClaimTypeEnum.ClaimTeacher.getCode().equals(wfTextbookClaim.getClaimType())
|
|
|
+ && ObjectUtils.isNotEmpty(wfTextbookClaim.getApplicantUserId())
|
|
|
+ && ObjectUtils.isNotEmpty(wfTextbookClaim.getClaimUserId())
|
|
|
+ && !wfTextbookClaim.getApplicantUserId().equals(wfTextbookClaim.getClaimUserId())
|
|
|
+ ) {
|
|
|
textbookClaimUserList.add(new TextbookClaimUser() {{
|
|
|
setCreateDate(new Date());
|
|
|
setWfTextbookClaimId(wfTextbookClaim.getId());
|