linwe
2023-12-01 5d5cd3ad979a0b85ab8c7034dcad1663fdcf71be
src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.springblade.common.node.TreeNode;
import org.apache.logging.log4j.util.Strings;
import org.springblade.common.node.TreeStringNode;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity;
@@ -28,8 +28,12 @@
import org.springblade.modules.place.entity.PlaceEntity;
import org.springblade.modules.place.entity.PlaceExtEntity;
import org.springblade.modules.place.entity.PlacePoiLabel;
import org.springblade.modules.place.entity.PlaceRelEntity;
import org.springblade.modules.place.excel.PlaceAndRelExcel;
import org.springblade.modules.place.excel.PlaceExcel;
import org.springblade.modules.place.service.IPlaceExtService;
import org.springblade.modules.place.service.IPlacePoiLabelService;
import org.springblade.modules.place.service.IPlaceRelService;
import org.springblade.modules.place.vo.PlaceVO;
import org.springblade.modules.place.mapper.PlaceMapper;
import org.springblade.modules.place.service.IPlaceService;
@@ -63,6 +67,9 @@
   private IPlaceExtService placeExtService;
   @Autowired
   private IPlaceRelService placeRelService;
   @Autowired
   private IDoorplateAddressService doorplateAddressService;
   @Autowired
