| package com.doumee.service.business.impl; | 
|   | 
| import com.doumee.core.constants.ResponseStatus; | 
| import com.doumee.core.exception.BusinessException; | 
| import com.doumee.core.model.LoginUserInfo; | 
| import com.doumee.core.model.PageData; | 
| import com.doumee.core.model.PageWrap; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.core.utils.Utils; | 
| import com.doumee.dao.business.ApproveParamMapper; | 
| import com.doumee.dao.business.ApproveTemplMapper; | 
| import com.doumee.dao.business.MemberMapper; | 
| import com.doumee.dao.business.model.*; | 
| import com.doumee.service.business.ApproveTemplService; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.baomidou.mybatisplus.core.metadata.IPage; | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import org.apache.shiro.SecurityUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| /** | 
|  * 审批模版信息表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @since 2024/04/28 16:06 | 
|  */ | 
| @Service | 
| public class ApproveTemplServiceImpl implements ApproveTemplService { | 
|   | 
|     @Autowired | 
|     private ApproveTemplMapper approveTemplMapper; | 
|     @Autowired | 
|     private ApproveParamMapper approveParamMapper; | 
|     @Autowired | 
|     private MemberMapper memberMapper; | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|     public int save(ApproveTempl model) { | 
|         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         if(loginUserInfo == null){ | 
|             loginUserInfo = model.getLoginUserInfo(); | 
|         } | 
|         if(model.getType() == null || Constants.ApproveTmplType.getName(model.getType()) == null){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         ApproveTempl template = approveTemplMapper.selectOne(new QueryWrapper<ApproveTempl>().lambda() | 
|                 .eq(ApproveTempl::getType,model.getType() ) | 
|                 .eq(ApproveTempl::getIsdeleted,Constants.ZERO) | 
|                 .last("limit 1")); | 
|         Date date =new Date(); | 
|         if(template == null){ | 
|             //如果模版没有,则新增 | 
|             template = new ApproveTempl(); | 
|             template.setType(model.getType()); | 
|             template.setCreateDate(date); | 
|             template.setCreator(loginUserInfo.getId()); | 
|             template.setEditDate(date); | 
|             template.setIsdeleted(Constants.ZERO); | 
|             template.setEditor(loginUserInfo.getId()); | 
|             template.setName(Constants.ApproveTmplType.getName(model.getType())); | 
|             approveTemplMapper.insert(template); | 
|         } | 
|         if(model.getParamList()!=null && model.getParamList().size()>0){ | 
|             for(ApproveParam param : model.getParamList()){ | 
|                 param.setCreateDate(date); | 
|                 param.setCreator(loginUserInfo.getId()); | 
|                 param.setEditDate(date); | 
|                 param.setEditor(loginUserInfo.getId()); | 
|                 param.setIsdeleted(Constants.ZERO); | 
|                 param.setTemplId(template.getId()); | 
|                 param.setType(Constants.formatIntegerNum(param.getType())); | 
|                 param.setAddrParam(Constants.formatIntegerNum(param.getAddrParam())); | 
|                 param.setDriverParam(Constants.formatIntegerNum(param.getDriverParam())); | 
|                 param.setApproveType(Constants.formatIntegerNum(param.getApproveType())); | 
|             } | 
|             //先清除原来所有的就陪配置 | 
|             approveParamMapper.delete(new UpdateWrapper<ApproveParam>().lambda() | 
|                     .eq(ApproveParam::getTemplId,template.getId())); | 
|             //批量插入新的配置 | 
|             approveParamMapper.insertBatchSomeColumn(model.getParamList()); | 
|         } | 
|         return model.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public Integer create(ApproveTempl model) { | 
|         approveTemplMapper.insert(model); | 
|         return model.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id, LoginUserInfo userInfo) { | 
|         ApproveTempl model = new ApproveTempl(); | 
|         model.setEditDate(new Date()); | 
|         model.setEditor(userInfo.getId()); | 
|         model.setId(id); | 
|         model.setIsdeleted(Constants.ONE); | 
|         approveTemplMapper.updateById(model); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(ApproveTempl approveTempl) { | 
|         UpdateWrapper<ApproveTempl> deleteWrapper = new UpdateWrapper<>(approveTempl); | 
|         approveTemplMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         for(Integer id:ids){ | 
|             deleteById(id,user); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(ApproveTempl approveTempl) { | 
|         approveTemplMapper.updateById(approveTempl); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<ApproveTempl> approveTempls) { | 
|         if (CollectionUtils.isEmpty(approveTempls)) { | 
|             return; | 
|         } | 
|         for (ApproveTempl approveTempl: approveTempls) { | 
|             this.updateById(approveTempl); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public ApproveTempl findById(Integer id) { | 
|         return approveTemplMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public ApproveTempl findOne(ApproveTempl approveTempl) { | 
|         QueryWrapper<ApproveTempl> wrapper = new QueryWrapper<>(approveTempl); | 
|         return approveTemplMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<ApproveTempl> findList(ApproveTempl approveTempl) { | 
|         QueryWrapper<ApproveTempl> wrapper = new QueryWrapper<>(approveTempl); | 
|         return approveTemplMapper.selectList(wrapper); | 
|     } | 
|    | 
|     @Override | 
|     public PageData<ApproveTempl> findPage(PageWrap<ApproveTempl> pageWrap) { | 
|         IPage<ApproveTempl> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         QueryWrapper<ApproveTempl> queryWrapper = new QueryWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         queryWrapper.lambda() | 
|                 .eq(pageWrap.getModel().getId() != null, ApproveTempl::getId, pageWrap.getModel().getId()) | 
|                 .eq(pageWrap.getModel().getCreator() != null, ApproveTempl::getCreator, pageWrap.getModel().getCreator()) | 
|                 .ge(pageWrap.getModel().getCreateDate() != null, ApproveTempl::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())) | 
|                 .le(pageWrap.getModel().getCreateDate() != null, ApproveTempl::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())) | 
|                 .eq(pageWrap.getModel().getEditor() != null, ApproveTempl::getEditor, pageWrap.getModel().getEditor()) | 
|                 .ge(pageWrap.getModel().getEditDate() != null, ApproveTempl::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())) | 
|                 .le(pageWrap.getModel().getEditDate() != null, ApproveTempl::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())) | 
|                 .eq(pageWrap.getModel().getIsdeleted() != null, ApproveTempl::getIsdeleted, pageWrap.getModel().getIsdeleted()) | 
|                 .eq(pageWrap.getModel().getRemark() != null, ApproveTempl::getRemark, pageWrap.getModel().getRemark()) | 
|                 .eq(pageWrap.getModel().getType() != null, ApproveTempl::getType, pageWrap.getModel().getType()) | 
|                 .eq(pageWrap.getModel().getName() != null, ApproveTempl::getName, pageWrap.getModel().getName()) | 
|         ; | 
|         for(PageWrap.SortData sortData: pageWrap.getSorts()) { | 
|             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { | 
|                 queryWrapper.orderByDesc(sortData.getProperty()); | 
|             } else { | 
|                 queryWrapper.orderByAsc(sortData.getProperty()); | 
|             } | 
|         } | 
|         return PageData.from(approveTemplMapper.selectPage(page, queryWrapper)); | 
|     } | 
|   | 
|     @Override | 
|     public long count(ApproveTempl approveTempl) { | 
|         QueryWrapper<ApproveTempl> wrapper = new QueryWrapper<>(approveTempl); | 
|         return approveTemplMapper.selectCount(wrapper); | 
|     } | 
| } |