package com.panzhihua.service_community.service.impl; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.common.model.dtos.community.ComSwRotaPageDTO; import com.panzhihua.common.model.dtos.community.ComSwRotaSaveDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.ComSwRotaExcelVO; import com.panzhihua.common.model.vos.community.ComSwRotaPersonVO; import com.panzhihua.common.model.vos.community.ComSwRotaVO; import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.utlis.Snowflake; import com.panzhihua.common.utlis.StringUtils; import com.panzhihua.service_community.dao.ComSwPatrolRecordDAO; import com.panzhihua.service_community.dao.ComSwRotaDAO; import com.panzhihua.service_community.model.dos.ComSwRotaDO; import com.panzhihua.service_community.service.ComSwRotaService; import cn.hutool.core.date.DateUtil; import lombok.extern.slf4j.Slf4j; /** * @auther txb * @create 2021-07-30 09:48:54 * @describe 社区》安全工作》值班表服务实现类 */ @Slf4j @Service public class ComSwRotaServiceImpl extends ServiceImpl implements ComSwRotaService { @Resource private ComSwRotaDAO comSwRotaDAO; @Resource private UserService userService; @Resource private ComSwPatrolRecordDAO comSwPatrolRecordDAO; @Override public R pageRota(ComSwRotaPageDTO comSwRotaPageDTO) { Page page = new Page<>(); Long pageNum = comSwRotaPageDTO.getPageNum(); Long pageSize = comSwRotaPageDTO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1L; } if (null == pageSize || 0 == pageSize) { pageSize = 10L; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = comSwRotaDAO.pageRota(page, comSwRotaPageDTO); if (null != iPage.getRecords()) { iPage.getRecords().forEach(comSwRotaVO -> { comSwRotaVO.setWeekDay(DateUtils.dateToWeek(comSwRotaVO.getRotaDate())); StringBuilder leaderNameString = new StringBuilder(); StringBuilder leaderPhoneString = new StringBuilder(); // 值班领导id查询值班领导的名字和电话 if (StringUtils.isNotEmpty(comSwRotaVO.getRotaLeader())) { String[] leaderIds = comSwRotaVO.getRotaLeader().split(","); for (int i = 0; i < leaderIds.length; i++) { Map leader = comSwPatrolRecordDAO.getPbServiceTeamById(leaderIds[i]); if (leader != null) { if (i != 0) { leaderNameString.append(","); leaderPhoneString.append(","); } leaderNameString.append(leader.get("name")); leaderPhoneString.append(leader.get("phone")); } } comSwRotaVO.setLeaderName(leaderNameString.toString()); comSwRotaVO.setLeaderPhone(leaderPhoneString.toString()); } // 值班人员id查询值班人员的名字和电话 StringBuilder personNameString = new StringBuilder(); StringBuilder personPhoneString = new StringBuilder(); if (StringUtils.isNotEmpty(comSwRotaVO.getRotaPerson())) { String[] personIds = comSwRotaVO.getRotaPerson().split(","); for (int i = 0; i < personIds.length; i++) { Map person = comSwPatrolRecordDAO.getPbServiceTeamById(personIds[i]); if (person != null) { if (i != 0) { personNameString.append(","); personPhoneString.append(","); } personNameString.append(person.get("name")); personPhoneString.append(person.get("phone")); } } comSwRotaVO.setPersonName(personNameString.toString()); comSwRotaVO.setPersonPhone(personPhoneString.toString()); } }); } return R.ok(iPage); } @Override public R detailRota(Long rotaId) { ComSwRotaVO comSwRotaVO = new ComSwRotaVO(); ComSwRotaDO comSwRotaDO = comSwRotaDAO.selectById(rotaId); if (null == comSwRotaDO) { return R.fail("该值班表不存在"); } BeanUtils.copyProperties(comSwRotaDO, comSwRotaVO); if (null != comSwRotaDO.getRotaDate()) { comSwRotaVO.setRotaDate(new SimpleDateFormat("yyyy-MM-dd").format(comSwRotaDO.getRotaDate())); } comSwRotaVO.setWeekDay(DateUtils.dateToWeek(comSwRotaVO.getRotaDate())); StringBuilder leaderNameString = new StringBuilder(); StringBuilder leaderPhoneString = new StringBuilder(); // 值班领导id查询值班领导的名字和电话 if (StringUtils.isNotEmpty(comSwRotaDO.getRotaLeader())) { String[] leaderIds = comSwRotaDO.getRotaLeader().split(","); for (int i = 0; i < leaderIds.length; i++) { Map leader = comSwPatrolRecordDAO.getPbServiceTeamById(leaderIds[i]); if (leader != null) { if (i != 0) { leaderNameString.append(","); leaderPhoneString.append(","); } leaderNameString.append(leader.get("name")); leaderPhoneString.append(leader.get("phone")); } } comSwRotaVO.setLeaderName(leaderNameString.toString()); comSwRotaVO.setLeaderPhone(leaderPhoneString.toString()); } // 值班人员id查询值班人员的名字和电话 StringBuilder personNameString = new StringBuilder(); StringBuilder personPhoneString = new StringBuilder(); if (StringUtils.isNotEmpty(comSwRotaDO.getRotaPerson())) { String[] personIds = comSwRotaDO.getRotaPerson().split(","); for (int i = 0; i < personIds.length; i++) { Map person = comSwPatrolRecordDAO.getPbServiceTeamById(personIds[i]); if (person != null) { if (i != 0) { personNameString.append(","); personPhoneString.append(","); } personNameString.append(person.get("name")); personPhoneString.append(person.get("phone")); } } comSwRotaVO.setPersonName(personNameString.toString()); comSwRotaVO.setPersonPhone(personPhoneString.toString()); } return R.ok(comSwRotaVO); } @Override public R addRota(List comSwRotaSaveDTOs) { for (ComSwRotaSaveDTO comSwRotaSaveDTO : comSwRotaSaveDTOs) { if (comSwRotaSaveDTO.getId() != null && comSwRotaSaveDTO.getId() != 0) { ComSwRotaDO comSwRotaDO = comSwRotaDAO.selectById(comSwRotaSaveDTO.getId()); if (null == comSwRotaDO) { return R.fail("该值班表不存在"); } ComSwRotaDO checkCreditCode = comSwRotaDAO.selectOne(new QueryWrapper().lambda() .eq(ComSwRotaDO::getRotaDate, comSwRotaSaveDTO.getRotaDate()).eq(ComSwRotaDO::getCommunityId,comSwRotaSaveDTO.getCommunityId())); if (null != checkCreditCode && !comSwRotaDO.getId().equals(checkCreditCode.getId())) { return R.fail("该值班表已存在,值班日期重复"); } BeanUtils.copyProperties(comSwRotaSaveDTO, comSwRotaDO); try { comSwRotaDO.setRotaDate(new SimpleDateFormat("yyyy-MM-dd").parse(comSwRotaSaveDTO.getRotaDate())); } catch (ParseException e) { e.printStackTrace(); } comSwRotaDAO.updateById(comSwRotaDO); } else { Integer count = comSwRotaDAO.selectCount(new QueryWrapper().lambda() .eq(ComSwRotaDO::getRotaDate, comSwRotaSaveDTO.getRotaDate()).eq(ComSwRotaDO::getCommunityId,comSwRotaSaveDTO.getCommunityId())); if (count > 0) { return R.fail("该值班表已存在,值班日期重复"); } ComSwRotaDO comSwRotaDO = new ComSwRotaDO(); BeanUtils.copyProperties(comSwRotaSaveDTO, comSwRotaDO); comSwRotaDO.setId(Snowflake.getId()); try { comSwRotaDO.setRotaDate(new SimpleDateFormat("yyyy-MM-dd").parse(comSwRotaSaveDTO.getRotaDate())); } catch (ParseException e) { e.printStackTrace(); } comSwRotaDAO.insert(comSwRotaDO); } } return R.ok(); } @Override public R deleteRota(List rotaIds) { int delete = comSwRotaDAO.deleteBatchIds(rotaIds); if (delete > 0) { return R.ok(); } return R.fail("删除失败"); } @Override public R getRotaPersonByDate(String rotaDate,Long communityId) { ComSwRotaDO comSwRotaDO = new ComSwRotaDO(); try { comSwRotaDO = comSwRotaDAO.selectOne(new QueryWrapper().lambda().eq(ComSwRotaDO::getRotaDate, new SimpleDateFormat("yyyy-MM-dd").parse(rotaDate)).eq(ComSwRotaDO::getCommunityId,communityId)); } catch (ParseException e) { e.printStackTrace(); } if (comSwRotaDO == null) { return R.fail(rotaDate + "值班表不存在"); } List rotaPersons = new ArrayList<>(); if (null != comSwRotaDO) { String rotaPerson = comSwRotaDO.getRotaPerson(); String[] rotaPersonArray = rotaPerson.split(","); for (int i = 0; i <= rotaPersonArray.length - 1; i++) { ComSwRotaPersonVO comSwRotaPersonVO = new ComSwRotaPersonVO(); comSwRotaPersonVO.setId(Long.valueOf(rotaPersonArray[i])); Map userMap = this.comSwRotaDAO.getImageUrl(Long.valueOf(rotaPersonArray[i])); if (userMap != null) { comSwRotaPersonVO.setPhone(userMap.get("phone")); comSwRotaPersonVO.setImageUrl(userMap.get("url")); comSwRotaPersonVO.setName(userMap.get("name")); } rotaPersons.add(comSwRotaPersonVO); } } return R.ok(rotaPersons); } @Override public R getRotaLeaderByDate(String rotaDate,Long communityId) { ComSwRotaDO comSwRotaDO = new ComSwRotaDO(); try { comSwRotaDO = comSwRotaDAO.selectOne(new QueryWrapper().lambda().eq(ComSwRotaDO::getRotaDate, new SimpleDateFormat("yyyy-MM-dd").parse(rotaDate)).eq(ComSwRotaDO::getCommunityId,communityId)); } catch (ParseException e) { e.printStackTrace(); } if (comSwRotaDO == null) { return R.fail(rotaDate + "值班表不存在"); } List rotaLeaders = new ArrayList<>(); if (null != comSwRotaDO) { String rotaPerson = comSwRotaDO.getRotaLeader(); String[] rotaPersonArray = rotaPerson.split(","); for (int i = 0; i <= rotaPersonArray.length - 1; i++) { ComSwRotaPersonVO comSwRotaPersonVO = new ComSwRotaPersonVO(); comSwRotaPersonVO.setId(Long.valueOf(rotaPersonArray[i])); Map userMap = this.comSwRotaDAO.getImageUrl(Long.valueOf(rotaPersonArray[i])); if (userMap != null) { comSwRotaPersonVO.setPhone(userMap.get("phone")); comSwRotaPersonVO.setImageUrl(userMap.get("url")); comSwRotaPersonVO.setName(userMap.get("name")); } rotaLeaders.add(comSwRotaPersonVO); } } return R.ok(rotaLeaders); } @Override public R getTotlePerson(String param, Long communityId) { return userService.listActivityManager(param, communityId); } @Override public R listSaveSwRotaExcelVO(List list, Long communityId) { String[] parsePatterns = new String[] {"yyyy-MM-dd", "yyyy-M-dd", "yyyy-MM-d", "yyyy-M-d", "yyyy/MM/dd", "yyyy/M/dd", "yyyy/MM/d", "yyyy/M/d"}; List comSwRotaDOS = new ArrayList<>(); for (ComSwRotaExcelVO comSwRotaExcelVO : list) { Date date = DateUtil.parse(comSwRotaExcelVO.getRotaDate(), parsePatterns); Integer count = comSwRotaDAO.selectCount(new QueryWrapper().lambda().eq(ComSwRotaDO::getRotaDate, date) .eq(ComSwRotaDO::getCommunityId,communityId)); if (count > 0) { return R.fail("值班日期已存在," + comSwRotaExcelVO.getRotaDate() + "重复"); } ComSwRotaDO comSwRotaDO = new ComSwRotaDO(); String[] leaderPhones = comSwRotaExcelVO.getLeaderPhone().split("、"); String[] leaderNames = comSwRotaExcelVO.getLeaderName().split("、"); List leaderIds = new ArrayList<>(); for (int i = 0; i < leaderPhones.length; i++) { String id = comSwRotaDAO.getTeamIdsByTeamPhone(leaderPhones[i]); if (StringUtils.isEmpty(id)) { return R.fail(leaderNames[i] + "为非社区团队人员或该人员电话未维护!"); } leaderIds.add(id); } String[] personPhones = comSwRotaExcelVO.getPersonPhone().split("、"); String[] personNames = comSwRotaExcelVO.getPersonName().split("、"); List personIds = new ArrayList<>(); for (int i = 0; i < personPhones.length; i++) { String id = comSwRotaDAO.getTeamIdsByTeamPhone(personPhones[i]); if (StringUtils.isEmpty(id)) { return R.fail(personNames[i] + "为非社区团队人员或该人员电话未维护!"); } personIds.add(id); } BeanUtils.copyProperties(comSwRotaExcelVO, comSwRotaDO); comSwRotaDO.setId(Snowflake.getId()); comSwRotaDO.setCommunityId(communityId); // if (StringUtils.isNotEmpty(comSwRotaExcelVO.getRotaDate())) { // String el = // "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29) // \n" + // "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29) // "; // Pattern p = Pattern.compile(el); // Matcher m = p.matcher(comSwRotaExcelVO.getRotaDate()); // if (!m.matches()) { // return R.fail(comSwRotaExcelVO.getRotaDate() + "日期格式不正确"); // } // } // try { // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // comSwRotaDO.setRotaDate(sdf.parse(comSwRotaExcelVO.getRotaDate())); // } catch (ParseException e) { // e.printStackTrace(); // } comSwRotaDO.setRotaDate(date); comSwRotaDO.setRotaLeader(StringUtils.join(leaderIds, ",")); comSwRotaDO.setRotaPerson(StringUtils.join(personIds, ",")); comSwRotaDO.setLeaderName(comSwRotaExcelVO.getLeaderName().replace("、", ",")); comSwRotaDO.setPersonName(comSwRotaExcelVO.getPersonName().replace("、", ",")); comSwRotaDOS.add(comSwRotaDO); } this.saveBatch(comSwRotaDOS); return R.ok(); } }