/*
|
* 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<TaskPlaceRectificationMapper, TaskPlaceRectificationEntity> implements ITaskPlaceRectificationService {
|
|
@Autowired
|
private IDictBizService dictBizService;
|
|
@Override
|
public IPage<TaskPlaceRectificationVO> selectTaskPlaceRectificationPage(IPage<TaskPlaceRectificationVO> 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<TaskPlaceRectificationVO> selectTaskPlaceRectificationList(IPage<TaskPlaceRectificationVO> 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<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
|
Integer isAdministrator = AuthUtil.isAdministrator()==true?1:2;
|
// 网格编号集合
|
List<String> 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<String> strings = new ArrayList<>();
|
if (null!=taskPlaceRectificationDTO.getNineType()){
|
QueryWrapper<DictBiz> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("is_deleted",0).eq("dict_key",taskPlaceRectificationDTO.getNineType()).eq("code","nineType");
|
// 先查询当前
|
DictBiz one = dictBizService.getOne(queryWrapper);
|
// 查询本身和子集的key
|
List<DictBiz> 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<TaskPlaceRectificationVO> taskPlaceRectificationVOS = baseMapper.selectTaskPlaceRectificationList(page,
|
taskPlaceRectificationDTO,
|
regionChildCodesList,
|
isAdministrator,
|
gridCodeList,
|
strings);
|
for (TaskPlaceRectificationVO taskPlaceRectificationVO : taskPlaceRectificationVOS) {
|
StringBuilder builder = new StringBuilder("");
|
List<PatrolRecordVO> 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<PatrolRecordVO> 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.<TaskEntity>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.<TaskEntity>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<String> regionChildCodesList = new ArrayList<>();//SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
|
Integer isAdministrator = AuthUtil.isAdmin() == true ? 1 : 2;
|
// 统计九小场所类型隐患统计
|
IRegionService bean = SpringUtils.getBean(IRegionService.class);
|
List<Region> list = bean.list(Wrappers.<Region>lambdaQuery()
|
.like(Region::getCode, "361102")
|
.eq(Region::getRegionLevel, 4));
|
List<RegionVO> copy = BeanUtil.copy(list, RegionVO.class);
|
for (RegionVO regionVO : copy) {
|
List<Map<String, Object>> nineTypeStatistics = baseMapper.getNineTypeStatistics(regionVO.getCode(), regionChildCodesList, isAdministrator, taskPlaceRectification);
|
regionVO.setNineTypeStatistics(nineTypeStatistics);
|
}
|
return copy;
|
}
|
|
@Override
|
public List<TaskPlaceRectificationExcel> 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<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
|
Integer isAdministrator = AuthUtil.isAdministrator()==true?1:2;
|
// 网格编号集合
|
List<String> 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<String> strings = new ArrayList<>();
|
if (null!=taskPlaceRectificationVO.getNineType()){
|
QueryWrapper<DictBiz> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("is_deleted",0).eq("dict_key",taskPlaceRectificationVO.getNineType()).eq("code","nineType");
|
// 先查询当前
|
DictBiz one = dictBizService.getOne(queryWrapper);
|
// 查询本身和子集的key
|
List<DictBiz> 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<TaskPlaceRectificationExcel> export = baseMapper.export(
|
taskPlaceRectificationVO,
|
regionChildCodesList,
|
isAdministrator,
|
gridCodeList,
|
strings);
|
IDictBizService bean = SpringUtils.getBean(IDictBizService.class);
|
List<DictBiz> nineType = bean.list(Wrappers.<DictBiz>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<PatrolRecordVO> 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<PlaceRectificationsExcel> 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<String> objects = new ArrayList<>();
|
List<String> objects2 = new ArrayList<>();
|
List<String> objects3 = new ArrayList<>();
|
List<String> 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.<PlaceEntity>lambdaQuery()
|
.eq(PlaceEntity::getHouseCode, datum.getHouseCode())
|
.eq(PlaceEntity::getIsDeleted, 0));
|
if (one == null) {
|
// 新增场所
|
DoorplateAddressEntity doorplateAddressEntity = bean3.getOne(Wrappers.<DoorplateAddressEntity>lambdaQuery()
|
.eq(DoorplateAddressEntity::getAddressCode, datum.getHouseCode()));
|
if (doorplateAddressEntity != null) {
|
objects.add(datum.getHouseCode());
|
continue;
|
} else {
|
PoliceAffairsGridEntity one1 = policeAffairsGridService.getOne(Wrappers.<PoliceAffairsGridEntity>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.<User>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.<PlaceEntity>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;
|
}
|
}
|