Commit 2c9744d7 authored by suhuiguang's avatar suhuiguang

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

parent a5ecc676
...@@ -56,4 +56,6 @@ public interface IPlanTaskDao extends BaseDao<PlanTask, Long> { ...@@ -56,4 +56,6 @@ public interface IPlanTaskDao extends BaseDao<PlanTask, Long> {
List<PlanTask> findByPlanId(Long planId); List<PlanTask> findByPlanId(Long planId);
PlanTask findByUserIdAndBeginTimeAndEndTimeAndPlanIdAndRouteId(String userId, String startTime, String endTime, long id, long routeId); 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; 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.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.yeejoin.amos.maintenance.dao.entity.PlanTaskDetail; import java.util.List;
@Repository("planTaskDetail") @Repository("planTaskDetail")
public interface IPlanTaskDetailDao extends BaseDao<PlanTaskDetail, Long> { public interface IPlanTaskDetailDao extends BaseDao<PlanTaskDetail, Long> {
@Modifying @Modifying
@Transactional @Transactional
@Query(value = "DELETE FROM p_plan_task_detail WHERE point_id IN (?1)", nativeQuery = true) @Query(value = "DELETE FROM p_plan_task_detail WHERE point_id IN (?1)", nativeQuery = true)
void deletePlanTaskDetailByPointId(List<Long> pointIds); void deletePlanTaskDetailByPointId(List<Long> pointIds);
/** /**
* 根据任务id获取任务详情 * 根据任务id及状态获取计划详情
* @param planTaskId *
* @return * @param planTaskId
*/ * @return
public List<PlanTaskDetail> findAllByTaskNo(Long planTaskId); */
List<PlanTaskDetail> findAllByTaskNoAndStatus(Long planTaskId, String status);
/**
* 根据任务id及状态获取计划详情 int countByIsFinishAndTaskNo(int status, Long taskNo);
* @param planTaskId
* @return @Modifying
*/ @Transactional
public List<PlanTaskDetail> findAllByTaskNoAndStatus(Long planTaskId,String status); @Query(value = "DELETE FROM p_plan_task_detail WHERE task_no IN (?1)", nativeQuery = true)
void deletePlanTaskDetailByTaskNo(List<Long> planTaskNo);
int countByIsFinish(int status); @Query(value = "select * FROM p_plan_task_detail WHERE point_id IN (?1)", nativeQuery = true)
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> findALLByPointId(Long pointId);
}
List<PlanTaskDetail> findByPointId(long pointId);
}
\ No newline at end of file
...@@ -64,9 +64,6 @@ public class PointServiceImpl implements IPointService { ...@@ -64,9 +64,6 @@ public class PointServiceImpl implements IPointService {
private IPointInputItemDao iPointInputItemDao; private IPointInputItemDao iPointInputItemDao;
@Autowired @Autowired
private IPointPhotoDao iPointPhotoDao;
@Autowired
private IRoutePointDao iRoutePointDao; private IRoutePointDao iRoutePointDao;
@Autowired @Autowired
......
...@@ -26,6 +26,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -26,6 +26,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service("routeService") @Service("routeService")
public class RouteServiceImpl implements IRouteService { public class RouteServiceImpl implements IRouteService {
...@@ -65,6 +67,13 @@ public class RouteServiceImpl implements IRouteService { ...@@ -65,6 +67,13 @@ public class RouteServiceImpl implements IRouteService {
@Autowired @Autowired
private IRoutePointItemDao iRoutePointItemDao; private IRoutePointItemDao iRoutePointItemDao;
@Autowired
private IPlanTaskDetailDao iPlanTaskDetailDao;
@Autowired
IPlanTaskDao planTaskDao;
@Override @Override
@Transactional @Transactional
public Route addRoute(Route route) { public Route addRoute(Route route) {
...@@ -116,8 +125,8 @@ public class RouteServiceImpl implements IRouteService { ...@@ -116,8 +125,8 @@ public class RouteServiceImpl implements IRouteService {
if (rp.getIsDelete()) { if (rp.getIsDelete()) {
iRoutePointItemDao.delRoutePointItem(rp.getId()); iRoutePointItemDao.delRoutePointItem(rp.getId());
iRoutePointDao.deleteById(rp.getId()); iRoutePointDao.deleteById(rp.getId());
//删除p_plan_task_detail 对应点 //删除p_plan_task_detail 对应点、更新p_plan_task点数量、完成数量
planTaskDetailMapper.deleteByPointIdAndRouteId(rp.getPointId(), finalRoute.getId()); this.updatePlanTask(rp.getPointId(),finalRoute.getId());
} else { } else {
List<RoutePointItem> routePointItems = rp.getRoutePointItem(); List<RoutePointItem> routePointItems = rp.getRoutePointItem();
iRoutePointDao.saveAndFlush(rp); iRoutePointDao.saveAndFlush(rp);
...@@ -143,7 +152,26 @@ public class RouteServiceImpl implements IRouteService { ...@@ -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