/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.task.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import liquibase.repackaged.org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.util.Strings; import org.springblade.common.cache.SysCache; import org.springblade.common.utils.AuthUtils; import org.springblade.common.utils.SpringUtils; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.SpringUtil; import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity; import org.springblade.modules.doorplateAddress.service.IDoorplateAddressService; import org.springblade.modules.grid.service.IGridService; import org.springblade.modules.patrol.entity.PatrolRecord; import org.springblade.modules.patrol.service.IPatrolRecordService; import org.springblade.modules.patrol.vo.PatrolRecordVO; import org.springblade.modules.place.entity.PlaceEntity; import org.springblade.modules.place.service.IPlaceService; import org.springblade.modules.place.vo.PlaceVO; import org.springblade.modules.police.entity.PoliceAffairsGridEntity; import org.springblade.modules.police.service.IPoliceAffairsGridService; import org.springblade.modules.system.entity.DictBiz; import org.springblade.modules.system.entity.Region; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.service.IDictBizService; import org.springblade.modules.system.service.IRegionService; import org.springblade.modules.system.service.IUserService; import org.springblade.modules.system.vo.RegionVO; import org.springblade.modules.task.entity.TaskEntity; import org.springblade.modules.task.service.ITaskService; import org.springblade.modules.task.dto.TaskPlaceRectificationDTO; import org.springblade.modules.task.entity.TaskPlaceRectificationEntity; import org.springblade.modules.task.excel.PlaceRectificationsExcel; import org.springblade.modules.task.excel.TaskPlaceRectificationExcel; import org.springblade.modules.task.mapper.TaskPlaceRectificationMapper; import org.springblade.modules.task.service.ITaskPlaceRectificationService; import org.springblade.modules.task.vo.TaskPlaceRectificationVO; import org.springblade.modules.task.vo.TaskPlaceRectificationsVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; /** * 场所整改任务表 服务实现类 * * @author BladeX * @since 2024-01-31 */ @Service public class TaskPlaceRectificationServiceImpl extends ServiceImpl implements ITaskPlaceRectificationService { @Autowired private IDictBizService dictBizService; @Override public IPage selectTaskPlaceRectificationPage(IPage page, TaskPlaceRectificationVO taskPlaceRectification) { return page.setRecords(baseMapper.selectTaskPlaceRectificationPage(page, taskPlaceRectification)); } /** * 查询场所整改任务表 * * @param taskId 场所整改任务表ID * @return 场所整改任务表 */ @Override public TaskPlaceRectificationVO selectTaskPlaceRectificationById(Long taskId) { return this.baseMapper.selectTaskPlaceRectificationById(taskId); } /** * 查询场所整改任务表列表 * * @param taskPlaceRectificationDTO 场所整改任务表 * @return 场所整改任务表集合 */ @Override public IPage selectTaskPlaceRectificationList(IPage page, TaskPlaceRectificationDTO taskPlaceRectificationDTO) { // 数据过滤 todo String roleName = SpringUtils.getRequestParam("roleName"); String communityCode = SpringUtils.getRequestParam("communityCode"); if (!Strings.isBlank(communityCode)){ // 校验社区编号是否合规 if(null!=SpringUtils.getBean(IRegionService.class).getById(communityCode)) { taskPlaceRectificationDTO.setCommunityCode(communityCode); } } List regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId()); Integer isAdministrator = AuthUtil.isAdministrator()==true?1:2; // 网格编号集合 List gridCodeList = new ArrayList<>(); // 民警角色 if (!Strings.isBlank(roleName)){ taskPlaceRectificationDTO.setRoleName(roleName); if(roleName.equals("mj")) { regionChildCodesList = SpringUtil.getBean(IPoliceAffairsGridService.class).getCommunityCodeListByUserId(AuthUtil.getUserId()); } if (roleName.equals("wgy")) { gridCodeList = SpringUtil.getBean(IGridService.class).getGridListByUserId(AuthUtil.getUserId()); } } List strings = new ArrayList<>(); if (null!=taskPlaceRectificationDTO.getNineType()){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("is_deleted",0).eq("dict_key",taskPlaceRectificationDTO.getNineType()).eq("code","nineType"); // 先查询当前 DictBiz one = dictBizService.getOne(queryWrapper); // 查询本身和子集的key List list = dictBizService.getList("nineType", one.getId()); if (list.size()==0){ strings.add(taskPlaceRectificationDTO.getNineType()); }else { strings = list.stream().map(DictBiz::getDictKey).collect(Collectors.toList()); } } List taskPlaceRectificationVOS = baseMapper.selectTaskPlaceRectificationList(page, taskPlaceRectificationDTO, regionChildCodesList, isAdministrator, gridCodeList, strings); for (TaskPlaceRectificationVO taskPlaceRectificationVO : taskPlaceRectificationVOS) { StringBuilder builder = new StringBuilder(""); List patrolRecordVOList = taskPlaceRectificationVO.getPatrolRecordVOList(); for (int i = 0; i < patrolRecordVOList.size(); i++) { if (patrolRecordVOList.get(i).getState().equals(0)) { builder.append(i + 1).append(" : ").append(patrolRecordVOList.get(i).getItemsName()).append("; "); } } taskPlaceRectificationVO.setHiddenDanger(builder.toString()); } return page.setRecords(taskPlaceRectificationVOS); } @Override public Boolean updateRectification(TaskPlaceRectificationVO taskPlaceRectification) { // 更新隐患项记录 IPatrolRecordService patrolRecordService = SpringUtils.getBean(IPatrolRecordService.class); List patrolRecordVOList = taskPlaceRectification.getPatrolRecordVOList(); boolean b = patrolRecordService.updateBatchById(BeanUtil.copy(patrolRecordVOList, PatrolRecord.class)); if (b) { // 更新任务状态 ITaskService bean = SpringUtils.getBean(ITaskService.class); boolean update = bean.update(Wrappers.lambdaUpdate() .set(TaskEntity::getStatus, taskPlaceRectification.getStatus()) .eq(TaskEntity::getId, taskPlaceRectification.getTaskId())); // 更新任务详情状态 boolean b1 = updateById(taskPlaceRectification); return b1; } return false; } @Override public Boolean applyRectification(TaskPlaceRectificationVO taskPlaceRectification) { // 更新任务状态 ITaskService bean = SpringUtils.getBean(ITaskService.class); boolean update = bean.update(Wrappers.lambdaUpdate() .set(TaskEntity::getStatus, taskPlaceRectification.getStatus()) .set(TaskEntity::getRemark, taskPlaceRectification.getReasonFailure()) .eq(TaskEntity::getId, taskPlaceRectification.getTaskId())); // 更新任务详情状态 if (taskPlaceRectification.getStatus().equals(2)) { taskPlaceRectification.setRectificationFlag(2); } boolean b1 = updateById(taskPlaceRectification); return b1; } @Override public Object rectificationStatistics(TaskPlaceRectificationVO taskPlaceRectification) { // todo List regionChildCodesList = new ArrayList<>();//SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId()); Integer isAdministrator = AuthUtil.isAdmin() == true ? 1 : 2; // 统计九小场所类型隐患统计 IRegionService bean = SpringUtils.getBean(IRegionService.class); List list = bean.list(Wrappers.lambdaQuery() .like(Region::getCode, "361102") .eq(Region::getRegionLevel, 4)); List copy = BeanUtil.copy(list, RegionVO.class); for (RegionVO regionVO : copy) { List> nineTypeStatistics = baseMapper.getNineTypeStatistics(regionVO.getCode(), regionChildCodesList, isAdministrator, taskPlaceRectification); regionVO.setNineTypeStatistics(nineTypeStatistics); } return copy; } @Override public List export(TaskPlaceRectificationsVO taskPlaceRectificationVO) { // 数据过滤 todo String roleName = SpringUtils.getRequestParam("roleName"); String communityCode = SpringUtils.getRequestParam("communityCode"); if (!Strings.isBlank(communityCode)){ // 校验社区编号是否合规 if(null!=SpringUtils.getBean(IRegionService.class).getById(communityCode)) { taskPlaceRectificationVO.setCommunityCode(communityCode); } } List regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId()); Integer isAdministrator = AuthUtil.isAdministrator()==true?1:2; // 网格编号集合 List gridCodeList = new ArrayList<>(); // 民警角色 if (!Strings.isBlank(roleName)){ taskPlaceRectificationVO.setRoleName(roleName); if(roleName.equals("mj")) { regionChildCodesList = SpringUtil.getBean(IPoliceAffairsGridService.class).getCommunityCodeListByUserId(AuthUtil.getUserId()); } if (roleName.equals("wgy")) { gridCodeList = SpringUtil.getBean(IGridService.class).getGridListByUserId(AuthUtil.getUserId()); } } List strings = new ArrayList<>(); if (null!=taskPlaceRectificationVO.getNineType()){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("is_deleted",0).eq("dict_key",taskPlaceRectificationVO.getNineType()).eq("code","nineType"); // 先查询当前 DictBiz one = dictBizService.getOne(queryWrapper); // 查询本身和子集的key List list = dictBizService.getList("nineType", one.getId()); if (list.size()==0){ strings.add(taskPlaceRectificationVO.getNineType()); }else { strings = list.stream().map(DictBiz::getDictKey).collect(Collectors.toList()); } } List export = baseMapper.export( taskPlaceRectificationVO, regionChildCodesList, isAdministrator, gridCodeList, strings); IDictBizService bean = SpringUtils.getBean(IDictBizService.class); List nineType = bean.list(Wrappers.lambdaQuery().eq(DictBiz::getCode, "nineType").eq(DictBiz::getIsDeleted, 0)); for (TaskPlaceRectificationExcel taskPlaceRectificationExcel : export) { for (DictBiz dictBiz : nineType) { if (StringUtils.isNotBlank(taskPlaceRectificationExcel.getNineType()) && taskPlaceRectificationExcel.getNineType().equals(dictBiz.getDictKey())) { if (taskPlaceRectificationExcel.getNineType().contains("10,11,12")) { taskPlaceRectificationExcel.setNineType("小学校(幼儿园、校外培训机构)- " + dictBiz.getDictValue()); } else if (taskPlaceRectificationExcel.getNineType().contains("13,14,15")) { taskPlaceRectificationExcel.setNineType("小医院(诊所、养老院)- " + dictBiz.getDictValue()); } else { taskPlaceRectificationExcel.setNineType(dictBiz.getDictValue()); } } } if (taskPlaceRectificationExcel.getRectificationFlag().equals(1)) { taskPlaceRectificationExcel.setRectificationFlag("否"); } else { taskPlaceRectificationExcel.setRectificationFlag("是"); } if (taskPlaceRectificationExcel.getRectificationNoticeFlag().equals(1)) { taskPlaceRectificationExcel.setRectificationNoticeFlag("否"); } else { taskPlaceRectificationExcel.setRectificationNoticeFlag("是"); } StringBuilder builder = new StringBuilder(""); List patrolRecordVOList = taskPlaceRectificationExcel.getPatrolRecordVOList(); for (int i = 0; i < patrolRecordVOList.size(); i++) { if (patrolRecordVOList.get(i).getState().equals(0)) { builder.append(i + 1).append(" : ").append(patrolRecordVOList.get(i).getItemsName()).append("; "); } } taskPlaceRectificationExcel.setHiddenDanger(builder.toString()); } return export; } @Override public void importPlaceRectifications(List data, Boolean isCovered) { IPlaceService bean = SpringUtils.getBean(IPlaceService.class); IUserService bean1 = SpringUtils.getBean(IUserService.class); IDoorplateAddressService bean3 = SpringUtils.getBean(IDoorplateAddressService.class); IPlaceService bean4 = SpringUtils.getBean(IPlaceService.class); IPoliceAffairsGridService policeAffairsGridService = SpringUtils.getBean(IPoliceAffairsGridService.class); List objects = new ArrayList<>(); List objects2 = new ArrayList<>(); List objects3 = new ArrayList<>(); List objects4 = new ArrayList<>(); int a = 0; for (PlaceRectificationsExcel datum : data) { a++; System.out.println(a + "第几个:" + datum.getHouseCode()); String phone1 = getPhone(datum.getPrincipals()); String name = getName(datum.getPrincipals()); datum.setPrincipalPhone(phone1); datum.setPrincipal(name); // 1.判断场所是否存在 PlaceEntity one = bean.getOne(Wrappers.lambdaQuery() .eq(PlaceEntity::getHouseCode, datum.getHouseCode()) .eq(PlaceEntity::getIsDeleted, 0)); if (one == null) { // 新增场所 DoorplateAddressEntity doorplateAddressEntity = bean3.getOne(Wrappers.lambdaQuery() .eq(DoorplateAddressEntity::getAddressCode, datum.getHouseCode())); if (doorplateAddressEntity != null) { objects.add(datum.getHouseCode()); continue; } else { PoliceAffairsGridEntity one1 = policeAffairsGridService.getOne(Wrappers.lambdaQuery() .like(PoliceAffairsGridEntity::getCommunityName, datum.getCommunityName()).last("limit 1")); if (one1 == null) { continue; } PlaceVO placeVO = new PlaceVO(); placeVO.setJwGridCode(one1.getJwGridCode()); placeVO.setHouseCode(datum.getHouseCode()); placeVO.setIsNine(1); placeVO.setPrincipal(StringUtils.isBlank(datum.getPrincipal().trim()) ? "demo" : datum.getPrincipal().trim()); placeVO.setPrincipalPhone(datum.getPrincipalPhone()); placeVO.setRoleName("民警"); placeVO.setLocation(datum.getPlaceAddress()); placeVO.setSource(2); placeVO.setIsScene(1); placeVO.setIsNine(1); placeVO.setPlaceName(datum.getPlaceName()); if (StringUtils.isNotBlank(datum.getNineType())) { placeVO.setNineType(Integer.valueOf(datum.getNineType())); } Boolean aBoolean = bean4.addOrUpdate(placeVO); objects2.add(datum.getHouseCode()); continue; } } // 2.判断负责人电话是否存在 if (StringUtils.isBlank(datum.getPrincipalPhone())) { objects4.add(datum.getHouseCode()); continue; } // 2.判断负责人是否存在 User one1 = bean1.getOne(Wrappers.lambdaQuery() .eq(User::getPhone, datum.getPrincipalPhone()) .eq(User::getIsDeleted, 0)); if (one1 == null) { // 创建 User newUser = new User(); //如果用户不存在,则新增一个用户 newUser.setAccount(datum.getPrincipalPhone().trim()); newUser.setPhone(datum.getPrincipalPhone().trim()); newUser.setName(StringUtils.isBlank(datum.getPrincipal().trim()) ? "demo" : datum.getPrincipal().trim()); newUser.setRealName(StringUtils.isBlank(datum.getPrincipal().trim()) ? "demo" : datum.getPrincipal().trim()); // 社区群众部门 newUser.setDeptId("1727979636479037441"); // 目前暂定居民角色, newUser.setRoleId("1717429059648606209"); //默认密码为 123456 newUser.setPassword("123456"); // 用户新增 boolean submit = bean1.submit(newUser); // 3.更新场所负责人 one.setPrincipal(newUser.getRealName()); one.setPrincipalUserId(newUser.getId()); one.setPrincipalPhone(newUser.getPhone()); one.setLocation(datum.getAddressName()); one.setPlaceName(datum.getPlaceName()); one.setIsNine(1); if (StringUtils.isNotBlank(datum.getNineType())) { one.setNineType(Integer.valueOf(datum.getNineType())); } bean.updateById(one); } else { if (one == null) { one = bean.getOne(Wrappers.lambdaQuery() .eq(PlaceEntity::getHouseCode, datum.getHouseCode()) .eq(PlaceEntity::getIsDeleted, 0)); } // 3.更新场所负责人 one.setIsNine(1); if (StringUtils.isNotBlank(datum.getNineType())) { one.setNineType(Integer.valueOf(datum.getNineType())); } one.setPrincipal(one1.getRealName()); one.setPrincipalUserId(one1.getId()); one.setPrincipalPhone(one1.getPhone()); one.setLocation(datum.getAddressName()); one.setPlaceName(datum.getPlaceName()); bean.updateById(one); } } System.out.println("没有数据:" + JSON.toJSONString(objects)); System.out.println("没有数据2:" + JSON.toJSONString(objects2)); System.out.println("没有数据3:" + JSON.toJSONString(objects3)); System.out.println("没有数据4:" + JSON.toJSONString(objects4)); } private String getPhone(String text) { if (StringUtils.isBlank(text)) { return ""; } Pattern pattern = Pattern.compile("1[3-9]\\d{9}"); Matcher matcher = pattern.matcher(text); while (matcher.find()) { return matcher.group(); } return ""; } private String getName(String text) { if (StringUtils.isBlank(text)) { return ""; } // Pattern pattern = Pattern.compile("[\\\\u4e00-\\\\u9fa5]+"); // Matcher matcher = pattern.matcher(text); String result = text.replaceAll("[^\\u4e00-\\u9fa5]", ""); // while (matcher.find()) { // return matcher.group(); // } return result; } @Override public Integer getCount(String neiCode, int i) { // 获取请求头中的角色别名 String roleName = SpringUtils.getRequestParam("roleName"); if (AuthUtils.isMj(roleName)) { return baseMapper.getCount(neiCode, i, AuthUtil.getUserId()); } return 0; } }