linwei
2024-02-05 9217ec61bae4e02be35f26c84b4993d3d9f97d86
src/main/java/org/springblade/modules/taskPlaceRectification/service/impl/TaskPlaceRectificationServiceImpl.java
@@ -16,28 +16,39 @@
 */
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.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;
@@ -50,6 +61,8 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 场所整改任务表 服务实现类
@@ -86,14 +99,16 @@
   @Override
   public IPage<TaskPlaceRectificationVO> selectTaskPlaceRectificationList(IPage<TaskPlaceRectificationVO> page, TaskPlaceRectificationDTO taskPlaceRectificationDTO) {
      // 数据过滤 todo
      List<String> regionChildCodesList = new ArrayList<>();//SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
      Integer isAdministrator = AuthUtil.isAdmin() == true ? 1 : 2;
      List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
      Integer isAdministrator = AuthUtil.isAdministrator() == true ? 1 : 2;
      List<TaskPlaceRectificationVO> taskPlaceRectificationVOS = baseMapper.selectTaskPlaceRectificationList(page, taskPlaceRectificationDTO, regionChildCodesList, isAdministrator);
      for (TaskPlaceRectificationVO taskPlaceRectificationVO : taskPlaceRectificationVOS) {
         StringBuilder builder = new StringBuilder("");
         List<PatrolRecordVO> patrolRecordVOList = taskPlaceRectificationVO.getPatrolRecordVOList();
         for (int i = 0; i < patrolRecordVOList.size(); i++) {
            builder.append(i + 1).append(" : ").append(patrolRecordVOList.get(i).getItemsName()).append("; ");
            if (patrolRecordVOList.get(i).getState().equals(0)) {
               builder.append(i + 1).append(" : ").append(patrolRecordVOList.get(i).getItemsName()).append("; ");
            }
         }
         taskPlaceRectificationVO.setHiddenDanger(builder.toString());
      }
@@ -128,6 +143,9 @@
         .set(TaskEntity::getRemark, taskPlaceRectification.getReasonFailure())
         .eq(TaskEntity::getId, taskPlaceRectification.getTaskId()));
      // 更新任务详情状态
      if (taskPlaceRectification.getStatus().equals(2)) {
         taskPlaceRectification.setRectificationFlag(2);
      }
      boolean b1 = updateById(taskPlaceRectification);
      return b1;
   }
@@ -161,7 +179,13 @@
      for (TaskPlaceRectificationExcel taskPlaceRectificationExcel : export) {
         for (DictBiz dictBiz : nineType) {
            if (StringUtils.isNotBlank(taskPlaceRectificationExcel.getNineType()) && taskPlaceRectificationExcel.getNineType().equals(dictBiz.getDictKey())) {
               taskPlaceRectificationExcel.setNineType(dictBiz.getDictValue());
               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)) {
@@ -177,10 +201,152 @@
         StringBuilder builder = new StringBuilder("");
         List<PatrolRecordVO> patrolRecordVOList = taskPlaceRectificationExcel.getPatrolRecordVOList();
         for (int i = 0; i < patrolRecordVOList.size(); i++) {
            builder.append(i + 1).append(" : ").append(patrolRecordVOList.get(i).getItemsName()).append("; ");
            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);
      IPlaceCheckService bean2 = SpringUtils.getBean(IPlaceCheckService.class);
      IDoorplateAddressService bean3 = SpringUtils.getBean(IDoorplateAddressService.class);
      List<String> objects = new ArrayList<>();
      for (PlaceRectificationsExcel datum : data) {
         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 one1 = bean3.getOne(Wrappers.<DoorplateAddressEntity>lambdaQuery()
               .eq(DoorplateAddressEntity::getAddressCode, datum.getHouseCode()));
            if (one1 == null) {
               objects.add(datum.getHouseCode());
            }
            PlaceCheckEntity placeCheckEntity = new PlaceCheckEntity();
            String police = datum.getPolice();
            String phone = getPhone(police);
            if (StringUtils.isNotBlank(phone)) {
               User one3 = bean1.getOne(Wrappers.<User>lambdaQuery()
                  .eq(User::getPhone, phone)
                  .eq(User::getIsDeleted, 0));
               if (one3 != null) {
                  placeCheckEntity.setCreateUser(one3.getId());
               }
            }
            // 4.保存检查表
            placeCheckEntity.setHouseCode(datum.getHouseCode());
            bean2.save(placeCheckEntity);
            continue;
         }
         // 2.判断负责人电话是否存在
         if (StringUtils.isBlank(datum.getPrincipalPhone())) {
            one.setLocation(datum.getAddressName());
            one.setPlaceName(datum.getPlaceName());
            bean.updateById(one);
            PlaceCheckEntity placeCheckEntity = new PlaceCheckEntity();
            String police = datum.getPolice();
            String phone = getPhone(police);
            if (StringUtils.isNotBlank(phone)) {
               User one3 = bean1.getOne(Wrappers.<User>lambdaQuery()
                  .eq(User::getPhone, phone)
                  .eq(User::getIsDeleted, 0));
               if (one3 != null) {
                  placeCheckEntity.setCreateUser(one3.getId());
               }
            }
            // 4.保存检查表
            placeCheckEntity.setHouseCode(datum.getHouseCode());
            bean2.save(placeCheckEntity);
            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(datum.getPrincipal().trim());
            newUser.setRealName(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());
            bean.updateById(one);
         } else {
            // 3.更新场所负责人
            one.setPrincipal(one1.getRealName());
            one.setPrincipalUserId(one1.getId());
            one.setPrincipalPhone(one1.getPhone());
            one.setLocation(datum.getAddressName());
            one.setPlaceName(datum.getPlaceName());
            bean.updateById(one);
         }
         PlaceCheckEntity placeCheckEntity = new PlaceCheckEntity();
         String police = datum.getPolice();
         String phone = getPhone(police);
         if (StringUtils.isNotBlank(phone)) {
            User one3 = bean1.getOne(Wrappers.<User>lambdaQuery()
               .eq(User::getPhone, phone)
               .eq(User::getIsDeleted, 0));
            if (one3 != null) {
               placeCheckEntity.setCreateUser(one3.getId());
            }
         }
         // 4.保存检查表
         placeCheckEntity.setHouseCode(datum.getHouseCode());
         bean2.save(placeCheckEntity);
      }
      System.out.println("没有数据:" + JSON.toJSONString(objects));
   }
   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;
   }
}