package com.gkhy.sign.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.sign.dto.rep.SignatureFlowRep; import com.gkhy.sign.dto.req.SignatureFlowAddReq; import com.gkhy.sign.dto.req.SignatureFlowSignReq; import com.gkhy.sign.entity.SignatureFlow; import com.gkhy.sign.entity.SignatureItem; import com.gkhy.sign.mapper.SignatureFlowMapper; import com.gkhy.sign.mapper.SignatureItemMapper; import com.gkhy.sign.service.SignatureFlowService; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.system.mapper.SysUserMapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; @Service public class SignatureFlowServiceImpl extends ServiceImpl implements SignatureFlowService { @Autowired private SignatureFlowMapper signatureFlowMapper; @Autowired private SignatureItemMapper signatureItemMapper; @Autowired private SysUserMapper sysUserMapper; @Autowired private SysDeptMapper sysDeptMapper; @Override public List selectFlowList(Long id) { return signatureFlowMapper.selectbyItemId(id); } @Override public int insertSignatureFlow(SignatureFlowAddReq signatureFlowAddReq) { List signatureFlows = signatureFlowMapper.selectByItemIdAndStatus(signatureFlowAddReq.getItemId()); if (!CollectionUtils.isEmpty(signatureFlows)){ throw new RuntimeException("存在未签名记录,不能流转"); } List userDept = signatureFlowAddReq.getUserDept(); for (String fileData : userDept) { String[] split = fileData.split("_"); List signatureFlows1 = signatureFlowMapper.selectByItemIdAndUserId(signatureFlowAddReq.getItemId(), Long.valueOf(split[0])); if (!signatureFlows1.isEmpty()){ throw new RuntimeException("用户已签名,请勿重复选择"); } } int insert = 0; List signatureFlowReps = signatureFlowMapper.selectbyItemId(signatureFlowAddReq.getItemId()); for (String fileData : userDept) { SignatureFlow signatureFlow = new SignatureFlow(); BeanUtils.copyProperties(signatureFlowAddReq,signatureFlow); String[] split = fileData.split("_"); signatureFlow.setSort(signatureFlowReps.size()+1); SysUser sysUser = sysUserMapper.selectUserById(signatureFlow.getUserId()); SysDept sysDept = sysDeptMapper.selectDeptById(signatureFlow.getDeptId()); signatureFlow.setUserName(sysUser.getNickName()); signatureFlow.setDeptName(sysDept.getDeptName()); SysUser sysUserSign = sysUserMapper.selectUserById(Long.valueOf(split[0])); SysDept sysDeptSign = sysDeptMapper.selectDeptById(Long.valueOf(split[1])); signatureFlow.setSignUserId(sysUserSign.getUserId()); signatureFlow.setSignUserName(sysUserSign.getNickName()); signatureFlow.setSignDeptId(sysDeptSign.getDeptId()); signatureFlow.setSignDeptName(sysDeptSign.getDeptName()); insert+= signatureFlowMapper.insert(signatureFlow); } return insert; } @Override public int saveSignatureFlow(SignatureFlowSignReq signatureFlowReq) { return signatureFlowMapper.updateByFlowItemId(signatureFlowReq); } @Override public int returnFile(SignatureFlow signatureFlow) { LoginUser loginUser = SecurityUtils.getLoginUser(); signatureFlow.setStatus(3); SysUser sysUser = sysUserMapper.selectUserById(loginUser.getUserId()); SysDept sysDept = sysDeptMapper.selectDeptById(loginUser.getDeptId()); signatureFlow.setUserId(loginUser.getUserId()); signatureFlow.setUserName(sysUser.getNickName()); signatureFlow.setDeptId(loginUser.getDeptId()); signatureFlow.setDeptName(sysDept.getDeptName()); signatureFlow.setSignDeptId(sysDept.getDeptId()); signatureFlow.setSignDeptName(sysDept.getDeptName()); signatureFlow.setSignUserId(sysUser.getUserId()); signatureFlow.setSignUserName(sysUser.getNickName()); List signatureFlowReps = signatureFlowMapper.selectbyItemId(signatureFlow.getItemId()); signatureFlow.setSort(signatureFlowReps.size()+1); int i = signatureFlowMapper.insert(signatureFlow); SignatureItem signatureItem = new SignatureItem(); if (i>0){ signatureItem.setId(Long.valueOf(signatureFlow.getItemId())); signatureItem.setFilePath(signatureFlow.getFilePath()); signatureItem.setStatus(2); signatureItem.setUpdateBy(SecurityUtils.getUsername()); signatureItem.setUpdateTime(new Date()); signatureItemMapper.updateByItemId(signatureItem); } return i; } }