|
|
@@ -1,18 +1,27 @@
|
|
|
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.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.xjrsoft.common.enums.DeleteMark;
|
|
|
+import com.xjrsoft.common.enums.IssueModeEnum;
|
|
|
+import com.xjrsoft.common.enums.RecedeTypeEnum;
|
|
|
+import com.xjrsoft.common.enums.WarehouseModeEnum;
|
|
|
import com.xjrsoft.module.textbook.entity.*;
|
|
|
import com.xjrsoft.module.textbook.mapper.*;
|
|
|
import com.xjrsoft.module.textbook.service.IWfTextbookRecedeService;
|
|
|
+import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
|
|
|
+import com.xjrsoft.module.workflow.mapper.WorkflowFormRelationMapper;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
@@ -31,12 +40,14 @@ public class WfTextbookRecedeServiceImpl extends MPJBaseServiceImpl<WfTextbookRe
|
|
|
|
|
|
private final WfTextbookRecedeItemMapper wfTextbookRecedeWfTextbookRecedeItemMapper;
|
|
|
|
|
|
- private final TextbookMapper textbookTextbookMapper;
|
|
|
-
|
|
|
private final TextbookWarehouseRecordMapper textbookWarehouseRecordMapper;
|
|
|
|
|
|
+ private final TextbookWarehouseRecordDetailMapper textbookWarehouseRecordDetailMapper;
|
|
|
+
|
|
|
private final TextbookIssueRecordMapper textbookIssueRecordMapper;
|
|
|
|
|
|
+ private final WorkflowFormRelationMapper workflowFormRelationMapper;
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(WfTextbookRecede wfTextbookRecede) {
|
|
|
@@ -99,21 +110,19 @@ public class WfTextbookRecedeServiceImpl extends MPJBaseServiceImpl<WfTextbookRe
|
|
|
public Boolean dataHandle(Long formId) {
|
|
|
WfTextbookRecede wfTextbookRecede = this.getByIdDeep(formId);
|
|
|
|
|
|
- if(ObjectUtils.isNotEmpty(wfTextbookRecede)){
|
|
|
+ // 根据数据id找到所在流程得状态
|
|
|
+ WorkflowFormRelation workflowFormRelation = workflowFormRelationMapper.selectOne(
|
|
|
+ Wrappers.lambdaQuery(WorkflowFormRelation.class)
|
|
|
+ .eq(WorkflowFormRelation::getFormKeyValue, formId)
|
|
|
+ );
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(wfTextbookRecede)
|
|
|
+ && ObjectUtils.isNotEmpty(workflowFormRelation)
|
|
|
+ && HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
|
|
|
+ ) {
|
|
|
List<WfTextbookRecedeItem> wfTextbookRecedeItemList = wfTextbookRecede.getWfTextbookRecedeItemList();
|
|
|
if(ObjectUtils.isNotEmpty(wfTextbookRecedeItemList)){
|
|
|
- // 获取本学期所有的入库记录
|
|
|
- List<TextbookWarehouseRecord> textbookWarehouseRecords = textbookWarehouseRecordMapper.selectList(
|
|
|
- Wrappers.lambdaQuery(TextbookWarehouseRecord.class)
|
|
|
- .eq(TextbookWarehouseRecord::getBaseSemesterId, wfTextbookRecede.getBaseSemesterId())
|
|
|
- .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- );
|
|
|
-
|
|
|
- Map<Long, TextbookWarehouseRecord> textbookWarehouseRecordMap = textbookWarehouseRecords.stream()
|
|
|
- .collect(Collectors.toMap(TextbookWarehouseRecord::getId, t -> t, (t1, t2) -> t1))
|
|
|
- ;
|
|
|
-
|
|
|
- // 获取本学期所有的入库记录
|
|
|
+ // 获取本学期所有的出库记录
|
|
|
List<TextbookIssueRecord> textbookIssueRecords = textbookIssueRecordMapper.selectList(
|
|
|
Wrappers.lambdaQuery(TextbookIssueRecord.class)
|
|
|
.eq(TextbookIssueRecord::getBaseSemesterId, wfTextbookRecede.getBaseSemesterId())
|
|
|
@@ -124,70 +133,117 @@ public class WfTextbookRecedeServiceImpl extends MPJBaseServiceImpl<WfTextbookRe
|
|
|
.collect(Collectors.toMap(TextbookIssueRecord::getId, t -> t, (t1, t2) -> t1))
|
|
|
;
|
|
|
|
|
|
+ List<Long> textbookWarehouseRecordIds = textbookIssueRecords.stream()
|
|
|
+ .map(TextbookIssueRecord::getTextbookWarehouseRecordId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 获取本学期所有的出库记录对应的所有的入库记录
|
|
|
+ List<TextbookWarehouseRecord> textbookWarehouseRecords = textbookWarehouseRecordMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(TextbookWarehouseRecord.class)
|
|
|
+ .in(ObjectUtils.isNotEmpty(textbookWarehouseRecordIds), TextbookWarehouseRecord::getId, textbookWarehouseRecordIds)
|
|
|
+ .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ Map<Long, TextbookWarehouseRecord> textbookWarehouseRecordMap = textbookWarehouseRecords.stream()
|
|
|
+ .collect(Collectors.toMap(TextbookWarehouseRecord::getId, t -> t, (t1, t2) -> t1))
|
|
|
+ ;
|
|
|
+
|
|
|
//遍历每一个退书申请项
|
|
|
- TextbookWarehouseRecord textbookWarehouseRecord;
|
|
|
- TextbookIssueRecord textbookIssueRecord;
|
|
|
+ TextbookWarehouseRecord oldTextbookWarehouseRecord;
|
|
|
+ TextbookWarehouseRecordDetail textbookWarehouseRecordDetail;
|
|
|
+ TextbookWarehouseRecord updateTextbookWarehouseRecord;
|
|
|
+ TextbookIssueRecord oldTextbookIssueRecord;
|
|
|
+ TextbookIssueRecord newTextbookIssueRecord;
|
|
|
+ TextbookIssueRecord updateTextbookIssueRecord;
|
|
|
for (WfTextbookRecedeItem wfTextbookRecedeItem : wfTextbookRecedeItemList) {
|
|
|
- textbookIssueRecord = textbookIssueRecordMap.get(wfTextbookRecedeItem.getTextbookIssueRecordId());
|
|
|
-
|
|
|
-
|
|
|
-// //退书类型是到教务处
|
|
|
-// if(ObjectUtil.isNotNull(textbook) && wfTextbookRecede.getRecedeType().equals(RecedeTypeEnum.RecedeDeansOffice.getCode())){
|
|
|
-// //修改库存
|
|
|
-// textbookTextbookMapper.updateById(new Textbook(){{
|
|
|
-// setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
-// setModifyDate(new Date());
|
|
|
-// setId(wfTextbookRecedeItem.getTextbookId());
|
|
|
-//// setStock((ObjectUtil.isNull(textbook.getStock())?0:textbook.getStock()) + (ObjectUtil.isNull(wfTextbookRecedeItem.getNumber())?0:wfTextbookRecedeItem.getNumber()));
|
|
|
-// }});
|
|
|
-// //增加入库记录
|
|
|
-// textbookWarehouseRecordMapper.insert(new TextbookWarehouseRecord(){{
|
|
|
-// setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
-// setCreateDate(new Date());
|
|
|
-// setTextbookId(wfTextbookRecedeItem.getTextbookId());
|
|
|
-// setDataId(wfTextbookRecede.getId());
|
|
|
-// setDataItemId(wfTextbookRecedeItem.getId());
|
|
|
-// setWarehouseMode(WarehouseModeEnum.WmRecede.getCode());
|
|
|
-// setWarehouseNumber(ObjectUtil.isNull(wfTextbookRecedeItem.getNumber())?0:wfTextbookRecedeItem.getNumber());
|
|
|
-// if(wfTextbookRecede.getClassId() != null && wfTextbookRecede.getClassId() > 0){
|
|
|
-// BaseClass c = baseClassMapper.selectById(wfTextbookRecede.getClassId());
|
|
|
-// setSource(c.getName());
|
|
|
-// }
|
|
|
-// QueryWrapper<TextbookWarehouseRecord> queryWrapperSortcode = new QueryWrapper<>();
|
|
|
-// queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
|
|
|
-// TextbookWarehouseRecord t = textbookWarehouseRecordMapper.selectOne(queryWrapperSortcode);
|
|
|
-// setSortCode(t.getSortCode()+1);
|
|
|
-// }});
|
|
|
-// }
|
|
|
-//
|
|
|
-// //退书类型是到书店
|
|
|
-// if(ObjectUtil.isNotNull(textbook) && wfTextbookRecede.getRecedeType().equals(RecedeTypeEnum.RecedeBookstore.getCode())){
|
|
|
-// //修改库存
|
|
|
-// textbookTextbookMapper.updateById(new Textbook(){{
|
|
|
-// setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
-// setModifyDate(new Date());
|
|
|
-// setId(wfTextbookRecedeItem.getTextbookId());
|
|
|
-//// setStock((ObjectUtil.isNull(textbook.getStock())?0:textbook.getStock()) - (ObjectUtil.isNull(wfTextbookRecedeItem.getNumber())?0:wfTextbookRecedeItem.getNumber()) );
|
|
|
-// }});
|
|
|
-// //增加出库记录
|
|
|
-// textbookIssueRecordMapper.insert(new TextbookIssueRecord(){{
|
|
|
-// setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
-// setCreateDate(new Date());
|
|
|
-// setTextbookId(wfTextbookRecedeItem.getTextbookId());
|
|
|
-// setDataId(wfTextbookRecede.getId());
|
|
|
-// setDataItemId(wfTextbookRecedeItem.getId());
|
|
|
-// setIssueMode(IssueModeEnum.ImRecede.getCode());
|
|
|
-// setIssueNumber(ObjectUtil.isNull(wfTextbookRecedeItem.getNumber())?0:wfTextbookRecedeItem.getNumber());
|
|
|
-// QueryWrapper<TextbookIssueRecord> queryWrapperSortcode = new QueryWrapper<>();
|
|
|
-// queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
|
|
|
-// TextbookIssueRecord t = textbookIssueRecordMapper.selectOne(queryWrapperSortcode);
|
|
|
-// setSortCode(t.getSortCode()+1);
|
|
|
-// }});
|
|
|
-// }
|
|
|
+ // 退书项对应的出库记录
|
|
|
+ oldTextbookIssueRecord = textbookIssueRecordMap.get(wfTextbookRecedeItem.getTextbookIssueRecordId());
|
|
|
+ // 退书项对应的出库记录对应的入库记录
|
|
|
+ oldTextbookWarehouseRecord = textbookWarehouseRecordMap.get(oldTextbookIssueRecord.getId());
|
|
|
+
|
|
|
+ // 退书类型是到教务处
|
|
|
+ if(RecedeTypeEnum.RecedeeDansOffice.getCode().equals(wfTextbookRecede.getRecedeType())
|
|
|
+ && ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord)
|
|
|
+ && ObjectUtils.isNotEmpty(oldTextbookIssueRecord)
|
|
|
+ ){
|
|
|
+ // 增加入库详情记录
|
|
|
+ textbookWarehouseRecordDetail = new TextbookWarehouseRecordDetail();
|
|
|
+ textbookWarehouseRecordDetail.setTextbookWarehouseRecordId(oldTextbookWarehouseRecord.getId());
|
|
|
+ textbookWarehouseRecordDetail.setWarehouseMode(WarehouseModeEnum.WmRecede.getCode());
|
|
|
+ textbookWarehouseRecordDetail.setWarehouseNumber(ObjectUtils.isEmpty(wfTextbookRecedeItem.getNumber()) ? 0 : wfTextbookRecedeItem.getNumber());
|
|
|
+ textbookWarehouseRecordDetail.setCreateDate(new Date());
|
|
|
+ textbookWarehouseRecordDetailMapper.insert(textbookWarehouseRecordDetail);
|
|
|
+
|
|
|
+ // 修改入库记录
|
|
|
+ updateTextbookWarehouseRecord = new TextbookWarehouseRecord();
|
|
|
+ updateTextbookWarehouseRecord.setId(oldTextbookWarehouseRecord.getId());
|
|
|
+ updateTextbookWarehouseRecord.setRecedeNumber(
|
|
|
+ (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRecedeNumber()) ? oldTextbookWarehouseRecord.getRecedeNumber() : 0)
|
|
|
+ + textbookWarehouseRecordDetail.getWarehouseNumber()
|
|
|
+ );
|
|
|
+ updateTextbookWarehouseRecord.setRemainNumber(
|
|
|
+ (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRemainNumber()) ? oldTextbookWarehouseRecord.getRemainNumber() : 0)
|
|
|
+ + textbookWarehouseRecordDetail.getWarehouseNumber()
|
|
|
+ );
|
|
|
+ updateTextbookWarehouseRecord.setModifyDate(new Date());
|
|
|
+ textbookWarehouseRecordMapper.updateById(updateTextbookWarehouseRecord);
|
|
|
+
|
|
|
+ // 修改出库记录
|
|
|
+ updateTextbookIssueRecord = new TextbookIssueRecord();
|
|
|
+ updateTextbookIssueRecord.setId(oldTextbookIssueRecord.getId());
|
|
|
+ updateTextbookIssueRecord.setRecedeNumber(
|
|
|
+ (ObjectUtils.isNotEmpty(oldTextbookIssueRecord.getRecedeNumber()) ? oldTextbookIssueRecord.getRecedeNumber() : 0)
|
|
|
+ + textbookWarehouseRecordDetail.getWarehouseNumber()
|
|
|
+ );
|
|
|
+ updateTextbookIssueRecord.setActualIssueNumber(
|
|
|
+ (ObjectUtils.isNotEmpty(oldTextbookIssueRecord.getIssueNumber()) ? oldTextbookIssueRecord.getIssueNumber() : 0)
|
|
|
+ + (ObjectUtils.isNotEmpty(oldTextbookIssueRecord.getRecedeNumber()) ? oldTextbookIssueRecord.getRecedeNumber() : 0)
|
|
|
+ );
|
|
|
+ updateTextbookIssueRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(oldTextbookIssueRecord.getActualIssueNumber())));
|
|
|
+ updateTextbookIssueRecord.setModifyDate(new Date());
|
|
|
+ textbookIssueRecordMapper.updateById(updateTextbookIssueRecord);
|
|
|
+ }
|
|
|
+
|
|
|
+ //退书类型是到书店
|
|
|
+ if(RecedeTypeEnum.RecedeBookstore.getCode().equals(wfTextbookRecede.getRecedeType())
|
|
|
+ && ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord)
|
|
|
+ ){
|
|
|
+ // 新增出库
|
|
|
+ newTextbookIssueRecord = new TextbookIssueRecord();
|
|
|
+ newTextbookIssueRecord.setBaseSemesterId(wfTextbookRecede.getBaseSemesterId());
|
|
|
+ newTextbookIssueRecord.setOrderNumber("退书到书店的出库单号");
|
|
|
+ newTextbookIssueRecord.setTextbookWarehouseRecordId(oldTextbookWarehouseRecord.getId());
|
|
|
+ newTextbookIssueRecord.setIssueMode(IssueModeEnum.ImRecede.getCode());
|
|
|
+ newTextbookIssueRecord.setTextbookId(wfTextbookRecedeItem.getTextbookId());
|
|
|
+ newTextbookIssueRecord.setIssueNumber(ObjectUtils.isEmpty(wfTextbookRecedeItem.getNumber()) ? 0 : wfTextbookRecedeItem.getNumber());
|
|
|
+ newTextbookIssueRecord.setRecedeNumber(0);
|
|
|
+ newTextbookIssueRecord.setActualIssueNumber(newTextbookIssueRecord.getIssueNumber());
|
|
|
+ newTextbookIssueRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(newTextbookIssueRecord.getActualIssueNumber())));
|
|
|
+ newTextbookIssueRecord.setIssueUserId(wfTextbookRecede.getCreateUserId());
|
|
|
+ textbookIssueRecordMapper.insert(newTextbookIssueRecord);
|
|
|
+
|
|
|
+ // 修改入库记录
|
|
|
+ updateTextbookWarehouseRecord = new TextbookWarehouseRecord();
|
|
|
+ updateTextbookWarehouseRecord.setId(oldTextbookWarehouseRecord.getId());
|
|
|
+ updateTextbookWarehouseRecord.setReturnBookstoreNumber(
|
|
|
+ (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getReturnBookstoreNumber()) ? oldTextbookWarehouseRecord.getReturnBookstoreNumber() : 0)
|
|
|
+ + newTextbookIssueRecord.getIssueNumber()
|
|
|
+ );
|
|
|
+ updateTextbookWarehouseRecord.setActualWarehouseNumber(
|
|
|
+ (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getWarehouseNumber()) ? oldTextbookWarehouseRecord.getWarehouseNumber() : 0)
|
|
|
+ - updateTextbookWarehouseRecord.getReturnBookstoreNumber()
|
|
|
+ );
|
|
|
+ updateTextbookWarehouseRecord.setActualTotalPrice(oldTextbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(updateTextbookWarehouseRecord.getActualWarehouseNumber())));
|
|
|
+ updateTextbookWarehouseRecord.setRemainNumber(
|
|
|
+ (ObjectUtils.isNotEmpty(oldTextbookWarehouseRecord.getRemainNumber()) ? oldTextbookWarehouseRecord.getRemainNumber() : 0)
|
|
|
+ - newTextbookIssueRecord.getIssueNumber()
|
|
|
+ );
|
|
|
+ updateTextbookWarehouseRecord.setModifyDate(new Date());
|
|
|
+ textbookWarehouseRecordMapper.updateById(updateTextbookWarehouseRecord);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
}
|