|
@@ -0,0 +1,130 @@
|
|
|
+package com.xjrsoft.module.textbook.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.xjrsoft.common.page.ConventPage;
|
|
|
+import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
+import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
|
|
|
+import com.xjrsoft.module.textbook.dto.WfTextbookClaimPageDto;
|
|
|
+import com.xjrsoft.module.textbook.entity.WfTextbookClaim;
|
|
|
+import com.xjrsoft.module.textbook.entity.WfTextbookClaimItem;
|
|
|
+import com.xjrsoft.module.textbook.mapper.WfTextbookClaimItemMapper;
|
|
|
+import com.xjrsoft.module.textbook.mapper.WfTextbookClaimMapper;
|
|
|
+import com.xjrsoft.module.textbook.service.IWfTextbookClaimService;
|
|
|
+import com.xjrsoft.module.textbook.vo.WfTextbookClaimItemVo;
|
|
|
+import com.xjrsoft.module.textbook.vo.WfTextbookClaimPageVo;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @title: 教材申领
|
|
|
+* @Author szs
|
|
|
+* @Date: 2023-12-26
|
|
|
+* @Version 1.0
|
|
|
+*/
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookClaimMapper, WfTextbookClaim> implements IWfTextbookClaimService {
|
|
|
+ private final WfTextbookClaimMapper wfTextbookClaimWfTextbookClaimMapper;
|
|
|
+
|
|
|
+ private final WfTextbookClaimItemMapper wfTextbookClaimWfTextbookClaimItemMapper;
|
|
|
+
|
|
|
+ private final XjrUserMapper xjrUserMapper;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean add(WfTextbookClaim wfTextbookClaim) {
|
|
|
+ wfTextbookClaimWfTextbookClaimMapper.insert(wfTextbookClaim);
|
|
|
+ for (WfTextbookClaimItem wfTextbookClaimItem : wfTextbookClaim.getWfTextbookClaimItemList()) {
|
|
|
+ wfTextbookClaimItem.setWfTextbookClaimId(wfTextbookClaim.getId());
|
|
|
+ wfTextbookClaimWfTextbookClaimItemMapper.insert(wfTextbookClaimItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean update(WfTextbookClaim wfTextbookClaim) {
|
|
|
+ wfTextbookClaimWfTextbookClaimMapper.updateById(wfTextbookClaim);
|
|
|
+ //********************************* WfTextbookClaimItem 增删改 开始 *******************************************/
|
|
|
+ {
|
|
|
+ // 查出所有子级的id
|
|
|
+ List<WfTextbookClaimItem> wfTextbookClaimItemList = wfTextbookClaimWfTextbookClaimItemMapper.selectList(Wrappers.lambdaQuery(WfTextbookClaimItem.class).eq(WfTextbookClaimItem::getWfTextbookClaimId, wfTextbookClaim.getId()).select(WfTextbookClaimItem::getId));
|
|
|
+ List<Long> wfTextbookClaimItemIds = wfTextbookClaimItemList.stream().map(WfTextbookClaimItem::getId).collect(Collectors.toList());
|
|
|
+ //原有子表单 没有被删除的主键
|
|
|
+ List<Long> wfTextbookClaimItemOldIds = wfTextbookClaim.getWfTextbookClaimItemList().stream().map(WfTextbookClaimItem::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ //找到需要删除的id
|
|
|
+ List<Long> wfTextbookClaimItemRemoveIds = wfTextbookClaimItemIds.stream().filter(item -> !wfTextbookClaimItemOldIds.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (WfTextbookClaimItem wfTextbookClaimItem : wfTextbookClaim.getWfTextbookClaimItemList()) {
|
|
|
+ //如果不等于空则修改
|
|
|
+ if (wfTextbookClaimItem.getId() != null) {
|
|
|
+ wfTextbookClaimWfTextbookClaimItemMapper.updateById(wfTextbookClaimItem);
|
|
|
+ }
|
|
|
+ //如果等于空 则新增
|
|
|
+ else {
|
|
|
+ //已经不存在的id 删除
|
|
|
+ wfTextbookClaimItem.setWfTextbookClaimId(wfTextbookClaim.getId());
|
|
|
+ wfTextbookClaimWfTextbookClaimItemMapper.insert(wfTextbookClaimItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经不存在的id 删除
|
|
|
+ if(wfTextbookClaimItemRemoveIds.size() > 0){
|
|
|
+ wfTextbookClaimWfTextbookClaimItemMapper.deleteBatchIds(wfTextbookClaimItemRemoveIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //********************************* WfTextbookClaimItem 增删改 结束 *******************************************/
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean delete(List<Long> ids) {
|
|
|
+ wfTextbookClaimWfTextbookClaimMapper.deleteBatchIds(ids);
|
|
|
+ wfTextbookClaimWfTextbookClaimItemMapper.delete(Wrappers.lambdaQuery(WfTextbookClaimItem.class).in(WfTextbookClaimItem::getWfTextbookClaimId, ids));
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<WfTextbookClaimPageVo> getPage(WfTextbookClaimPageDto dto) {
|
|
|
+ IPage<WfTextbookClaimPageVo> page = wfTextbookClaimWfTextbookClaimMapper.getPage(ConventPage.getPage(dto),dto);
|
|
|
+ //拆分代领人
|
|
|
+ for (WfTextbookClaimPageVo wfTextbookClaimPageVo : page.getRecords()) {
|
|
|
+ String receiveUserIdStr = wfTextbookClaimPageVo.getReceiveUserId();
|
|
|
+ if(ObjectUtil.isNotNull(receiveUserIdStr) && !receiveUserIdStr.equals("")){
|
|
|
+ LambdaQueryWrapper<XjrUser> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper
|
|
|
+ .eq(XjrUser::getId,receiveUserIdStr);
|
|
|
+ List<XjrUser> xjrUserList = xjrUserMapper.selectList(queryWrapper);
|
|
|
+ if (ObjectUtil.isNotNull(xjrUserList) && xjrUserList.size() > 0){
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ for (XjrUser xjrUser : xjrUserList) {
|
|
|
+ sb.append(xjrUser.getName());
|
|
|
+ }
|
|
|
+ wfTextbookClaimPageVo.setReceiveUserIdCN(sb.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //加上申领项
|
|
|
+ for (WfTextbookClaimPageVo wfTextbookClaimPageVo : page.getRecords()) {
|
|
|
+ List<WfTextbookClaimItemVo> wfTextbookClaimItemVoList = wfTextbookClaimWfTextbookClaimItemMapper.getListByWfTextbookClaimId(Long.parseLong(wfTextbookClaimPageVo.getId()));
|
|
|
+
|
|
|
+ if(ObjectUtil.isNotNull(wfTextbookClaimItemVoList) && wfTextbookClaimItemVoList.size() > 0){
|
|
|
+ wfTextbookClaimPageVo.setWfTextbookClaimItemList(wfTextbookClaimItemVoList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+}
|