|
|
@@ -2,17 +2,17 @@ package com.xjrsoft.module.textbook.service.impl;
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.xjrsoft.common.enums.DeleteMark;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
import com.xjrsoft.module.base.entity.BaseCourseSubject;
|
|
|
import com.xjrsoft.module.base.mapper.BaseClassMapper;
|
|
|
import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
-import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDto;
|
|
|
-import com.xjrsoft.module.textbook.dto.TextbookSubscriptionExportQueryListDto;
|
|
|
-import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
|
|
|
+import com.xjrsoft.module.textbook.dto.*;
|
|
|
import com.xjrsoft.module.textbook.entity.Textbook;
|
|
|
import com.xjrsoft.module.textbook.entity.TextbookSubscriptionRecord;
|
|
|
import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
|
|
|
@@ -22,6 +22,7 @@ import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionItemMapper;
|
|
|
import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionMapper;
|
|
|
import com.xjrsoft.module.textbook.service.ITextbookService;
|
|
|
import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
|
|
|
+import com.xjrsoft.module.textbook.vo.TextbookInstockroomListVo;
|
|
|
import com.xjrsoft.module.textbook.vo.TextbookSubscriptionExportQueryListVo;
|
|
|
import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionItemVo;
|
|
|
import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
|
|
|
@@ -29,20 +30,15 @@ import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
-* @title: 教材教辅征订
|
|
|
-* @Author szs
|
|
|
-* @Date: 2024-06-04
|
|
|
-* @Version 1.0
|
|
|
-*/
|
|
|
+ * @title: 教材教辅征订
|
|
|
+ * @Author szs
|
|
|
+ * @Date: 2024-06-04
|
|
|
+ * @Version 1.0
|
|
|
+ */
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfTextbookSubscriptionMapper, WfTextbookSubscription> implements IWfTextbookSubscriptionService {
|
|
|
@@ -99,7 +95,7 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
- if(wfTextbookSubscriptionItemRemoveIds.size() > 0){
|
|
|
+ if (wfTextbookSubscriptionItemRemoveIds.size() > 0) {
|
|
|
wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.deleteBatchIds(wfTextbookSubscriptionItemRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
@@ -121,20 +117,15 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto) {
|
|
|
WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getId());
|
|
|
- if(wfTextbookSubscription == null){
|
|
|
+ if (wfTextbookSubscription == null) {
|
|
|
return false;
|
|
|
}
|
|
|
//点击发起征订
|
|
|
- if(wfTextbookSubscription.getStatus() == 1 && dto.getStatus() == 2){
|
|
|
+ if (wfTextbookSubscription.getStatus() == 1 && dto.getStatus() == 2) {
|
|
|
WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
|
|
|
- return this.updateById(newW);
|
|
|
- }
|
|
|
-
|
|
|
- //点击完成征订
|
|
|
- if(wfTextbookSubscription.getStatus() == 2 && dto.getStatus() == 3){
|
|
|
//添加征订记录
|
|
|
List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.<WfTextbookSubscriptionItem>query().lambda().eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()));
|
|
|
- for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList){
|
|
|
+ for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList) {
|
|
|
textbookTextbookSubscriptionRecordMapper.insert(new TextbookSubscriptionRecord() {{
|
|
|
setCreateDate(new Date());
|
|
|
setTextbookId(w.getTextbookId());
|
|
|
@@ -142,20 +133,12 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
setWfTextbookSubscriptionItemId(w.getId());//该字段存入征订项的id,征订项中有所属征订记录
|
|
|
}});
|
|
|
}
|
|
|
- WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
|
|
|
return this.updateById(newW);
|
|
|
}
|
|
|
|
|
|
- //点击确认入库
|
|
|
- if(wfTextbookSubscription.getStatus() == 3 && dto.getStatus() == 4){
|
|
|
- List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.<WfTextbookSubscriptionItem>query().lambda().eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()));
|
|
|
- for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList){
|
|
|
- textbookService.deliverWarehouse(new AddTextbookWarehouseRecordDto(){{
|
|
|
- setTextbookId(w.getTextbookId());
|
|
|
- setWarehouseNumber((w.getStudentSubscriptionNumber() != null ? w.getStudentSubscriptionNumber() : 0) + (w.getTeacherSubscriptionNumber() != null ? w.getTeacherSubscriptionNumber() : 0));
|
|
|
- setSource("wm_manual");
|
|
|
- }});
|
|
|
- }
|
|
|
+
|
|
|
+ //点击完成征订
|
|
|
+ if (wfTextbookSubscription.getStatus() == 3 && dto.getStatus() == 4) {
|
|
|
WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
|
|
|
return this.updateById(newW);
|
|
|
}
|
|
|
@@ -165,7 +148,7 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
@Override
|
|
|
public WfTextbookSubscriptionVo getInfo(Long id) {
|
|
|
WfTextbookSubscription wfTextbookSubscription = this.getById(id);
|
|
|
- if(wfTextbookSubscription == null){
|
|
|
+ if (wfTextbookSubscription == null) {
|
|
|
return null;
|
|
|
}
|
|
|
WfTextbookSubscriptionVo wfTextbookSubscriptionVo = BeanUtil.toBean(wfTextbookSubscription, WfTextbookSubscriptionVo.class);
|
|
|
@@ -173,32 +156,32 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
mpjLambdaWrapper
|
|
|
.selectAs(BaseCourseSubject::getName, WfTextbookSubscriptionItemVo::getCourseSubjectIdCn)
|
|
|
- .select(WfTextbookSubscriptionItem.class,x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
|
|
|
+ .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
|
|
|
.select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
|
|
|
.leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
|
|
|
.leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
|
|
|
ext -> ext.selectAs(DictionaryDetail::getName, WfTextbookSubscriptionItemVo::getTextbookTypeCn))
|
|
|
.leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
|
|
|
.eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId())
|
|
|
- ;
|
|
|
+ ;
|
|
|
List<WfTextbookSubscriptionItemVo> itemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(WfTextbookSubscriptionItemVo.class, mpjLambdaWrapper);
|
|
|
|
|
|
//处理班级
|
|
|
String classIds = "";
|
|
|
List<String> classIdList = new ArrayList<>();
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- if(!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")){
|
|
|
+ if (!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")) {
|
|
|
classIds = itemList.get(0).getClassIds();
|
|
|
String[] classIdArr = classIds.split(",");
|
|
|
classIdList = Arrays.asList(classIdArr);
|
|
|
- if(!classIdList.isEmpty()){
|
|
|
+ if (!classIdList.isEmpty()) {
|
|
|
List<BaseClass> baseClassList = baseClassMapper.selectList(Wrappers.<BaseClass>query().lambda().in(BaseClass::getId, classIdList));
|
|
|
Map<Long, BaseClass> baseClassMap = baseClassList.stream()
|
|
|
.collect(Collectors.toMap(BaseClass::getId, baseClass -> baseClass));
|
|
|
|
|
|
- for (String classId : classIdList){
|
|
|
+ for (String classId : classIdList) {
|
|
|
BaseClass baseClass = baseClassMap.get(Long.parseLong(classId));
|
|
|
- if(baseClass != null){
|
|
|
+ if (baseClass != null) {
|
|
|
sb.append(baseClass.getName());
|
|
|
sb.append(",");
|
|
|
}
|
|
|
@@ -210,14 +193,14 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
//遍历处理所有项
|
|
|
int stuSum = 0;
|
|
|
int teaSum = 0;
|
|
|
- for (WfTextbookSubscriptionItemVo w : itemList){
|
|
|
- if(!classIdList.isEmpty()){
|
|
|
+ for (WfTextbookSubscriptionItemVo w : itemList) {
|
|
|
+ if (!classIdList.isEmpty()) {
|
|
|
w.setClassNum(classIdList.size());
|
|
|
}
|
|
|
- if(w.getStudentSubscriptionNumber() != null){
|
|
|
+ if (w.getStudentSubscriptionNumber() != null) {
|
|
|
stuSum += w.getStudentSubscriptionNumber();
|
|
|
}
|
|
|
- if(w.getTeacherSubscriptionNumber() != null){
|
|
|
+ if (w.getTeacherSubscriptionNumber() != null) {
|
|
|
teaSum += w.getTeacherSubscriptionNumber();
|
|
|
}
|
|
|
}
|
|
|
@@ -235,14 +218,14 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
@Override
|
|
|
public List<TextbookSubscriptionExportQueryListVo> textbookSubscriptionExportQuery(TextbookSubscriptionExportQueryListDto dto) {
|
|
|
WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getWfTextbookSubscriptionId());
|
|
|
- if(wfTextbookSubscription == null){
|
|
|
+ if (wfTextbookSubscription == null) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
mpjLambdaWrapper
|
|
|
.selectAs(BaseCourseSubject::getName, TextbookSubscriptionExportQueryListVo::getCourseName)
|
|
|
- .select(WfTextbookSubscriptionItem.class,x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
|
|
|
+ .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
|
|
|
.select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
|
|
|
.leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
|
|
|
.leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
|
|
|
@@ -256,7 +239,7 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
String classIds = "";
|
|
|
List<String> classIdList = new ArrayList<>();
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- if(!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")){
|
|
|
+ if (!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")) {
|
|
|
classIds = itemList.get(0).getClassIds();
|
|
|
String[] classIdArr = classIds.split(",");
|
|
|
classIdList = Arrays.asList(classIdArr);
|
|
|
@@ -276,10 +259,78 @@ public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfText
|
|
|
}*/
|
|
|
}
|
|
|
|
|
|
- for (TextbookSubscriptionExportQueryListVo w : itemList){
|
|
|
+ for (TextbookSubscriptionExportQueryListVo w : itemList) {
|
|
|
w.setClassNum(classIdList.size());
|
|
|
}
|
|
|
|
|
|
return itemList;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<TextbookInstockroomListVo> instockroomList(TextbookInstockroomListDto dto) {
|
|
|
+ MPJLambdaWrapper<WfTextbookSubscriptionItem> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
+ queryWrapper
|
|
|
+ .select(WfTextbookSubscriptionItem::getId)
|
|
|
+ .selectAs(BaseCourseSubject::getName, TextbookInstockroomListVo::getCourseSubjectIdCn)
|
|
|
+ .selectAs(DictionaryDetail::getName, TextbookInstockroomListVo::getTextbookTypeCn)
|
|
|
+ .select("(t.student_subscription_number + t.teacher_subscription_number) as subscriptionNumber")
|
|
|
+ .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomListVo.class).contains(x.getProperty()))
|
|
|
+ .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomListVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
|
|
|
+ .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
|
|
|
+ .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType)
|
|
|
+ .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, dto.getWfTextbookSubscriptionId())
|
|
|
+ .orderByAsc(WfTextbookSubscriptionItem::getInstockroomNum)
|
|
|
+ ;
|
|
|
+ List<TextbookInstockroomListVo> list = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(TextbookInstockroomListVo.class, queryWrapper);
|
|
|
+
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean instockroom(List<TextbookInstockroomDto> dtos) {
|
|
|
+ if (dtos.isEmpty()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取需要修改的list
|
|
|
+ LambdaQueryWrapper<WfTextbookSubscriptionItem> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper
|
|
|
+ .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, dtos.get(0).getWfTextbookSubscriptionId())
|
|
|
+ .eq(WfTextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ ;
|
|
|
+ List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(queryWrapper);
|
|
|
+
|
|
|
+ if (wfTextbookSubscriptionItemList.isEmpty()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Long, WfTextbookSubscriptionItem> itemMap = wfTextbookSubscriptionItemList
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ WfTextbookSubscriptionItem::getId,
|
|
|
+ item -> item
|
|
|
+ ));
|
|
|
+
|
|
|
+ Date now = new Date();
|
|
|
+ Long loginId = StpUtil.getLoginIdAsLong();
|
|
|
+ for (TextbookInstockroomDto dto : dtos) {
|
|
|
+ WfTextbookSubscriptionItem old = itemMap.get(dto.getId());
|
|
|
+ WfTextbookSubscriptionItem updateItem = new WfTextbookSubscriptionItem();
|
|
|
+ updateItem.setId(old.getId());
|
|
|
+ updateItem.setInstockroomNum(old.getInstockroomNum() + dto.getInNum());
|
|
|
+ updateItem.setModifyDate(now);
|
|
|
+ updateItem.setModifyUserId(loginId);
|
|
|
+ wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.updateById(updateItem);
|
|
|
+
|
|
|
+ //新增入库记录
|
|
|
+ textbookService.deliverWarehouse(new AddTextbookWarehouseRecordDto() {{
|
|
|
+ setTextbookId(old.getTextbookId());
|
|
|
+ setWarehouseNumber(dto.getInNum());
|
|
|
+ setSource("wm_manual");
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|