@@ -93,7 +100,7 @@
    * @return
    */
   @Override
   public List<TreeNode> selectPlaceNodeList(Long userId) {
   public List<TreeStringNode> selectPlaceNodeList(Long userId) {
      return baseMapper.selectPlaceNodeList(userId.toString());
   }
@@ -151,18 +158,29 @@
         userParams.setPhone(placeVO.getPhone());
         User user = userService.getOne(Condition.getQueryWrapper(userParams));
         if (user != null) {
         if (null!=user) {
            //如果用户存在,则该用户id绑定场所
            placeVO.setPrincipalUserId(user.getId());
            newUser = user;
            // 判断用户是否包含了居民角色,不包含则需更新
            if (!user.getRoleId().contains("1717429059648606209")){
               user.setRoleId(user.getRoleId() + ",1717429059648606209");
               //更新
               userService.updateById(user);
            }
         } else {
            //如果用户不存在,则新增一个用户
            newUser.setAccount(placeVO.getPhone());
            newUser.setPhone(placeVO.getPhone());
            newUser.setName(placeVO.getUsername());
            newUser.setRealName(placeVO.getUsername());
            // 目前暂定居民角色,默认密码为 123456
            // 社区群众部门
            newUser.setDeptId("1727979636479037441");
            // 目前暂定居民角色,
            newUser.setRoleId("1717429059648606209");
            //默认密码为 123456
            newUser.setPassword("123456");
            // 设置机构
            // 用户新增
            boolean submit = userService.submit(newUser);
            //绑定id
@@ -246,28 +264,179 @@
    * @return
    */
   @Override
   public PlaceVO getDetail(PlaceEntity place) {
   public PlaceVO getDetail(PlaceVO place) {
      // 查询场所信息
      PlaceVO placeVO = baseMapper.getDetail(place);
      if (null!= placeVO) {
         if (null != placeVO.getHouseCode() && !placeVO.getHouseCode().equals("")){
            place.setHouseCode(placeVO.getHouseCode());
      if (null!= place.getAddressType() && place.getAddressType()==4){
         if (null != placeVO) {
            // 查询地址编码信息(社区派出所相关信息)
            DoorplateAddressEntity addressEntity = placeRelService.getDoorplateAddressEntity(placeVO);
            placeVO.setDoorplateAddressEntity(addressEntity);
            // 查询网格信息
            placeVO.setGrid(gridService.getGridDetailByParam(placeVO));
         }
         // 查询门牌地址信息
         if (null != place.getHouseCode() && !place.getHouseCode().equals("")) {
            QueryWrapper<DoorplateAddressEntity> wrapper = new QueryWrapper<>();
            wrapper.eq("address_code", place.getHouseCode());
            List<DoorplateAddressEntity> list = doorplateAddressService.list(wrapper);
            if (list.size() > 0) {
               placeVO.setDoorplateAddressEntity(list.get(0));
      }else {
         if (null != placeVO) {
            if (null != placeVO.getHouseCode() && !placeVO.getHouseCode().equals("")) {
               place.setHouseCode(placeVO.getHouseCode());
            }
            // 查询网格数据
            placeVO.setGrid(gridService.getGridDetailByHouseCode(place.getHouseCode()));
         }else {
            // 通过定位点落面分析网格位置,反向推出社区派出所相关数据
            // 查询门牌地址信息
            if (null != place.getHouseCode() && !place.getHouseCode().equals("")) {
               QueryWrapper<DoorplateAddressEntity> wrapper = new QueryWrapper<>();
               wrapper.eq("address_code", place.getHouseCode());
               List<DoorplateAddressEntity> list = doorplateAddressService.list(wrapper);
               if (list.size() > 0) {
                  placeVO.setDoorplateAddressEntity(list.get(0));
               }
               // 查询网格数据
               placeVO.setGrid(gridService.getGridDetailByHouseCode(place.getHouseCode()));
            } else {
               // 通过定位点落面分析网格位置,反向推出社区派出所相关数据
            }
         }
      }
      // 返回
      return placeVO;
   }
   /**
    * 场所数据到导入
    * @param data
    * @param isCovered
    */
   @Override
   public void importPlace(List<PlaceExcel> data, Boolean isCovered) {
      for (PlaceExcel placeExcel : data) {
         // 判断是否存在,不存在则插入,否则不操作
         QueryWrapper<PlaceEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("is_deleted",0)
            .eq("house_code",placeExcel.getHouseCode());
         PlaceEntity one = getOne(wrapper);
         if (null == one){
            Long userId = updateUser(placeExcel);
            // 插入场所
            PlaceEntity placeEntity = new PlaceEntity();
            placeEntity.setHouseCode(placeExcel.getHouseCode());
            placeEntity.setPrincipalUserId(userId);
            placeEntity.setCreateTime(new Date());
            placeEntity.setCreateUser(AuthUtil.getUserId());
            placeEntity.setUpdateTime(new Date());
            placeEntity.setUpdateUser(AuthUtil.getUserId());
            //一个一个插入,防止同一个表中有相同的数据
            save(placeEntity);
         }
      }
   }
   /**
    * 更新用户信息
    * @param placeExcel
    * @return
    */
   public Long updateUser(PlaceExcel placeExcel) {
      if (!Strings.isBlank(placeExcel.getPhoneNumber()) &&
         !Strings.isBlank(placeExcel.getName())) {
         PlaceVO placeVO = new PlaceVO();
         placeVO.setPhone(placeExcel.getPhoneNumber());
         placeVO.setUsername(placeExcel.getName());
         // 更新场所负责人
         User user = bindUserHandle(placeVO);
         // 返回
         return user.getId();
      }
      return null;
   }
   /**
    * 更新用户信息
    * @param placeExcel
    * @return
    */
   public Long updateUser(PlaceAndRelExcel placeExcel) {
      if (!Strings.isBlank(placeExcel.getPhoneNumber()) &&
         !Strings.isBlank(placeExcel.getName())) {
         PlaceVO placeVO = new PlaceVO();
         placeVO.setPhone(placeExcel.getPhoneNumber());
         placeVO.setUsername(placeExcel.getName());
         // 更新场所负责人
         User user = bindUserHandle(placeVO);
         // 返回
         return user.getId();
      }
      return null;
   }
   /**
    * 场所(商超)导入
    * @param data
    * @param isCovered
    */
   @Override
   public void importAndRelPlace(List<PlaceAndRelExcel> data, Boolean isCovered) {
      for (PlaceAndRelExcel placeExcel : data) {
         // 判断是否存在,不存在则插入,否则不操作
         PlaceEntity one = baseMapper.getPlaceAndRelInfo(placeExcel);
         if (null == one){
            Long userId = updateUser(placeExcel);
            // 插入场所
            PlaceEntity placeEntity = new PlaceEntity();
            placeEntity.setPlaceName(placeExcel.getPlaceName());
            placeEntity.setLocaltion(placeExcel.getAddress());
            placeEntity.setPrincipalUserId(userId);
            placeEntity.setCreateTime(new Date());
            placeEntity.setCreateUser(AuthUtil.getUserId());
            placeEntity.setUpdateTime(new Date());
            placeEntity.setUpdateUser(AuthUtil.getUserId());
            //一个一个插入,防止同一个表中有相同的数据
            save(placeEntity);
            // 插入标签关系表
            savPlaceLabelBind(placeExcel,placeEntity);
            // 插入关联数据表
            PlaceRelEntity placeRelEntity = new PlaceRelEntity();
            placeRelEntity.setPlaceId(placeEntity.getId());
            placeRelEntity.setStreetName(placeExcel.getStreetName());
            placeRelEntity.setCommunityName(placeExcel.getCommunityName());
            placeRelEntity.setGridName(placeExcel.getGridName());
            placeRelEntity.setBuildingName(placeExcel.getBuildingName());
            placeRelEntity.setDoorplateNum(placeExcel.getDoorplateNum());
            placeRelEntity.setFloor(placeExcel.getFloor());
            placeRelEntity.setCreateTime(new Date());
            placeRelEntity.setCreateUser(AuthUtil.getUserId());
            placeRelEntity.setUpdateTime(new Date());
            placeRelEntity.setUpdateUser(AuthUtil.getUserId());
            // 新增
            placeRelService.save(placeRelEntity);
         }else {
            // 只更新商铺信息
            Long userId = updateUser(placeExcel);
            // 插入场所
            PlaceEntity placeEntity = new PlaceEntity();
            placeEntity.setId(one.getId());
            placeEntity.setPlaceName(placeExcel.getPlaceName());
            placeEntity.setLocaltion(placeExcel.getAddress());
            placeEntity.setPrincipalUserId(userId);
            placeEntity.setCreateTime(new Date());
            placeEntity.setCreateUser(AuthUtil.getUserId());
            placeEntity.setUpdateTime(new Date());
            placeEntity.setUpdateUser(AuthUtil.getUserId());
            //一个一个插入,防止同一个表中有相同的数据
            updateById(placeEntity);
         }
      }
   }
   /**
    * 插入标签关系表
    * @param placeExcel
    */
   public void savPlaceLabelBind(PlaceAndRelExcel placeExcel,PlaceEntity placeEntity) {
      if (!Strings.isBlank(placeExcel.getLabelCode())){
         PlaceVO placeVO = new PlaceVO();
         placeVO.setId(placeEntity.getId());
         placeVO.setLabel(placeExcel.getLabelCode());
         // 插入标签
         placeLabelBind(placeVO);
      }
   }
}