package com.dy.pmsProduct.schedule;
|
|
import com.dy.common.webUtil.QueryResultVo;
|
import com.dy.pmsGlobal.daoBa.BaPrivilegeMapper;
|
import com.dy.pmsGlobal.daoBa.BaUserMapper;
|
import com.dy.pmsGlobal.daoPlt.PltStationMapper;
|
import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper;
|
import com.dy.pmsGlobal.daoPr.PrScheduleMapper;
|
import com.dy.pmsGlobal.daoPr.PrScheduleRelMapper;
|
import com.dy.pmsGlobal.pojoBa.BaUser;
|
import com.dy.pmsGlobal.pojoPlt.PltStation;
|
import com.dy.pmsGlobal.pojoPr.PrSchedule;
|
import com.dy.pmsGlobal.pojoPr.PrScheduleRel;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.dubbo.common.utils.PojoUtils;
|
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.Map;
|
import java.util.Optional;
|
|
@Slf4j
|
@Service
|
public class ScheduleSv {
|
private PrScheduleMapper scheduleDao;
|
private PrScheduleRelMapper scheduleRelDao;
|
private PrAssemblyPlanMapper assemblyPlanDao;
|
private PltStationMapper stationDao;
|
private BaUserMapper baUserDao;
|
|
@Autowired
|
public void setStationDao(PltStationMapper stationDao) {
|
this.stationDao = stationDao;
|
}
|
|
@Autowired
|
public void setScheduleRelDao(PrScheduleRelMapper scheduleRelDao) {
|
this.scheduleRelDao = scheduleRelDao;
|
}
|
|
@Autowired
|
public void setAssemblyPlanDao(PrAssemblyPlanMapper assemblyPlanDao) {
|
this.assemblyPlanDao = assemblyPlanDao;
|
}
|
|
@Autowired
|
public void setScheduleDao(PrScheduleMapper scheduleDao) {
|
this.scheduleDao = scheduleDao;
|
}
|
|
@Autowired
|
private void setBaUserMapper(BaUserMapper baUserDao) {
|
this.baUserDao = baUserDao;
|
}
|
|
@Transactional
|
public int save(PrSchedule schedule) {
|
int count = scheduleDao.insertSelective(schedule);
|
saveRel(schedule);
|
return count;
|
}
|
|
@Transactional
|
public int update(PrSchedule schedule) {
|
scheduleRelDao.deleteByScheduleId(schedule.id);
|
saveRel(schedule);
|
return scheduleDao.updateByPrimaryKeySelective(schedule);
|
}
|
|
private void saveRel(PrSchedule schedule) {
|
schedule.relList.forEach(rel -> validateRelData(rel, schedule));
|
schedule.relList.forEach(rel -> scheduleRelDao.insertSelective(rel));
|
}
|
|
private void validateRelData(PrScheduleRel rel, PrSchedule schedule) {
|
validatePlan(rel);
|
validateStation(rel);
|
rel.scheduleId = schedule.id;
|
}
|
|
private void validatePlan(PrScheduleRel rel) {
|
if (rel.planId != null && rel.nodeId != null) {
|
long countPlan = assemblyPlanDao.countByPlanIdAndNodeId(rel.planId, rel.nodeId);
|
if (countPlan == 0) {
|
log.error("排班数据不匹配, planId:{}, nodeId:{}", rel.planId, rel.nodeId);
|
throw new RuntimeException("排班数据不匹配, planId:" + rel.planId + ", nodeId:" + rel.nodeId);
|
}
|
}
|
}
|
|
private void validateStation(PrScheduleRel rel) {
|
if (rel.stationId != null) {
|
Optional<PltStation> stationOpt = Optional.ofNullable(stationDao.selectByPrimaryKey(rel.stationId));
|
stationOpt.orElseThrow(() -> {
|
log.error("工站信息不存在, stationId:{}", rel.stationId);
|
return new RuntimeException("工站信息不存在, stationId:" + rel.stationId);
|
});
|
}
|
}
|
|
public PrSchedule selectById(Long id) {
|
return scheduleDao.selectByPrimaryKey(id);
|
}
|
|
public List<BaUser> selectById() {
|
List<BaUser> userList = baUserDao.getUserList();
|
return userList;
|
}
|
|
public QueryResultVo<List<PrSchedule>> selectSome(QueryVo vo) {
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo);
|
//查询符合条件的记录总数
|
Long itemTotal = scheduleDao.selectSomeCount(params);
|
QueryResultVo<List<PrSchedule>> rsVo = new QueryResultVo<>(vo.pageSize, vo.pageCurr);
|
//计算分页等信息
|
rsVo.calculateAndSet(itemTotal, params);
|
//查询符合条件的记录
|
rsVo.obj = scheduleDao.selectSome(params);
|
return rsVo;
|
}
|
|
public List<Map<String, Object>> selectPlan(QueryVo vo) {
|
List<Map<String, Object>> list = assemblyPlanDao.selectByPlanName(vo.planName);
|
return list;
|
}
|
|
public List<PrSchedule> selectAll(QueryVo queryVo) {
|
return scheduleDao.selectAll(queryVo.scheduleDate, queryVo.userId);
|
}
|
}
|