|
|
@@ -1,16 +1,31 @@
|
|
|
package com.ktg.iscs.service.impl;
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ktg.common.core.text.Convert;
|
|
|
import com.ktg.common.utils.DateUtils;
|
|
|
+import com.ktg.common.utils.bean.BeanUtils;
|
|
|
+import com.ktg.iscs.domain.IsIsolationPoint;
|
|
|
import com.ktg.iscs.domain.IsJobTicket;
|
|
|
+import com.ktg.iscs.domain.IsJobTicketPoints;
|
|
|
+import com.ktg.iscs.domain.IsJobTicketUser;
|
|
|
+import com.ktg.iscs.domain.dto.ticket.AddJobTicketDTO;
|
|
|
+import com.ktg.iscs.domain.dto.ticket.AddTicketUserDTO;
|
|
|
+import com.ktg.iscs.domain.vo.points.PointDetailVO;
|
|
|
+import com.ktg.iscs.domain.vo.ticket.JobTicketDetailVO;
|
|
|
import com.ktg.iscs.mapper.IsJobTicketMapper;
|
|
|
+import com.ktg.iscs.service.IIsIsolationPointService;
|
|
|
+import com.ktg.iscs.service.IIsJobTicketPointsService;
|
|
|
import com.ktg.iscs.service.IIsJobTicketService;
|
|
|
+import com.ktg.iscs.service.IIsJobTicketUserService;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 作业票Service业务层处理
|
|
|
@@ -23,6 +38,13 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
|
|
|
{
|
|
|
@Autowired
|
|
|
private IsJobTicketMapper isJobTicketMapper;
|
|
|
+ @Autowired
|
|
|
+ private IIsJobTicketPointsService iIsJobTicketPointsService;
|
|
|
+ @Autowired
|
|
|
+ private IIsJobTicketUserService iIsJobTicketUserService;
|
|
|
+ @Autowired
|
|
|
+ private IIsIsolationPointService iIsIsolationPointService;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 查询作业票
|
|
|
@@ -31,9 +53,27 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
|
|
|
* @return 作业票
|
|
|
*/
|
|
|
@Override
|
|
|
- public IsJobTicket selectIsJobTicketByTicketId(Long ticketId)
|
|
|
+ public JobTicketDetailVO selectIsJobTicketByTicketId(Long ticketId)
|
|
|
{
|
|
|
- return isJobTicketMapper.selectIsJobTicketByTicketId(ticketId);
|
|
|
+ // 1.查询基础数据
|
|
|
+ IsJobTicket jobTicket = isJobTicketMapper.selectIsJobTicketByTicketId(ticketId);
|
|
|
+ JobTicketDetailVO jobTicketDetailVO = BeanUtils.toBean(jobTicket, JobTicketDetailVO.class);
|
|
|
+ // 2.查询作业票和隔离点的关联关系
|
|
|
+ List<IsJobTicketPoints> isJobTicketPoints = iIsJobTicketPointsService.list(Wrappers.<IsJobTicketPoints>lambdaQuery()
|
|
|
+ .eq(IsJobTicketPoints::getTicketId, ticketId));
|
|
|
+ // 2.1查询隔离点的详细信息
|
|
|
+ if (!isJobTicketPoints.isEmpty()) {
|
|
|
+ List<Long> pointIds = isJobTicketPoints.stream().map(IsJobTicketPoints::getPointId).collect(Collectors.toList());
|
|
|
+ List<IsIsolationPoint> isIsolationPoints = iIsIsolationPointService.listByIds(pointIds);
|
|
|
+ // 2.2组装隔离点数据
|
|
|
+ jobTicketDetailVO.setPointDetailVOList(BeanUtils.toBean(isIsolationPoints, PointDetailVO.class));
|
|
|
+ }
|
|
|
+ // 3.查询人员信息
|
|
|
+ List<IsJobTicketUser> jobTicketUserList = iIsJobTicketUserService.list(Wrappers.<IsJobTicketUser>lambdaQuery()
|
|
|
+ .eq(IsJobTicketUser::getTicketId, ticketId));
|
|
|
+ // 3.1组装人员数据
|
|
|
+ jobTicketDetailVO.setJobTicketUserList(jobTicketUserList);
|
|
|
+ return jobTicketDetailVO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -51,27 +91,111 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
|
|
|
/**
|
|
|
* 新增作业票
|
|
|
*
|
|
|
- * @param isJobTicket 作业票
|
|
|
+ * @param dto 作业票
|
|
|
* @return 结果
|
|
|
*/
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
- public int insertIsJobTicket(IsJobTicket isJobTicket)
|
|
|
+ public Boolean insertIsJobTicket(AddJobTicketDTO dto)
|
|
|
{
|
|
|
- isJobTicket.setCreateTime(DateUtils.getNowDate());
|
|
|
- return isJobTicketMapper.insertIsJobTicket(isJobTicket);
|
|
|
+ // 1.断言判断必填
|
|
|
+ Assert.isTrue(StringUtils.isNotBlank(dto.getTicketCode()), "作业票编号不可为空!");
|
|
|
+ Assert.isTrue(StringUtils.isNotBlank(dto.getTicketName()), "作业票名称不可为空!");
|
|
|
+ Assert.notNull(dto.getWorkshopId(), "所属车间不可为空!");
|
|
|
+ Assert.isTrue(StringUtils.isNotBlank(dto.getPointIds()), "请选择隔离点!");
|
|
|
+ Assert.isFalse(dto.getTicketUserDTOList().isEmpty(), "人员信息不可为空!");
|
|
|
+ // 1.1检查作业票编码是否唯一
|
|
|
+ List<IsJobTicket> list = list(Wrappers.<IsJobTicket>lambdaQuery().eq(IsJobTicket::getTicketCode, dto.getTicketCode()));
|
|
|
+ Assert.isTrue(list.isEmpty(), "该编码已被使用!");
|
|
|
+ // 1.2人员信息是否存在重复
|
|
|
+ boolean b = dto.getTicketUserDTOList().size() == dto.getTicketUserDTOList().stream().distinct().count();
|
|
|
+ Assert.isTrue(b, "用户数据存在同名情况,请修改!");
|
|
|
+ // 2.新增作业票
|
|
|
+ IsJobTicket jobTicket = BeanUtils.toBean(dto, IsJobTicket.class);
|
|
|
+ isJobTicketMapper.insertIsJobTicket(jobTicket);
|
|
|
+ // 3.新增作业票和隔离点的关联关系
|
|
|
+ // TODO 批量新增
|
|
|
+ Long[] pointIds = Convert.toLongArray(dto.getPointIds());
|
|
|
+ for (Long pointId : pointIds) {
|
|
|
+ IsJobTicketPoints isJobTicketPoints = new IsJobTicketPoints();
|
|
|
+ isJobTicketPoints.setTicketId(jobTicket.getSopId());
|
|
|
+ isJobTicketPoints.setWorkshopId(dto.getWorkshopId());
|
|
|
+ isJobTicketPoints.setWorkareaId(dto.getWorkareaId());
|
|
|
+ isJobTicketPoints.setPointId(pointId);
|
|
|
+ iIsJobTicketPointsService.save(isJobTicketPoints);
|
|
|
+ }
|
|
|
+ // 4.新增人员信息
|
|
|
+ for (AddTicketUserDTO addTicketUserDTO : dto.getTicketUserDTOList()) {
|
|
|
+ IsJobTicketUser jobTicketUser = BeanUtils.toBean(addTicketUserDTO, IsJobTicketUser.class);
|
|
|
+ jobTicketUser.setTicketId(jobTicket.getTicketId());
|
|
|
+ if (null == addTicketUserDTO.getUserId() || addTicketUserDTO.getUserId() == 0) {
|
|
|
+ addTicketUserDTO.setUserId(0L);
|
|
|
+ }
|
|
|
+ iIsJobTicketUserService.save(jobTicketUser);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改作业票
|
|
|
*
|
|
|
- * @param isJobTicket 作业票
|
|
|
+ * @param dto 作业票
|
|
|
* @return 结果
|
|
|
*/
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
- public int updateIsJobTicket(IsJobTicket isJobTicket)
|
|
|
+ public Boolean updateIsJobTicket(AddJobTicketDTO dto)
|
|
|
{
|
|
|
- isJobTicket.setUpdateTime(DateUtils.getNowDate());
|
|
|
- return isJobTicketMapper.updateIsJobTicket(isJobTicket);
|
|
|
+ // 1.断言判断必填
|
|
|
+ Assert.notNull(dto.getTicketId(), "id不可为空!");
|
|
|
+ Assert.isTrue(StringUtils.isNotBlank(dto.getTicketCode()), "作业票编号不可为空!");
|
|
|
+ Assert.isTrue(StringUtils.isNotBlank(dto.getTicketName()), "作业票名称不可为空!");
|
|
|
+ Assert.notNull(dto.getWorkshopId(), "所属车间不可为空!");
|
|
|
+ Assert.isTrue(StringUtils.isNotBlank(dto.getPointIds()), "请选择隔离点!");
|
|
|
+ Assert.isFalse(dto.getTicketUserDTOList().isEmpty(), "人员信息不可为空!");
|
|
|
+ // 1.2人员信息是否存在重复
|
|
|
+ boolean b = dto.getTicketUserDTOList().size() == dto.getTicketUserDTOList().stream().distinct().count();
|
|
|
+ Assert.isTrue(b, "用户数据存在同名情况,请修改!");
|
|
|
+ // 1.1检查作业票编码是否唯一
|
|
|
+ List<IsJobTicket> list = list(Wrappers.<IsJobTicket>lambdaQuery()
|
|
|
+ .eq(IsJobTicket::getTicketCode, dto.getTicketCode())
|
|
|
+ .ne(IsJobTicket::getTicketId, dto.getTicketId()));
|
|
|
+ Assert.isTrue(list.isEmpty(), "该编码已被使用!");
|
|
|
+ // 2.修改作业票
|
|
|
+ IsJobTicket jobTicket = BeanUtils.toBean(dto, IsJobTicket.class);
|
|
|
+ jobTicket.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ isJobTicketMapper.updateById(jobTicket);
|
|
|
+ // 3.1检查隔离点有没有变更
|
|
|
+ Long[] pointIds = Convert.toLongArray(dto.getPointIds());
|
|
|
+ List<IsJobTicketPoints> isSopPoints = iIsJobTicketPointsService.list(Wrappers.<IsJobTicketPoints>lambdaQuery()
|
|
|
+ .eq(IsJobTicketPoints::getTicketId, dto.getTicketId())
|
|
|
+ .in(IsJobTicketPoints::getPointId, pointIds));
|
|
|
+ // 3.1如果查出来变更了,开始执行删除,重新增加一轮
|
|
|
+ if (pointIds.length != isSopPoints.size()) {
|
|
|
+ iIsJobTicketPointsService.remove(Wrappers.<IsJobTicketPoints>lambdaQuery()
|
|
|
+ .eq(IsJobTicketPoints::getTicketId, dto.getTicketId()));
|
|
|
+ // TODO 批量新增
|
|
|
+ for (Long pointId : pointIds) {
|
|
|
+ IsJobTicketPoints isJobTicketPoints = new IsJobTicketPoints();
|
|
|
+ isJobTicketPoints.setTicketId(jobTicket.getSopId());
|
|
|
+ isJobTicketPoints.setWorkshopId(dto.getWorkshopId());
|
|
|
+ isJobTicketPoints.setWorkareaId(dto.getWorkareaId());
|
|
|
+ isJobTicketPoints.setPointId(pointId);
|
|
|
+ iIsJobTicketPointsService.save(isJobTicketPoints);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 4.修改人员信息,先删后增
|
|
|
+ iIsJobTicketUserService.remove(Wrappers.<IsJobTicketUser>lambdaQuery()
|
|
|
+ .eq(IsJobTicketUser::getTicketId, dto.getTicketId()));
|
|
|
+ for (AddTicketUserDTO addTicketUserDTO : dto.getTicketUserDTOList()) {
|
|
|
+ IsJobTicketUser jobTicketUser = BeanUtils.toBean(addTicketUserDTO, IsJobTicketUser.class);
|
|
|
+ jobTicketUser.setTicketId(dto.getTicketId());
|
|
|
+ if (null == addTicketUserDTO.getUserId() || addTicketUserDTO.getUserId() == 0) {
|
|
|
+ addTicketUserDTO.setUserId(0L);
|
|
|
+ }
|
|
|
+ iIsJobTicketUserService.save(jobTicketUser);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/**
|