Commit 2c9744d7 authored by suhuiguang's avatar suhuiguang

1.增加校验约束,删除路线点时,同步:删除任务点、更新任务主表完成数量、总数

parent a5ecc676
......@@ -56,4 +56,6 @@ public interface IPlanTaskDao extends BaseDao<PlanTask, Long> {
List<PlanTask> findByPlanId(Long planId);
PlanTask findByUserIdAndBeginTimeAndEndTimeAndPlanIdAndRouteId(String userId, String startTime, String endTime, long id, long routeId);
List<PlanTask> findByRouteId(long pointId);
}
package com.yeejoin.amos.maintenance.business.dao.repository;
import java.util.List;
import com.yeejoin.amos.maintenance.dao.entity.PlanTaskDetail;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.yeejoin.amos.maintenance.dao.entity.PlanTaskDetail;
import java.util.List;
@Repository("planTaskDetail")
public interface IPlanTaskDetailDao extends BaseDao<PlanTaskDetail, Long> {
@Modifying
@Transactional
@Query(value = "DELETE FROM p_plan_task_detail WHERE point_id IN (?1)", nativeQuery = true)
void deletePlanTaskDetailByPointId(List<Long> pointIds);
/**
* 根据任务id获取任务详情
* @param planTaskId
* @return
*/
public List<PlanTaskDetail> findAllByTaskNo(Long planTaskId);
/**
* 根据任务id及状态获取计划详情
* @param planTaskId
* @return
*/
public List<PlanTaskDetail> findAllByTaskNoAndStatus(Long planTaskId,String status);
int countByIsFinish(int status);
int countByIsFinishAndTaskNo(int status,Long taskNo);
@Modifying
@Transactional
@Query(value = "DELETE FROM p_plan_task_detail WHERE task_no IN (?1)", nativeQuery = true)
void deletePlanTaskDetailByTaskNo(List<Long> planTaskNo);
@Query(value = "select * FROM p_plan_task_detail WHERE point_id IN (?1)", nativeQuery = true)
@Modifying
@Transactional
@Query(value = "DELETE FROM p_plan_task_detail WHERE point_id IN (?1)", nativeQuery = true)
void deletePlanTaskDetailByPointId(List<Long> pointIds);
/**
* 根据任务id及状态获取计划详情
*
* @param planTaskId
* @return
*/
List<PlanTaskDetail> findAllByTaskNoAndStatus(Long planTaskId, String status);
int countByIsFinishAndTaskNo(int status, Long taskNo);
@Modifying
@Transactional
@Query(value = "DELETE FROM p_plan_task_detail WHERE task_no IN (?1)", nativeQuery = true)
void deletePlanTaskDetailByTaskNo(List<Long> planTaskNo);
@Query(value = "select * FROM p_plan_task_detail WHERE point_id IN (?1)", nativeQuery = true)
List<PlanTaskDetail> findALLByPointId(Long pointId);
}
List<PlanTaskDetail> findByPointId(long pointId);
}
\ No newline at end of file
......@@ -64,9 +64,6 @@ public class PointServiceImpl implements IPointService {
private IPointInputItemDao iPointInputItemDao;
@Autowired
private IPointPhotoDao iPointPhotoDao;
@Autowired
private IRoutePointDao iRoutePointDao;
@Autowired
......
......@@ -26,6 +26,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service("routeService")
public class RouteServiceImpl implements IRouteService {
......@@ -65,6 +67,13 @@ public class RouteServiceImpl implements IRouteService {
@Autowired
private IRoutePointItemDao iRoutePointItemDao;
@Autowired
private IPlanTaskDetailDao iPlanTaskDetailDao;
@Autowired
IPlanTaskDao planTaskDao;
@Override
@Transactional
public Route addRoute(Route route) {
......@@ -116,8 +125,8 @@ public class RouteServiceImpl implements IRouteService {
if (rp.getIsDelete()) {
iRoutePointItemDao.delRoutePointItem(rp.getId());
iRoutePointDao.deleteById(rp.getId());
//删除p_plan_task_detail 对应点
planTaskDetailMapper.deleteByPointIdAndRouteId(rp.getPointId(), finalRoute.getId());
//删除p_plan_task_detail 对应点、更新p_plan_task点数量、完成数量
this.updatePlanTask(rp.getPointId(),finalRoute.getId());
} else {
List<RoutePointItem> routePointItems = rp.getRoutePointItem();
iRoutePointDao.saveAndFlush(rp);
......@@ -143,7 +152,26 @@ public class RouteServiceImpl implements IRouteService {
}
}
});
return iRouteDao.save(route);
return route;
}
private void updatePlanTask(long pointId, long routeId) {
List<PlanTask> planTaskList = planTaskDao.findByRouteId(routeId);
List<PlanTaskDetail> planTaskDetailList = iPlanTaskDetailDao.findByPointId(pointId);
Map<Long,PlanTask> planTaskMap = planTaskList.stream().collect(Collectors.toMap(BasicEntity::getId, Function.identity()));
for (PlanTaskDetail planTaskDetail : planTaskDetailList) {
PlanTask planTask = planTaskMap.get(planTaskDetail.getTaskNo());
if (1 == planTaskDetail.getIsFinish()) {
planTask.setFinishNum(planTask.getFinishNum() - 1);
planTask.setPointNum(planTask.getPointNum() - 1);
} else {
planTask.setPointNum(planTask.getPointNum() - 1);
}
}
//更新主表完成数量,点数量
planTaskDao.saveAll(planTaskList);
//删除路线下的维保点
planTaskDetailMapper.deleteByPointIdAndRouteId(pointId, routeId);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment