|
@@ -11,13 +11,16 @@ import org.springblade.control.dto.EMUseCarInfoDTO;
|
|
|
import org.springblade.control.entity.*;
|
|
|
import org.springblade.control.mapper.ExMUseCarMapper;
|
|
|
import org.springblade.control.service.EMUseCarService;
|
|
|
+import org.springblade.control.vo.EMDraftGroupVO;
|
|
|
import org.springblade.control.vo.EMDraftVO;
|
|
|
+import org.springblade.control.vo.EMPurchaseInfoVO;
|
|
|
import org.springblade.control.vo.EMUseCarInfoVO;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
+import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
@@ -57,31 +60,41 @@ public class EMUseCarServiceImpl extends BaseServiceImpl<ExMUseCarMapper, EMUseC
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<EMDraftVO> carDraftList() {
|
|
|
- if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
|
|
|
+ public List<EMDraftGroupVO> carDraftList() {
|
|
|
+ if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
|
|
|
throw new ServiceException("获取当前用户信息失败,请联系管理员");
|
|
|
}
|
|
|
LambdaQueryWrapper<EMUseCarInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(EMUseCarInfo::getCreateUser, SecureUtil.getUserId()); //获取当前用户草稿信息
|
|
|
//获取当前时间
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
+ LocalDateTime now = LocalDateTime.now().plusDays(1);
|
|
|
//计算三个月前的时间
|
|
|
LocalDateTime threeMonthsAgo = now.minusMonths(3);
|
|
|
queryWrapper.between(EMUseCarInfo::getCreateTime, threeMonthsAgo, now);
|
|
|
queryWrapper.eq(EMUseCarInfo::getIsTemp, 0); //暂存
|
|
|
List<EMUseCarInfo> list = baseMapper.selectList(queryWrapper);
|
|
|
Map<Long, List<User>> userMaps = iUserClient.selectUserAll().stream().collect(Collectors.groupingBy(User::getId));
|
|
|
- List<EMDraftVO> resultVOS = new ArrayList<>();
|
|
|
- for (EMUseCarInfo obj : list) {
|
|
|
- EMDraftVO vo = new EMDraftVO();
|
|
|
- vo.setId(obj.getId());
|
|
|
- userMaps.get(obj.getCreateUser()).stream().findAny().ifPresent(user -> vo.setTitle((ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getRealName())) ? user.getRealName() + "提交的用车申请" : ""));
|
|
|
- vo.setUpdateTime(obj.getUpdateTime());
|
|
|
- resultVOS.add(vo);
|
|
|
+
|
|
|
+ List<String> dataIds = list.stream().map(EMUseCarInfo::getId).map(String::valueOf).collect(Collectors.toList());
|
|
|
+ List<EMDraftGroupVO> resultList = new LinkedList<>();
|
|
|
+ if (dataIds.size() > 0) {
|
|
|
+ List<ExDraftRecord> query = jdbcTemplate.query("select * from c_ex_draft_record where data_type = 6 and data_id in(" + StringUtils.join(dataIds, ",") + ")", new BeanPropertyRowMapper<>(ExDraftRecord.class));
|
|
|
+ Map<Long, List<ExDraftRecord>> groupMaps = query.stream().collect(Collectors.groupingBy(ExDraftRecord::getGroupId));
|
|
|
+ for (Map.Entry<Long, List<ExDraftRecord>> listEntry : groupMaps.entrySet()) {
|
|
|
+ Long groupId = listEntry.getKey();
|
|
|
+ List<Long> ids = listEntry.getValue().stream().map(ExDraftRecord::getDataId).collect(Collectors.toList());
|
|
|
+ EMUseCarInfo obj = baseMapper.selectById(ids.get(0));
|
|
|
+ EMDraftGroupVO vo = new EMDraftGroupVO();
|
|
|
+ if (obj != null) {
|
|
|
+ userMaps.get(obj.getCreateUser()).stream().findAny().ifPresent(user -> vo.setTitle((ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getRealName())) ? user.getRealName() + "提交的日常报销" : ""));
|
|
|
+ vo.setUpdateTime(obj.getUpdateTime());
|
|
|
+ }
|
|
|
+ vo.setGroupId(groupId);
|
|
|
+ vo.setEMDraftIds(StringUtils.join(ids, ","));
|
|
|
+ resultList.add(vo);
|
|
|
+ }
|
|
|
}
|
|
|
- return resultVOS.stream()
|
|
|
- .sorted(Comparator.comparing(EMDraftVO::getUpdateTime).reversed())
|
|
|
- .collect(Collectors.toList());
|
|
|
+ return resultList;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -93,97 +106,108 @@ public class EMUseCarServiceImpl extends BaseServiceImpl<ExMUseCarMapper, EMUseC
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean carSubmit(EMUseCarInfoDTO dto) {
|
|
|
+ public boolean carSubmit(List<EMUseCarInfoDTO> dtoList) {
|
|
|
if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
|
|
|
throw new ServiceException("获取当前用户信息失败,请联系管理员");
|
|
|
}
|
|
|
- boolean var = false;
|
|
|
- dto.setCreateUser(SecureUtil.getUserId());
|
|
|
-
|
|
|
- if (("1").equals(dto.getSubmitStatus())) {
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getId())) {
|
|
|
- EMUseCarInfo obj = baseMapper.selectById(dto.getId());
|
|
|
- if (obj != null && obj.getStatus() == 3) {
|
|
|
- //如果是已驳回任务,那么重新生成新的记录信息
|
|
|
- dto.setId(SnowFlakeUtil.getId());
|
|
|
- var = true;
|
|
|
+ Long draftGroupId = SnowFlakeUtil.getId();
|
|
|
+ for (EMUseCarInfoDTO dto : dtoList) {
|
|
|
+ boolean var = false;
|
|
|
+ dto.setCreateUser(SecureUtil.getUserId());
|
|
|
+
|
|
|
+ if (("1").equals(dto.getSubmitStatus())) {
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getId())) {
|
|
|
+ EMUseCarInfo obj = baseMapper.selectById(dto.getId());
|
|
|
+ if (obj != null && obj.getStatus() == 3) {
|
|
|
+ //如果是已驳回任务,那么重新生成新的记录信息
|
|
|
+ dto.setId(SnowFlakeUtil.getId());
|
|
|
+ var = true;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- dto.setIsTemp(0); //暂存
|
|
|
- dto.setStatus(0); //未上报
|
|
|
- if (var) {
|
|
|
- this.save(dto);
|
|
|
- } else {
|
|
|
- this.saveOrUpdate(dto);
|
|
|
- }
|
|
|
- return true;
|
|
|
-
|
|
|
- } else if (("2").equals(dto.getSubmitStatus())) { //提交审批
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getId())) {
|
|
|
- EMUseCarInfo obj = baseMapper.selectById(dto.getId());
|
|
|
- if (obj != null && (obj.getStatus() != 0 && obj.getStatus() != 3)) {
|
|
|
- throw new ServiceException("当前填报的信息不是未上报、已驳回状态,不允许操作!");
|
|
|
- } else if (obj != null && obj.getStatus() == 3) {
|
|
|
- //如果是已驳回任务,那么重新生成新的记录信息
|
|
|
- dto.setId(SnowFlakeUtil.getId());
|
|
|
- var = true;
|
|
|
- }
|
|
|
- }
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getPersonnelUser())) {
|
|
|
- //新增审批任务
|
|
|
- TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
|
|
|
- taskProcessInfo.setId(SnowFlakeUtil.getId());
|
|
|
- taskProcessInfo.setStatus(1); //待审批
|
|
|
- taskProcessInfo.setReportDate(new Date());
|
|
|
- taskProcessInfo.setTaskType(6); //用车审批
|
|
|
- taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【用车审批】审批");
|
|
|
- //上报人
|
|
|
- taskProcessInfo.setReportUserId(SecureUtil.getUserId());
|
|
|
-
|
|
|
- //审批人
|
|
|
- List<String> auditUserIds = new LinkedList<>();
|
|
|
- EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
|
|
|
- auditUserIds.add(responsibleObj.getUserId());
|
|
|
- EMProcessTaskUser personnelUser = dto.getPersonnelUser(); //人事
|
|
|
- auditUserIds.add(personnelUser.getUserId());
|
|
|
- taskProcessInfo.setAuditUserIds(StringUtils.join(auditUserIds, ","));
|
|
|
-
|
|
|
- //抄送人
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
|
|
|
- List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
|
|
|
- taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
|
|
|
- }
|
|
|
- taskProcessService.save(taskProcessInfo);
|
|
|
-
|
|
|
- //新增信息
|
|
|
- dto.setIsTemp(1); //提交
|
|
|
- dto.setStatus(1); //待审批
|
|
|
+ dto.setIsTemp(0); //暂存
|
|
|
+ dto.setStatus(0); //未上报
|
|
|
if (var) {
|
|
|
this.save(dto);
|
|
|
} else {
|
|
|
this.saveOrUpdate(dto);
|
|
|
}
|
|
|
|
|
|
- //新增审批任务关联信息
|
|
|
- jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",6)");
|
|
|
+ Long aLong = jdbcTemplate.queryForObject("select count(1) from c_ex_draft_record where data_type = 6 and data_id = " + dto.getId(), Long.class);
|
|
|
+ if (aLong == null || aLong == 0L) {
|
|
|
+ //绑定关系
|
|
|
+ jdbcTemplate.execute("insert into c_ex_draft_record(id,group_id,data_id,data_type) values(" + SnowFlakeUtil.getId() + "," + draftGroupId + "," + dto.getId() + ",6)");
|
|
|
+ }
|
|
|
|
|
|
- return true;
|
|
|
+ } else if (("2").equals(dto.getSubmitStatus())) { //提交审批
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getId())) {
|
|
|
+ EMUseCarInfo obj = baseMapper.selectById(dto.getId());
|
|
|
+ if (obj != null && (obj.getStatus() != 0 && obj.getStatus() != 3)) {
|
|
|
+ throw new ServiceException("当前填报的信息不是未上报、已驳回状态,不允许操作!");
|
|
|
+ } else if (obj != null && obj.getStatus() == 3) {
|
|
|
+ //如果是已驳回任务,那么重新生成新的记录信息
|
|
|
+ dto.setId(SnowFlakeUtil.getId());
|
|
|
+ var = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getPersonnelUser())) {
|
|
|
+ //新增审批任务
|
|
|
+ TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
|
|
|
+ taskProcessInfo.setId(SnowFlakeUtil.getId());
|
|
|
+ taskProcessInfo.setStatus(1); //待审批
|
|
|
+ taskProcessInfo.setReportDate(new Date());
|
|
|
+ taskProcessInfo.setTaskType(6); //用车审批
|
|
|
+ taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【用车审批】审批");
|
|
|
+ //上报人
|
|
|
+ taskProcessInfo.setReportUserId(SecureUtil.getUserId());
|
|
|
+
|
|
|
+ //审批人
|
|
|
+ List<String> auditUserIds = new LinkedList<>();
|
|
|
+ EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
|
|
|
+ auditUserIds.add(responsibleObj.getUserId());
|
|
|
+ EMProcessTaskUser personnelUser = dto.getPersonnelUser(); //人事
|
|
|
+ auditUserIds.add(personnelUser.getUserId());
|
|
|
+ taskProcessInfo.setAuditUserIds(StringUtils.join(auditUserIds, ","));
|
|
|
+
|
|
|
+ //抄送人
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
|
|
|
+ List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
|
|
|
+ taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
|
|
|
+ }
|
|
|
+ taskProcessService.save(taskProcessInfo);
|
|
|
+
|
|
|
+ //新增信息
|
|
|
+ dto.setIsTemp(1); //提交
|
|
|
+ dto.setStatus(1); //待审批
|
|
|
+ if (var) {
|
|
|
+ this.save(dto);
|
|
|
+ } else {
|
|
|
+ this.saveOrUpdate(dto);
|
|
|
+ }
|
|
|
+
|
|
|
+ //新增审批任务关联信息
|
|
|
+ jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",6)");
|
|
|
|
|
|
- } else {
|
|
|
- throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- return false;
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean carRemove(Long id) {
|
|
|
- EMUseCarInfo emUseCarInfo = baseMapper.selectById(id);
|
|
|
- if (emUseCarInfo.getIsTemp().equals(0)) {
|
|
|
- return this.removeById(id);
|
|
|
- } else {
|
|
|
- throw new ServiceException("当前记录信息不是草稿数据,无法删除");
|
|
|
+ public boolean carRemove(Long groupId) {
|
|
|
+ List<ExDraftRecord> query = jdbcTemplate.query("select * from c_ex_draft_record where group_id = " + groupId, new BeanPropertyRowMapper<>(ExDraftRecord.class));
|
|
|
+ if (query.size() > 0) {
|
|
|
+ List<String> ids = query.stream().map(ExDraftRecord::getDataId).map(String::valueOf).collect(Collectors.toList());
|
|
|
+ if (ids.size() > 0) {
|
|
|
+ jdbcTemplate.execute("delete from c_ex_draft_record where group_id = " + groupId);
|
|
|
+ jdbcTemplate.execute("delete from c_expense_use_car_info where id in(" + StringUtils.join(ids, ",") + ")");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
}
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -209,4 +233,11 @@ public class EMUseCarServiceImpl extends BaseServiceImpl<ExMUseCarMapper, EMUseC
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<EMUseCarInfoVO> carDraftDetail(String eMDraftIds) {
|
|
|
+ List<EMUseCarInfo> useCarInfos = baseMapper.selectBatchIds(Func.toStrList(eMDraftIds));
|
|
|
+ List<EMUseCarInfoVO> vos = BeanUtil.copyProperties(useCarInfos, EMUseCarInfoVO.class);
|
|
|
+ return vos;
|
|
|
+ }
|
|
|
}
|