/* * 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.taskPlaceRectification.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.lettuce.core.ScriptOutputType; import liquibase.repackaged.org.apache.commons.lang3.StringUtils; import org.springblade.common.cache.SysCache; import org.springblade.common.utils.SpringUtils; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity; import org.springblade.modules.doorplateAddress.service.IDoorplateAddressService; import org.springblade.modules.house.excel.HouseExcel; 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.PlaceCheckEntity; import org.springblade.modules.place.entity.PlaceEntity; import org.springblade.modules.place.excel.NinePlaceExcel; import org.springblade.modules.place.service.IPlaceCheckService; import org.springblade.modules.place.service.IPlaceService; import org.springblade.modules.place.vo.PlaceVO; 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.IDeptService; 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.taskPlaceRectification.dto.TaskPlaceRectificationDTO; import org.springblade.modules.taskPlaceRectification.entity.TaskPlaceRectificationEntity; import org.springblade.modules.taskPlaceRectification.excel.PlaceRectificationsExcel; import org.springblade.modules.taskPlaceRectification.excel.TaskPlaceRectificationExcel; import org.springblade.modules.taskPlaceRectification.vo.TaskPlaceRectificationVO; import org.springblade.modules.taskPlaceRectification.mapper.TaskPlaceRectificationMapper; import org.springblade.modules.taskPlaceRectification.service.ITaskPlaceRectificationService; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.modules.taskPlaceRectification.vo.TaskPlaceRectificationsVO; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 场所整改任务表 服务实现类 * * @author BladeX * @since 2024-01-31 */ @Service public class TaskPlaceRectificationServiceImpl extends ServiceImpl implements ITaskPlaceRectificationService { @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 List regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId()); Integer isAdministrator = AuthUtil.isAdministrator() == true ? 1 : 2; List taskPlaceRectificationVOS = baseMapper.selectTaskPlaceRectificationList(page, taskPlaceRectificationDTO, regionChildCodesList, isAdministrator); 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 List regionChildCodesList = new ArrayList<>();//SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId()); Integer isAdministrator = AuthUtil.isAdmin() == true ? 1 : 2; List export = baseMapper.export(taskPlaceRectificationVO, regionChildCodesList, isAdministrator); 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); IPlaceCheckService bean2 = SpringUtils.getBean(IPlaceCheckService.class); IDoorplateAddressService bean3 = SpringUtils.getBean(IDoorplateAddressService.class); IPlaceService bean4 = SpringUtils.getBean(IPlaceService.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 { PlaceVO placeVO = new PlaceVO(); 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.setBuildingCode(doorplateAddressEntity.getBuildingCode()); placeVO.setLat(doorplateAddressEntity.getY()); placeVO.setLng(doorplateAddressEntity.getX()); placeVO.setLocation(datum.getAddressName()); placeVO.setSource(1); placeVO.setIsScene(1); placeVO.setIsNine(1); if (StringUtils.isNotBlank(datum.getNineType())) { placeVO.setNineType(Integer.valueOf(datum.getNineType())); } Boolean aBoolean = bean4.addOrUpdate(placeVO); objects2.add(datum.getHouseCode()); } } // 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) { 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) { // 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; } }