package com.zteits.park.dao.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.collections4.CollectionUtils; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; import com.xiaoleilu.hutool.date.DateUtil; import com.zteits.clouds.api.apibase.constants.DataStatusEnum; import com.zteits.clouds.api.dto.clouds.param.QueryEmployeeRequest; import com.zteits.clouds.api.dto.park.dto.ChargerSignNumberStatisticsDTO; import com.zteits.clouds.api.dto.park.param.dutyroster.*; import com.zteits.park.dao.DutyRosterDao; import com.zteits.park.domain.DutyRoster; import com.zteits.park.domain.DutyRosterExample; import com.zteits.park.domain.DutyRosterExample.Criteria; import com.zteits.park.mapper.DutyRosterMapper; import com.zteits.park.mapper.smapper.DutyRosterSMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * Copyright: Copyright (c) 2018 zteits * * @ClassName: com.zteits.park.dao.impl * @Description: 排班计划实现类 * @version: v1.0.0 * @author: atao * @date: 2018/8/15 上午10:43 * Modification History: * Date Author Version Description * ---------------------------------------------------------* * 2018/8/15 atao v1.0.0 创建 */ @Component public class DutyRosterDaoImpl implements DutyRosterDao { private static final Logger log = LoggerFactory.getLogger(DutyRosterDaoImpl.class); @Autowired private DutyRosterMapper dutyRosterMapper; @Autowired private DutyRosterSMapper dutyRosterSMapper; @Override public List queryDutyRoster(DutyRosterQueryReq req) { log.info("排班查询请求入参 req={}", JSONObject.toJSONString(req)); DutyRosterExample example = new DutyRosterExample(); //设置查询条件 Criteria criteria = example.createCriteria(); if (null != req.getOrgId()) { criteria.andOrgIdEqualTo(req.getOrgId()); } if (null != req.getSignState()) { criteria.andSignStateEqualTo(req.getSignState()); } criteria.andDutyDayBetween(req.getStartDate(), req.getEndDate()); criteria.andDataStatusEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); if(req.getGroupTime() != null){ criteria.andGroupEndTimeGreaterThanOrEqualTo(req.getGroupTime()); criteria.andGroupStartTimeLessThanOrEqualTo(req.getGroupTime()); } if(null != req.getDutyType()){ criteria.andDutyTypeEqualTo(req.getDutyType()); } if (CollectionUtils.isNotEmpty(req.getEmployeeNo())) { criteria.andChargerCodeIn(req.getEmployeeNo()); } if (CollectionUtils.isNotEmpty(req.getPlNo())) { criteria.andPlNoIn(req.getPlNo()); } if (CollectionUtils.isNotEmpty(req.getBerthRangNos())) { criteria.andBerthRangeNoIn(req.getBerthRangNos()); } if (CollectionUtils.isNotEmpty(req.getWorkState())) { criteria.andWorkStateIn(req.getWorkState()); } if (CollectionUtils.isNotEmpty(req.getChargeCodes())) { criteria.andChargerCodeIn(req.getChargeCodes()); } //设置排序字段 StringBuffer orderByCase = new StringBuffer("duty_day,"); //视图类型 10:收费员视图 20:停车场视图 if (new Integer(10).equals(req.getViewType())) { orderByCase.append("charger_code,"); } if (new Integer(20).equals(req.getViewType())) { orderByCase.append("pl_no,"); } //删除最后一个 逗号',' if (orderByCase.length() > 0) { orderByCase = orderByCase.deleteCharAt(orderByCase.length() - 1); } example.setOrderByClause(orderByCase.toString()); List dutyRosters = dutyRosterMapper.selectByExample(example); log.info("排班查询db结果为 res={}", JSONObject.toJSONString(dutyRosters)); List result = Lists.newArrayList(); for(DutyRoster dutyRoster:dutyRosters ){ if(null != req.getGroupId() && req.getGroupId().equals(dutyRoster.getGroupId())){ continue; } if(CollectionUtils.isNotEmpty(req.getWorkState()) && !req.getWorkState().contains(dutyRoster.getWorkState())){ continue; } result.add(dutyRoster); } return result; } @Override public Integer updateDutyRosterByPrimaryKey(DutyRoster dutyRoster) { return dutyRosterMapper.updateByPrimaryKeySelective(dutyRoster); } @Override public List queryPlanIdsByPlNo(String plNo, List planIds,Integer dutyType) { return dutyRosterSMapper.queryPlanIdsByPlNo(plNo, planIds,dutyType); } @Override public Integer insertDutyRosterForList(List dutyRosterList) { return dutyRosterSMapper.insertDutyRosterForList(dutyRosterList); } @Override public Integer insertDutyRosterSelectiv(DutyRoster dutyRoster) { return dutyRosterMapper.insertSelective(dutyRoster); } @Override public List queryRelaxChargerList(DutyRosterRelaxChargerQueryReq req) { return dutyRosterSMapper.queryRelaxChargerList(req); } @Override public List queryDutysByChargeCode(String chargeCode, Date workTime, List workStates,Integer dutyType) { DutyRosterExample example = new DutyRosterExample(); Criteria sql = example.createCriteria().andDataStatusEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()) .andGroupStartTimeLessThanOrEqualTo(workTime) .andGroupEndTimeGreaterThan(workTime) .andChargerCodeEqualTo(chargeCode) .andWorkStateIn(workStates); if(null != dutyType){ sql.andDutyTypeEqualTo(dutyType); } return dutyRosterMapper.selectByExample(example); } @Override public Integer deleteDutyRoster(Long orgId, List planIds, Date startDate, Date endDate,Integer dutyType) { DutyRosterExample example = new DutyRosterExample(); Criteria sql = example.createCriteria(); sql.andOrgIdEqualTo(orgId).andDutyDayGreaterThan( startDate).andDutyDayLessThan(endDate).andPlanIdIn(planIds); if(null != dutyType){ sql.andDutyTypeEqualTo(dutyType); } return dutyRosterMapper.deleteByExample(example); } @Override public Integer deleteParkByPlanIdAndPlNosForRoster(DeleteParkForDutyRosterReq req) { //今天的开始时间 Date startDate = DateUtil.beginOfDay(DateUtil.date()); //结束时间 Date endDate = DateUtil.parse("2999-01-01 00:00:00"); DutyRosterExample example = new DutyRosterExample(); Criteria sql = example.createCriteria(); //根据planid plno 开始结束时间 删除数据 sql.andOrgIdEqualTo(req.getOrgId()).andDutyDayGreaterThan( startDate).andDutyDayLessThan(endDate).andPlanIdEqualTo(req.getPlanId()).andPlNoIn(req.getPlNos()); if (null != req.getDutyType()) { sql.andDutyTypeEqualTo(req.getDutyType()); } return dutyRosterMapper.deleteByExample(example); } @Override public Integer deleteDutyRosterByChargerCodes(Long orgId, List chargerCodes, Date starteDate, Date endDate,Integer dutyType) { DutyRosterExample example = new DutyRosterExample(); Criteria sql = example.createCriteria(); sql.andOrgIdEqualTo(orgId).andDutyDayGreaterThan( starteDate).andDutyDayLessThan(endDate).andChargerCodeIn(chargerCodes); if(null != dutyType){ sql.andDutyTypeEqualTo(dutyType); } return dutyRosterMapper.deleteByExample(example); } @Override public List queryChargerCodeForWorkState(ChargerCodeQueryForWorkStateReq req) { return dutyRosterSMapper.queryChargerCodeForWorkState(req); } @Override public Integer updateDutyRosterByChargerCode(String chargerCode, DutyRoster base) { DutyRosterExample example = new DutyRosterExample(); example.createCriteria().andChargerCodeEqualTo(chargerCode).andDutyDayGreaterThanOrEqualTo( DateUtil.endOfDay(DateUtil.yesterday())); return dutyRosterMapper.updateByExampleSelective(base, example); } @Override public Integer exchangeDutyRoster(DutyRosteExchangeReq req) { return dutyRosterSMapper.exchangeDutyRoster(req); } @Override public List queryDutyRosterBychargerCodeAndBerthRangeNo(String chargerCode, String berthRangeNO, Date dutyDate,Integer dutyType) { dutyDate = DateUtil.parseDate(DateUtil.formatDate(dutyDate)); DutyRosterExample example = new DutyRosterExample(); Criteria sql = example.createCriteria().andDataStatusEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()) .andChargerCodeEqualTo(chargerCode).andBerthRangeNoEqualTo(berthRangeNO).andDutyDayEqualTo(dutyDate); if(null != dutyType){ sql.andDutyTypeEqualTo(dutyType); } return dutyRosterMapper.selectByExample(example); } @Override public ChargerSignNumberStatisticsDTO queryChargerSignInfoNumber(QueryEmployeeRequest request) { return dutyRosterSMapper.queryChargerSignInfoNumber(request); } @Override public PageInfo queryChargerSignInfoList(DutyRosterQueryReq req) { PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); DutyRosterExample example = new DutyRosterExample(); //设置查询条件 Criteria criteria = example.createCriteria(); if (null != req.getOrgId()) { criteria.andOrgIdEqualTo(req.getOrgId()); } criteria.andDutyDayBetween(req.getStartDate(), req.getEndDate()); criteria.andDataStatusEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); if(req.getGroupTime() != null){ criteria.andGroupEndTimeGreaterThanOrEqualTo(req.getGroupTime()); criteria.andGroupStartTimeLessThanOrEqualTo(req.getGroupTime()); } if (CollectionUtils.isNotEmpty(req.getEmployeeNo())) { criteria.andChargerCodeIn(req.getEmployeeNo()); } if (CollectionUtils.isNotEmpty(req.getPlNo())) { criteria.andPlNoIn(req.getPlNo()); } if (CollectionUtils.isNotEmpty(req.getBerthRangNos())) { criteria.andBerthRangeNoIn(req.getBerthRangNos()); } if (CollectionUtils.isNotEmpty(req.getWorkState())) { criteria.andWorkStateIn(req.getWorkState()); } if (CollectionUtils.isNotEmpty(req.getChargeCodes())) { criteria.andChargerCodeIn(req.getChargeCodes()); } if(null != req.getDutyType()){ criteria.andDutyTypeEqualTo(req.getDutyType()); } List list = dutyRosterMapper.selectByExample(example); if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)) { return new PageInfo<>(list); } return new PageInfo<>(new ArrayList<>()); } @Override public PageInfo queryChargerDutyDetailByCondition(QueryEmployeeRequest request) { PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); List list = dutyRosterSMapper.queryChargerDutyDetailByCondition(request); return new PageInfo(list); } @Override public String queryDutyRosterMaxDateByPlanId(ChargerCodeQueryForWorkStateReq req) { //查询planid最大时间 return dutyRosterSMapper.queryDutyRosterMaxDateByPlanId(req); } }