WfTextbookSubscriptionServiceImpl.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. package com.xjrsoft.module.textbook.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import com.alibaba.excel.EasyExcel;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.github.yulichang.base.MPJBaseServiceImpl;
  8. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  9. import com.xjrsoft.common.enums.DeleteMark;
  10. import com.xjrsoft.common.utils.VoToColumnUtil;
  11. import com.xjrsoft.module.base.entity.BaseClass;
  12. import com.xjrsoft.module.base.entity.BaseCourseSubject;
  13. import com.xjrsoft.module.base.mapper.BaseClassMapper;
  14. import com.xjrsoft.module.system.entity.DictionaryDetail;
  15. import com.xjrsoft.module.textbook.dto.*;
  16. import com.xjrsoft.module.textbook.entity.*;
  17. import com.xjrsoft.module.textbook.mapper.*;
  18. import com.xjrsoft.module.textbook.service.ITextbookService;
  19. import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
  20. import com.xjrsoft.module.textbook.vo.TextbookInstockroomListVo;
  21. import com.xjrsoft.module.textbook.vo.TextbookSubscriptionExportQueryListVo;
  22. import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionItemVo;
  23. import com.xjrsoft.module.textbook.vo.WfTextbookSubscriptionVo;
  24. import lombok.AllArgsConstructor;
  25. import org.apache.commons.lang3.ObjectUtils;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.transaction.annotation.Transactional;
  29. import java.io.InputStream;
  30. import java.util.*;
  31. import java.util.concurrent.atomic.AtomicReference;
  32. import java.util.regex.Matcher;
  33. import java.util.regex.Pattern;
  34. import java.util.stream.Collectors;
  35. /**
  36. * @title: 教材教辅征订
  37. * @Author szs
  38. * @Date: 2024-06-04
  39. * @Version 1.0
  40. */
  41. @Service
  42. @AllArgsConstructor
  43. public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfTextbookSubscriptionMapper, WfTextbookSubscription> implements IWfTextbookSubscriptionService {
  44. private final WfTextbookSubscriptionMapper wfTextbookSubscriptionWfTextbookSubscriptionMapper;
  45. private final WfTextbookSubscriptionItemMapper wfTextbookSubscriptionWfTextbookSubscriptionItemMapper;
  46. private final WfTextbookSubscriptionItemHistoryMapper wfTextbookSubscriptionItemHistoryMapper;
  47. private final TextbookSubscriptionMapper textbookSubscriptionMapper;
  48. private final TextbookSubscriptionItemMapper textbookSubscriptionItemMapper;
  49. private final TextbookSubscriptionClassMapper textbookSubscriptionClassMapper;
  50. private final ITextbookService textbookService;
  51. private final BaseClassMapper baseClassMapper;
  52. @Override
  53. @Transactional(rollbackFor = Exception.class)
  54. public Boolean add(TextbookSubscription textbookSubscription) {
  55. // 处理征订表
  56. int sum = 0;
  57. for (TextbookSubscriptionItem textbookSubscriptionItem : textbookSubscription.getTextbookSubscriptionItemList()) {
  58. sum += (ObjectUtils.isNotEmpty(textbookSubscriptionItem.getStudentNum()) ? textbookSubscriptionItem.getStudentNum() : 0)
  59. + (ObjectUtils.isNotEmpty(textbookSubscriptionItem.getTeacherNum()) ? textbookSubscriptionItem.getTeacherNum() : 0)
  60. ;
  61. }
  62. textbookSubscriptionMapper.insert(textbookSubscription);
  63. // 处理征订和班级关联表
  64. if(ObjectUtils.isNotEmpty(textbookSubscription.getSubscriptionMethod())
  65. && textbookSubscription.getSubscriptionMethod() == 1
  66. ){
  67. TextbookSubscriptionClass textbookSubscriptionClass = new TextbookSubscriptionClass();
  68. textbookSubscriptionClass.setTextbookSubscriptionId(textbookSubscription.getId());
  69. textbookSubscriptionClassMapper.insert(textbookSubscriptionClass);
  70. }
  71. // 处理征订表子表
  72. for (TextbookSubscriptionItem textbookSubscriptionItem : textbookSubscription.getTextbookSubscriptionItemList()) {
  73. textbookSubscriptionItem.setTextbookSubscriptionId(textbookSubscription.getId());
  74. textbookSubscriptionItemMapper.insert(textbookSubscriptionItem);
  75. }
  76. return true;
  77. }
  78. @Override
  79. @Transactional(rollbackFor = Exception.class)
  80. public Boolean update(WfTextbookSubscription wfTextbookSubscription) {
  81. wfTextbookSubscriptionWfTextbookSubscriptionMapper.updateById(wfTextbookSubscription);
  82. //********************************* WfTextbookSubscriptionItem 增删改 开始 *******************************************/
  83. {
  84. // 查出所有子级的id
  85. List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.lambdaQuery(WfTextbookSubscriptionItem.class).eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()).select(WfTextbookSubscriptionItem::getId));
  86. List<Long> wfTextbookSubscriptionItemIds = wfTextbookSubscriptionItemList.stream().map(WfTextbookSubscriptionItem::getId).collect(Collectors.toList());
  87. //原有子表单 没有被删除的主键
  88. List<Long> wfTextbookSubscriptionItemOldIds = wfTextbookSubscription.getWfTextbookSubscriptionItemList().stream().map(WfTextbookSubscriptionItem::getId).filter(Objects::nonNull).collect(Collectors.toList());
  89. //找到需要删除的id
  90. List<Long> wfTextbookSubscriptionItemRemoveIds = wfTextbookSubscriptionItemIds.stream().filter(item -> !wfTextbookSubscriptionItemOldIds.contains(item)).collect(Collectors.toList());
  91. for (WfTextbookSubscriptionItem wfTextbookSubscriptionItem : wfTextbookSubscription.getWfTextbookSubscriptionItemList()) {
  92. //如果不等于空则修改
  93. if (wfTextbookSubscriptionItem.getId() != null) {
  94. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.updateById(wfTextbookSubscriptionItem);
  95. }
  96. //如果等于空 则新增
  97. else {
  98. //已经不存在的id 删除
  99. wfTextbookSubscriptionItem.setWfTextbookSubscriptionId(wfTextbookSubscription.getId());
  100. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.insert(wfTextbookSubscriptionItem);
  101. }
  102. }
  103. //已经不存在的id 删除
  104. if (wfTextbookSubscriptionItemRemoveIds.size() > 0) {
  105. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.deleteBatchIds(wfTextbookSubscriptionItemRemoveIds);
  106. }
  107. }
  108. //********************************* WfTextbookSubscriptionItem 增删改 结束 *******************************************/
  109. return true;
  110. }
  111. @Override
  112. @Transactional(rollbackFor = Exception.class)
  113. public Boolean alteration(UpdateWfTextbookSubscriptionItemDto dto) {
  114. WfTextbookSubscriptionItem old = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectById(dto.getId());
  115. if(old == null){
  116. return false;
  117. }
  118. //将历史记录保存到历史变更记录表
  119. LambdaQueryWrapper<WfTextbookSubscriptionItemHistory> wfTextbookSubscriptionItemHistoryLambdaQueryWrapper = new LambdaQueryWrapper<>();
  120. wfTextbookSubscriptionItemHistoryLambdaQueryWrapper
  121. .eq(WfTextbookSubscriptionItemHistory::getWfTextbookSubscriptionItemId, old.getId())
  122. .orderByDesc(WfTextbookSubscriptionItemHistory::getHistoryVersion)
  123. .last("limit 1")
  124. ;
  125. WfTextbookSubscriptionItemHistory lastOne = wfTextbookSubscriptionItemHistoryMapper.selectOne(wfTextbookSubscriptionItemHistoryLambdaQueryWrapper);
  126. WfTextbookSubscriptionItemHistory wfTextbookSubscriptionItemHistory = new WfTextbookSubscriptionItemHistory();
  127. BeanUtils.copyProperties(old, wfTextbookSubscriptionItemHistory);
  128. wfTextbookSubscriptionItemHistory.setId(null);
  129. wfTextbookSubscriptionItemHistory.setWfTextbookSubscriptionItemId(old.getId());
  130. wfTextbookSubscriptionItemHistory.setCreateDate(new Date());
  131. wfTextbookSubscriptionItemHistory.setCreateUserId(StpUtil.getLoginIdAsLong());
  132. if(lastOne != null){
  133. wfTextbookSubscriptionItemHistory.setHistoryVersion(lastOne.getHistoryVersion() + 1);
  134. } else {
  135. wfTextbookSubscriptionItemHistory.setHistoryVersion(1);
  136. }
  137. wfTextbookSubscriptionItemHistoryMapper.insert(wfTextbookSubscriptionItemHistory);
  138. //变更当前记录
  139. WfTextbookSubscriptionItem updateItem = new WfTextbookSubscriptionItem();
  140. BeanUtils.copyProperties(dto, updateItem);
  141. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.updateById(updateItem);
  142. return true;
  143. }
  144. @Override
  145. @Transactional(rollbackFor = Exception.class)
  146. public Boolean delete(List<Long> ids) {
  147. wfTextbookSubscriptionWfTextbookSubscriptionMapper.deleteBatchIds(ids);
  148. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.delete(Wrappers.lambdaQuery(WfTextbookSubscriptionItem.class).in(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, ids));
  149. return true;
  150. }
  151. @Override
  152. @Transactional(rollbackFor = Exception.class)
  153. public Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto) {
  154. TextbookSubscription textbookSubscription = textbookSubscriptionMapper.selectById(dto.getId());
  155. if (textbookSubscription == null) {
  156. return false;
  157. }
  158. WfTextbookSubscription newW = new WfTextbookSubscription();
  159. newW.setId(textbookSubscription.getId());
  160. newW.setStatus(dto.getStatus());
  161. return this.updateById(newW);
  162. }
  163. @Override
  164. public WfTextbookSubscriptionVo getInfo(WfTextbookSubscriptionDto dto) {
  165. WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getId());
  166. if (wfTextbookSubscription == null) {
  167. return null;
  168. }
  169. WfTextbookSubscriptionVo wfTextbookSubscriptionVo = BeanUtil.toBean(wfTextbookSubscription, WfTextbookSubscriptionVo.class);
  170. MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
  171. mpjLambdaWrapper
  172. .select(WfTextbookSubscriptionItem::getId)
  173. .selectAs(BaseCourseSubject::getName, WfTextbookSubscriptionItemVo::getCourseSubjectIdCn)
  174. .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
  175. .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItemVo.class).contains(x.getProperty()))
  176. .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
  177. .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
  178. ext -> ext.selectAs(DictionaryDetail::getName, WfTextbookSubscriptionItemVo::getTextbookTypeCn))
  179. .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
  180. .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId())
  181. .eq(dto.getWfTextbookSubscriptionItemId() != null && dto.getWfTextbookSubscriptionItemId() > 0, WfTextbookSubscriptionItem::getId, dto.getWfTextbookSubscriptionItemId())
  182. .eq(dto.getTextbookType() != null && !dto.getTextbookType().isEmpty(), Textbook::getTextbookType, dto.getTextbookType())
  183. .like(dto.getBookName() != null && !dto.getBookName().isEmpty(), Textbook::getBookName, dto.getBookName())
  184. .like(dto.getCourseSubjectIdCn() != null && !dto.getCourseSubjectIdCn().isEmpty(), BaseCourseSubject::getName, dto.getCourseSubjectIdCn())
  185. ;
  186. List<WfTextbookSubscriptionItemVo> itemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(WfTextbookSubscriptionItemVo.class, mpjLambdaWrapper);
  187. //处理班级
  188. String classIds = "";
  189. List<String> classIdList = new ArrayList<>();
  190. StringBuilder sb = new StringBuilder();
  191. if (!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")) {
  192. classIds = itemList.get(0).getClassIds();
  193. String[] classIdArr = classIds.split(",");
  194. classIdList = Arrays.asList(classIdArr);
  195. if (!classIdList.isEmpty()) {
  196. List<BaseClass> baseClassList = baseClassMapper.selectList(Wrappers.<BaseClass>query().lambda().in(BaseClass::getId, classIdList));
  197. Map<Long, BaseClass> baseClassMap = baseClassList.stream()
  198. .collect(Collectors.toMap(BaseClass::getId, baseClass -> baseClass));
  199. for (String classId : classIdList) {
  200. BaseClass baseClass = baseClassMap.get(Long.parseLong(classId));
  201. if (baseClass != null) {
  202. sb.append(baseClass.getName());
  203. sb.append(",");
  204. }
  205. }
  206. sb.deleteCharAt(sb.length() - 1);
  207. }
  208. }
  209. //遍历处理所有项
  210. int stuSum = 0;
  211. int teaSum = 0;
  212. for (WfTextbookSubscriptionItemVo w : itemList) {
  213. int sum = 0;
  214. if (!classIdList.isEmpty()) {
  215. w.setClassNum(classIdList.size());
  216. }
  217. if (w.getStudentSubscriptionNumber() != null) {
  218. stuSum += w.getStudentSubscriptionNumber();
  219. sum += w.getStudentSubscriptionNumber();
  220. }
  221. if (w.getTeacherSubscriptionNumber() != null) {
  222. teaSum += w.getTeacherSubscriptionNumber();
  223. sum += w.getTeacherSubscriptionNumber();
  224. }
  225. w.setSumNumber(sum);
  226. }
  227. wfTextbookSubscriptionVo.setClassIdsCn(sb.toString());
  228. wfTextbookSubscriptionVo.setClassIds(classIds);
  229. wfTextbookSubscriptionVo.setStudentSubscriptionNumberSum(stuSum);
  230. wfTextbookSubscriptionVo.setTeacherSubscriptionNumberSum(teaSum);
  231. wfTextbookSubscriptionVo.setSum(stuSum + teaSum);
  232. wfTextbookSubscriptionVo.setWfTextbookSubscriptionItemList(itemList);
  233. return wfTextbookSubscriptionVo;
  234. }
  235. @Override
  236. public List<TextbookSubscriptionExportQueryListVo> textbookSubscriptionExportQuery(TextbookSubscriptionExportQueryListDto dto) {
  237. List<TextbookSubscriptionExportQueryListVo> itemList = new ArrayList<>();
  238. // WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getTextbookSubscriptionId());
  239. // if (wfTextbookSubscription == null) {
  240. // return null;
  241. // }
  242. //
  243. // MPJLambdaWrapper<WfTextbookSubscriptionItem> mpjLambdaWrapper = new MPJLambdaWrapper<>();
  244. // mpjLambdaWrapper
  245. // .selectAs(BaseCourseSubject::getName, TextbookSubscriptionExportQueryListVo::getCourseName)
  246. // .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
  247. // .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionExportQueryListVo.class).contains(x.getProperty()))
  248. // .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
  249. // .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
  250. // ext -> ext.selectAs(DictionaryDetail::getName, TextbookSubscriptionExportQueryListVo::getTextbookTypeCn))
  251. // .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
  252. // .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId())
  253. // ;
  254. // List<TextbookSubscriptionExportQueryListVo> itemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(TextbookSubscriptionExportQueryListVo.class, mpjLambdaWrapper);
  255. //
  256. // //处理班级
  257. // String classIds = "";
  258. // List<String> classIdList = new ArrayList<>();
  259. // StringBuilder sb = new StringBuilder();
  260. // if (!itemList.isEmpty() && itemList.get(0).getClassIds() != null && !itemList.get(0).getClassIds().equals("")) {
  261. // classIds = itemList.get(0).getClassIds();
  262. // String[] classIdArr = classIds.split(",");
  263. // classIdList = Arrays.asList(classIdArr);
  264. // /*if(!classIdList.isEmpty()){
  265. // List<BaseClass> baseClassList = baseClassMapper.selectList(Wrappers.<BaseClass>query().lambda().in(BaseClass::getId, classIdList));
  266. // Map<Long, BaseClass> baseClassMap = baseClassList.stream()
  267. // .collect(Collectors.toMap(BaseClass::getId, baseClass -> baseClass));
  268. //
  269. // for (String classId : classIdList){
  270. // BaseClass baseClass = baseClassMap.get(Long.parseLong(classId));
  271. // if(baseClass != null){
  272. // sb.append(baseClass.getName());
  273. // sb.append(",");
  274. // }
  275. // }
  276. // sb.deleteCharAt(sb.length() - 1);
  277. // }*/
  278. // }
  279. //
  280. // for (TextbookSubscriptionExportQueryListVo w : itemList) {
  281. // w.setClassNum(classIdList.size());
  282. // }
  283. return itemList;
  284. }
  285. @Override
  286. public List<TextbookInstockroomListVo> instockroomList(TextbookInstockroomListDto dto) {
  287. MPJLambdaWrapper<WfTextbookSubscriptionItem> queryWrapper = new MPJLambdaWrapper<>();
  288. queryWrapper
  289. .select(WfTextbookSubscriptionItem::getId)
  290. .selectAs(BaseCourseSubject::getName, TextbookInstockroomListVo::getCourseName)
  291. .selectAs(DictionaryDetail::getName, TextbookInstockroomListVo::getTextbookTypeCn)
  292. .select("(t.student_subscription_number + t.teacher_subscription_number) as subscriptionNumber")
  293. .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomListVo.class).contains(x.getProperty()))
  294. .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(TextbookInstockroomListVo.class).contains(x.getProperty()))
  295. .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
  296. .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, Textbook::getCourseSubjectId)
  297. .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType)
  298. .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, dto.getTextbookSubscriptionId())
  299. .orderByAsc(WfTextbookSubscriptionItem::getInStockroomNum)
  300. ;
  301. return wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectJoinList(TextbookInstockroomListVo.class, queryWrapper);
  302. }
  303. @Override
  304. @Transactional(rollbackFor = Exception.class)
  305. public Boolean instockroom(List<TextbookInstockroomDto> dtos) {
  306. if (dtos.isEmpty()) {
  307. return false;
  308. }
  309. Map<String, Object> result = saveData(dtos);
  310. return result != null && (int) result.get("successNum") > 0;
  311. }
  312. @Override
  313. public String excelImport(InputStream inputStream, Long wfTextbookSubscriptionId) {
  314. AtomicReference<Map<String, Object>> atomicMap = new AtomicReference<>(new HashMap<>());
  315. List<Map<Integer, Object>> excalDataList = EasyExcel.read(inputStream).sheet().headRowNumber(1).doReadSync();
  316. String regex = "\\d+";
  317. Pattern pattern = Pattern.compile(regex);
  318. List<TextbookInstockroomImportDto> dataList = new ArrayList<>();
  319. for (Map<Integer, Object> integerObjectMap : excalDataList) {
  320. Matcher matcher = pattern.matcher(integerObjectMap.get(11).toString());
  321. int inNum = 0;
  322. if(matcher.find()){
  323. inNum = Integer.parseInt(integerObjectMap.get(11).toString());
  324. }
  325. TextbookInstockroomImportDto importDto = new TextbookInstockroomImportDto();
  326. importDto.setInNum(inNum);
  327. importDto.setIssn(integerObjectMap.get(2).toString());
  328. dataList.add(importDto);
  329. }
  330. List<TextbookInstockroomDto> textbookInstockroomDtoList = new ArrayList<>();
  331. for (TextbookInstockroomImportDto item : dataList){
  332. textbookInstockroomDtoList.add(new TextbookInstockroomDto(){{
  333. setTextbookSubscriptionId(wfTextbookSubscriptionId);
  334. // setIssn(item.getIssn());
  335. setInNum(item.getInNum());
  336. }});
  337. }
  338. atomicMap.set(saveData(textbookInstockroomDtoList));
  339. if(atomicMap.get() != null){
  340. return "计划入库教材" + atomicMap.get().get("allNum") + "样,成功入库" + atomicMap.get().get("successNum") + "样,成功入库" + atomicMap.get().get("instockroomNum") + "本";
  341. }
  342. return "计划入库教材0样,成功入库0样,成功入库0本";
  343. }
  344. private Map<String, Object> saveData(List<TextbookInstockroomDto> dtos) {
  345. Map<String, Object> result = new HashMap<>();
  346. int successNum = 0;
  347. int instockroomNum = 0;
  348. //获取需要修改的list
  349. MPJLambdaWrapper<WfTextbookSubscriptionItem> queryWrapper = new MPJLambdaWrapper<>();
  350. queryWrapper
  351. .select(WfTextbookSubscriptionItem::getId)
  352. .selectAs(Textbook::getIssn, WfTextbookSubscriptionItem::getIssn)
  353. .select(WfTextbookSubscriptionItem.class, x -> VoToColumnUtil.fieldsToColumns(WfTextbookSubscriptionItem.class).contains(x.getProperty()))
  354. .leftJoin(Textbook.class, Textbook::getId, WfTextbookSubscriptionItem::getTextbookId)
  355. .eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, dtos.get(0).getTextbookSubscriptionId())
  356. .eq(WfTextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
  357. ;
  358. List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(queryWrapper);
  359. if (wfTextbookSubscriptionItemList.isEmpty()) {
  360. return null;
  361. }
  362. Map<Long, WfTextbookSubscriptionItem> itemByIdMap = new HashMap<>();
  363. for (WfTextbookSubscriptionItem el : wfTextbookSubscriptionItemList) {
  364. itemByIdMap.put(el.getId(), el);
  365. }
  366. Map<String, WfTextbookSubscriptionItem> itemByIssnMap = new HashMap<>();
  367. for (WfTextbookSubscriptionItem el : wfTextbookSubscriptionItemList) {
  368. itemByIssnMap.put(el.getIssn(), el);
  369. }
  370. Date now = new Date();
  371. Long loginId = StpUtil.getLoginIdAsLong();
  372. // for (TextbookInstockroomDto dto : dtos) {
  373. // WfTextbookSubscriptionItem old;
  374. // if(dto.getTextbookSubscriptionItemId() != null && dto.getTextbookSubscriptionItemId() > 0){
  375. // old = itemByIdMap.get(dto.getTextbookSubscriptionItemId());
  376. // } else {
  377. // old = itemByIssnMap.get(dto.getIssn());
  378. // }
  379. //
  380. // if(old == null){
  381. // continue;
  382. // }
  383. //
  384. // WfTextbookSubscriptionItem updateItem = new WfTextbookSubscriptionItem();
  385. // updateItem.setId(old.getId());
  386. // updateItem.setInStockroomNum(old.getInStockroomNum() + dto.getInNum());
  387. // updateItem.setModifyDate(now);
  388. // updateItem.setModifyUserId(loginId);
  389. // wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.updateById(updateItem);
  390. //
  391. // //新增入库记录
  392. //// textbookService.deliverWarehouse(new AddTextbookWarehouseRecordDto() {{
  393. //// setTextbookId(old.getTextbookId());
  394. //// setWarehouseNumber(dto.getInNum());
  395. //// setSource("wm_manual");
  396. //// }});
  397. //// successNum++;
  398. // instockroomNum += dto.getInNum();
  399. // }
  400. result.put("allNum", dtos.size());
  401. result.put("successNum", successNum);
  402. result.put("instockroomNum", instockroomNum);
  403. return result;
  404. }
  405. }