src/main/java/org/springblade/modules/house/excel/HouseAndHoldExcel.java
@@ -1,5 +1,6 @@ package org.springblade.modules.house.excel; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; @@ -28,8 +29,20 @@ private static final long serialVersionUID = 2L; /** 门牌地址编码 */ @ExcelProperty( "地址编码") @ExcelProperty( "门牌地址编码") private String houseCode; /** 街道名称 */ @ExcelProperty( "街道名称") private String streetName; /** 社区名称 */ @ExcelProperty( "社区名称") private String communityName; /** 所属网格 */ @ExcelProperty( "所属网格") private String gridName; /** 房屋名称 */ @ExcelProperty( "详细地址") @@ -78,6 +91,12 @@ @ExcelProperty( "姓名") private String name; /** 绑定用户--无用 */ @ColumnWidth(15) @ExcelProperty( "绑定用户") @ExcelIgnore private String bingUser; /** 手机号 */ @ColumnWidth(15) @ExcelProperty( "手机号") @@ -103,14 +122,35 @@ /** 居住状态 1: 是 0:否 */ @ColumnWidth(15) @ExcelProperty( value = "居住状态",converter = ExcelDictConverter.class) @ExcelDictItemLabel(type = "residentialStatusType") @ExcelProperty( "居住状态") @ExcelIgnore private String residentialStatus; /** 性别 */ @ColumnWidth(15) @ExcelProperty( value = "性别",converter = ExcelDictConverter.class) @ExcelDictItemLabel(type = "sex") private String gender; /** 身份证 */ @ColumnWidth(15) @ExcelProperty( "身份证") private String idCard; /*-----------用户标签-----------*/ // /** 退役军人 */ // @ColumnWidth(15) // @ExcelProperty( "退役军人") // private String exServiceman; /*-----------用户标签-----------*/ /** 是否党员 1:党员 2:群众 */ @ColumnWidth(15) @ExcelProperty( value = "党员(是/否)",converter = ExcelDictConverter.class) @ExcelDictItemLabel(type = "partyEmberType") private String partyEmber; /** 港澳台通行证 */ @ColumnWidth(15) @@ -161,26 +201,20 @@ @ExcelProperty( "车牌号") private String cardNumber; // /** 其他联系方式 */ // @ColumnWidth(15) // @ExcelProperty( "其他联系方式") // private String otherContact; /** 其他联系方式 */ @ColumnWidth(15) @ExcelProperty( "其他联系方式") private String otherContact; // // /** 现居住地址 */ // @ColumnWidth(15) // @ExcelProperty( "现居住地址") // private String currentAddress; // // /** 残疾证 */ // @ColumnWidth(15) // @ExcelProperty( "残疾证") // private String disabilityCert; // // /** 是否党员 1:党员 2:群众 */ // @ColumnWidth(15) // @ExcelProperty( value = "是否党员",converter = ExcelDictConverter.class) // @ExcelDictItemLabel(type = "partyEmberType") // private Integer partyEmber; /** 残疾证 */ @ColumnWidth(15) @ExcelProperty( "残疾证") private String disabilityCert; /** 备注 */ @ColumnWidth(15) src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
@@ -36,6 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; @@ -147,9 +148,10 @@ * @param isCovered */ @Override @Transactional(rollbackFor = Exception.class) public void importHouseAndHold(List<HouseAndHoldExcel> data, Boolean isCovered) { for (HouseAndHoldExcel houseAndHoldExcel : data) { System.out.println("houseAndHoldExcel = " + houseAndHoldExcel); // System.out.println("houseAndHoldExcel = " + houseAndHoldExcel); // 保存房屋数据--一个一个插入,防止一个表格中存在多个地址编号相同的数据 saveHouseData(houseAndHoldExcel); // 保存住户数据(包含标签)--一个一个插入,防止一个表格中存在多个地址编号相同的数据 @@ -162,7 +164,8 @@ * 保存房屋数据 * @param houseAndHoldExcel */ private void saveHouseholdData(HouseAndHoldExcel houseAndHoldExcel) { @Transactional(rollbackFor = Exception.class) public void saveHouseholdData(HouseAndHoldExcel houseAndHoldExcel) { // 查询库中是否已存在 QueryWrapper<HouseEntity> wrapper = new QueryWrapper<>(); wrapper.eq("house_code",houseAndHoldExcel.getHouseCode()) @@ -175,7 +178,9 @@ houseEntity.setHouseName(houseAndHoldExcel.getHouseName()); houseEntity.setDistrictName(houseAndHoldExcel.getDistrictName()); houseEntity.setUnit(houseAndHoldExcel.getUnit()); houseEntity.setFloor(houseAndHoldExcel.getFloor()); if (!Strings.isBlank(houseAndHoldExcel.getFloor())){ houseEntity.setFloor(houseAndHoldExcel.getFloor()); } houseEntity.setRoom(houseAndHoldExcel.getRoom()); houseEntity.setBuilding(houseAndHoldExcel.getBuilding()); houseEntity.setArea(houseAndHoldExcel.getArea()); @@ -195,7 +200,8 @@ * 保存住户数据 * @param houseAndHoldExcel */ private void saveHouseData(HouseAndHoldExcel houseAndHoldExcel) { @Transactional(rollbackFor = Exception.class) public void saveHouseData(HouseAndHoldExcel houseAndHoldExcel) { // 查询库中是否已存在 QueryWrapper<HouseholdEntity> wrapper = new QueryWrapper<>(); wrapper.eq("house_code",houseAndHoldExcel.getHouseCode()) @@ -217,10 +223,19 @@ if (!Strings.isBlank(houseAndHoldExcel.getIsPrimaryContact())){ householdEntity.setIsPrimaryContact(Integer.parseInt(houseAndHoldExcel.getIsPrimaryContact())); } // 居住状态 if (!Strings.isBlank(houseAndHoldExcel.getResidentialStatus())){ householdEntity.setResidentialStatus(Integer.parseInt(houseAndHoldExcel.getResidentialStatus())); } // 性别 if (!Strings.isBlank(houseAndHoldExcel.getGender())){ householdEntity.setGender(Short.parseShort(houseAndHoldExcel.getGender())); } householdEntity.setIdCard(houseAndHoldExcel.getIdCard()); // 党员 if (!Strings.isBlank(houseAndHoldExcel.getPartyEmber())){ householdEntity.setPartyEmber(Integer.parseInt(houseAndHoldExcel.getPartyEmber())); } householdEntity.setHkmtPass(houseAndHoldExcel.getHkmtPass()); householdEntity.setPassport(houseAndHoldExcel.getPassport()); if (!Strings.isBlank(houseAndHoldExcel.getEthnicity())){ @@ -238,6 +253,8 @@ householdEntity.setMaritalStatus(Integer.parseInt(houseAndHoldExcel.getMaritalStatus())); } householdEntity.setCardNumber(houseAndHoldExcel.getCardNumber()); householdEntity.setOtherContact(houseAndHoldExcel.getOtherContact()); householdEntity.setDisabilityCert(houseAndHoldExcel.getDisabilityCert()); householdEntity.setRemark(houseAndHoldExcel.getRemarks()); householdEntity.setCreateTime(new Date()); householdEntity.setCreateUser(AuthUtil.getUserId()); src/main/java/org/springblade/modules/place/controller/PlaceController.java
@@ -23,11 +23,18 @@ import lombok.AllArgsConstructor; import javax.validation.Valid; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.secure.BladeUser; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.house.excel.HouseAndHoldExcel; import org.springblade.modules.house.excel.HouseAndHoldImporter; import org.springblade.modules.place.excel.PlaceAndRelExcel; import org.springblade.modules.place.excel.PlaceAndRelImporter; import org.springblade.modules.place.excel.PlaceExcel; import org.springblade.modules.place.excel.PlaceImporter; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.place.entity.PlaceEntity; @@ -35,6 +42,7 @@ import org.springblade.modules.place.wrapper.PlaceWrapper; import org.springblade.modules.place.service.IPlaceService; import org.springblade.core.boot.ctrl.BladeController; import org.springframework.web.multipart.MultipartFile; /** * 场所表 控制器 @@ -158,4 +166,24 @@ return R.data(placeService.getDetail(place)); } /** * 导入场所数据 */ @PostMapping("/import-place") public R importPlace(MultipartFile file, Integer isCovered) { PlaceImporter placeImporter = new PlaceImporter(placeService, isCovered == 1); ExcelUtil.save(file, placeImporter, PlaceExcel.class); return R.success("操作成功"); } /** * 导入场所(商超)数据 */ @PostMapping("/import-placeAndRel") public R importPlaceAndRel(MultipartFile file, Integer isCovered) { PlaceAndRelImporter placeImporter = new PlaceAndRelImporter(placeService, isCovered == 1); ExcelUtil.save(file, placeImporter, PlaceAndRelExcel.class); return R.success("操作成功"); } } src/main/java/org/springblade/modules/place/controller/PlaceRelController.java
New file @@ -0,0 +1,126 @@ /* * 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.place.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import lombok.AllArgsConstructor; import javax.validation.Valid; import org.springblade.core.secure.BladeUser; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.modules.place.vo.PlaceRelVO; import org.springblade.modules.place.wrapper.PlaceRelWrapper; import org.springblade.modules.place.service.IPlaceRelService; import org.springblade.core.boot.ctrl.BladeController; /** * 场所区域关联信息表(商超) 控制器 * * @author BladeX * @since 2023-11-20 */ @RestController @AllArgsConstructor @RequestMapping("blade-placeRel/placeRel") @Api(value = "场所区域关联信息表(商超)", tags = "场所区域关联信息表(商超)接口") public class PlaceRelController { private final IPlaceRelService placeRelService; /** * 场所区域关联信息表(商超) 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入placeRel") public R<PlaceRelVO> detail(PlaceRelEntity placeRel) { PlaceRelEntity detail = placeRelService.getOne(Condition.getQueryWrapper(placeRel)); return R.data(PlaceRelWrapper.build().entityVO(detail)); } /** * 场所区域关联信息表(商超) 分页 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入placeRel") public R<IPage<PlaceRelVO>> list(PlaceRelEntity placeRel, Query query) { IPage<PlaceRelEntity> pages = placeRelService.page(Condition.getPage(query), Condition.getQueryWrapper(placeRel)); return R.data(PlaceRelWrapper.build().pageVO(pages)); } /** * 场所区域关联信息表(商超) 自定义分页 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入placeRel") public R<IPage<PlaceRelVO>> page(PlaceRelVO placeRel, Query query) { IPage<PlaceRelVO> pages = placeRelService.selectPlaceRelPage(Condition.getPage(query), placeRel); return R.data(pages); } /** * 场所区域关联信息表(商超) 新增 */ @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入placeRel") public R save(@Valid @RequestBody PlaceRelEntity placeRel) { return R.status(placeRelService.save(placeRel)); } /** * 场所区域关联信息表(商超) 修改 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入placeRel") public R update(@Valid @RequestBody PlaceRelEntity placeRel) { return R.status(placeRelService.updateById(placeRel)); } /** * 场所区域关联信息表(商超) 新增或修改 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入placeRel") public R submit(@Valid @RequestBody PlaceRelEntity placeRel) { return R.status(placeRelService.saveOrUpdate(placeRel)); } /** * 场所区域关联信息表(商超) 删除 */ @PostMapping("/remove") @ApiOperationSupport(order = 7) @ApiOperation(value = "逻辑删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(placeRelService.removeByIds(Func.toLongList(ids))); } } src/main/java/org/springblade/modules/place/dto/PlaceRelDTO.java
New file @@ -0,0 +1,34 @@ /* * 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.place.dto; import org.springblade.modules.place.entity.PlaceRelEntity; import lombok.Data; import lombok.EqualsAndHashCode; /** * 场所区域关联信息表(商超) 数据传输对象实体类 * * @author BladeX * @since 2023-11-20 */ @Data @EqualsAndHashCode(callSuper = true) public class PlaceRelDTO extends PlaceRelEntity { private static final long serialVersionUID = 1L; } src/main/java/org/springblade/modules/place/entity/PlaceRelEntity.java
New file @@ -0,0 +1,134 @@ /* * 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.place.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.util.Date; import lombok.EqualsAndHashCode; import org.springblade.core.tenant.mp.TenantEntity; import org.springframework.format.annotation.DateTimeFormat; /** * 场所区域关联信息表(商超) 实体类 * * @author BladeX * @since 2023-11-20 */ @Data @TableName("jczz_place_rel") @ApiModel(value = "PlaceRel对象", description = "场所区域关联信息表(商超)") public class PlaceRelEntity implements Serializable { private static final long serialVersionUID = 1L; /** * 主键 */ @JsonSerialize(using = ToStringSerializer.class) @ApiModelProperty("主键id") @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** * 场所id */ @ApiModelProperty(value = "场所id") private Long placeId; /** * 街道名称 */ @ApiModelProperty(value = "街道名称") private String streetName; /** * 社区名称 */ @ApiModelProperty(value = "社区名称") private String communityName; /** * 网格名称 */ @ApiModelProperty(value = "网格名称") private String gridName; /** * 写字楼名称 */ @ApiModelProperty(value = "写字楼名称") private String buildingName; /** * 门牌号 */ @ApiModelProperty(value = "门牌号") private String doorplateNum; /** * 楼层 */ @ApiModelProperty(value = "楼层") private String floor; /** * 创建人 */ @JsonSerialize(using = ToStringSerializer.class) @ApiModelProperty("创建人") private Long createUser; /** * 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("创建时间") private Date createTime; /** * 更新人 */ @JsonSerialize(using = ToStringSerializer.class) @ApiModelProperty("更新人") private Long updateUser; /** * 更新时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("更新时间") private Date updateTime; /** * 备注 */ @ApiModelProperty(value = "备注") private String remark; /** * 是否删除 */ @TableLogic @ApiModelProperty("是否已删除 0:否 1:是") private Integer isDeleted; } src/main/java/org/springblade/modules/place/excel/PlaceAndRelExcel.java
New file @@ -0,0 +1,81 @@ package org.springblade.modules.place.excel; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import lombok.Data; import java.io.Serializable; /** * HouseExcel * * @author Chill */ @Data @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) public class PlaceAndRelExcel implements Serializable { private static final long serialVersionUID = 2L; /** 序号 */ @ExcelProperty( "序号") private String idx; /** 街道名称 */ @ExcelProperty( "街道名称") private String streetName; /** 社区名称 */ @ExcelProperty( "社区名称") private String communityName; /** 所属网格 */ @ExcelProperty( "网格名称") private String gridName; /** 写字楼名称 */ @ExcelProperty( "写字楼名称") private String buildingName; /** 门牌号 */ @ExcelProperty( "门牌号") private String doorplateNum; /** 楼层 */ @ExcelProperty( "楼层") private String floor; /** 经营者 */ @ColumnWidth(15) @ExcelProperty( "经营者") private String name; /** 联系电话 */ @ColumnWidth(15) @ExcelProperty( "联系电话") private String phoneNumber; /** 企业(店铺)名称 */ @ColumnWidth(25) @ExcelProperty( "企业(店铺)名称") private String placeName; /** 经营地址 */ @ExcelProperty( "经营地址") private String address; /** 标签分类代码 */ @ExcelProperty( "标签分类代码") private String labelCode; /** 备注 */ @ExcelProperty( "备注") private String remark; } src/main/java/org/springblade/modules/place/excel/PlaceAndRelImporter.java
New file @@ -0,0 +1,24 @@ package org.springblade.modules.place.excel; import lombok.RequiredArgsConstructor; import org.springblade.core.excel.support.ExcelImporter; import org.springblade.modules.place.service.IPlaceService; import java.util.List; /** * 场所(商超)导入类 * * @author Chill */ @RequiredArgsConstructor public class PlaceAndRelImporter implements ExcelImporter<PlaceAndRelExcel> { private final IPlaceService placeService; private final Boolean isCovered; @Override public void save(List<PlaceAndRelExcel> data) { placeService.importAndRelPlace(data, isCovered); } } src/main/java/org/springblade/modules/place/excel/PlaceExcel.java
New file @@ -0,0 +1,55 @@ package org.springblade.modules.place.excel; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import lombok.Data; import java.io.Serializable; /** * HouseExcel * * @author Chill */ @Data @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) public class PlaceExcel implements Serializable { private static final long serialVersionUID = 2L; /** 门牌地址编码 */ @ExcelProperty( "门牌地址编码") private String houseCode; /** 街道名称 */ @ExcelProperty( "街道名称") private String streetName; /** 社区名称 */ @ExcelProperty( "社区名称") private String communityName; /** 所属网格 */ @ExcelProperty( "所属网格") private String gridName; /** 房屋名称 */ @ExcelProperty( "详细地址") private String houseName; /** 姓名 */ @ColumnWidth(15) @ExcelProperty( "姓名") private String name; /** 手机号 */ @ColumnWidth(15) @ExcelProperty( "手机号") private String phoneNumber; } src/main/java/org/springblade/modules/place/excel/PlaceImporter.java
New file @@ -0,0 +1,24 @@ package org.springblade.modules.place.excel; import lombok.RequiredArgsConstructor; import org.springblade.core.excel.support.ExcelImporter; import org.springblade.modules.place.service.IPlaceService; import java.util.List; /** * 场所导入类 * * @author Chill */ @RequiredArgsConstructor public class PlaceImporter implements ExcelImporter<PlaceExcel> { private final IPlaceService placeService; private final Boolean isCovered; @Override public void save(List<PlaceExcel> data) { placeService.importPlace(data, isCovered); } } src/main/java/org/springblade/modules/place/mapper/PlaceMapper.java
@@ -19,6 +19,7 @@ import org.apache.ibatis.annotations.Param; import org.springblade.common.node.TreeNode; import org.springblade.modules.place.entity.PlaceEntity; import org.springblade.modules.place.excel.PlaceAndRelExcel; import org.springblade.modules.place.vo.PlaceVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -82,4 +83,11 @@ * @return */ PlaceVO getDetail(@Param("place") PlaceEntity place); /** * 判断商超是否导入 * @param placeExcel * @return */ PlaceEntity getPlaceAndRelInfo(@Param("place") PlaceAndRelExcel placeExcel); } src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
@@ -87,8 +87,8 @@ <!--插入用户标签--> <insert id="saveUserLabel"> insert into jczz_user_label(user_id,label_id,create_time,update_time) values(#{userId},#{labelId},now(),now()) insert into jczz_user_house_label(user_id,label_id,lable_type) values(#{userId},#{labelId},1) </insert> <!--查询所有的场所(手机号不为空)--> @@ -126,4 +126,23 @@ and jp.id = #{place.id} </if> </select> <!--判断商超是否导入--> <select id="getPlaceAndRelInfo" resultType="org.springblade.modules.place.entity.PlaceEntity"> select jp.* from jczz_place jp left join jczz_place_rel jpr on jpr.place_id = jp.id and jpr.is_deleted = 0 where jp.is_deleted = 0 <if test="place.buildingName!=null and place.buildingName!=''"> and jpr.building_name = #{place.buildingName} </if> <if test="place.doorplateNum!=null and place.doorplateNum!=''"> and jpr.doorplate_num = #{place.doorplateNum} </if> <if test="place.placeName!=null and place.placeName!=''"> and jp.place_name = #{place.placeName} </if> limit 1 </select> </mapper> src/main/java/org/springblade/modules/place/mapper/PlaceRelMapper.java
New file @@ -0,0 +1,43 @@ /* * 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.place.mapper; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.modules.place.vo.PlaceRelVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; /** * 场所区域关联信息表(商超) Mapper 接口 * * @author BladeX * @since 2023-11-20 */ public interface PlaceRelMapper extends BaseMapper<PlaceRelEntity> { /** * 自定义分页 * * @param page * @param placeRel * @return */ List<PlaceRelVO> selectPlaceRelPage(IPage page, PlaceRelVO placeRel); } src/main/java/org/springblade/modules/place/mapper/PlaceRelMapper.xml
New file @@ -0,0 +1,29 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.springblade.modules.place.mapper.PlaceRelMapper"> <!-- 通用查询映射结果 --> <resultMap id="placeRelResultMap" type="org.springblade.modules.place.entity.PlaceRelEntity"> <result column="id" property="id"/> <result column="place_id" property="placeId"/> <result column="street_name" property="streetName"/> <result column="community_name" property="communityName"/> <result column="grid_name" property="gridName"/> <result column="building_name" property="buildingName"/> <result column="doorplate_num" property="doorplateNum"/> <result column="floor" property="floor"/> <result column="create_user" property="createUser"/> <result column="create_time" property="createTime"/> <result column="update_user" property="updateUser"/> <result column="update_time" property="updateTime"/> <result column="remark" property="remark"/> <result column="is_deleted" property="isDeleted"/> </resultMap> <select id="selectPlaceRelPage" resultMap="placeRelResultMap"> select * from jczz_place_rel where is_deleted = 0 </select> </mapper> src/main/java/org/springblade/modules/place/service/IPlaceRelService.java
New file @@ -0,0 +1,42 @@ /* * 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.place.service; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.modules.place.vo.PlaceRelVO; import com.baomidou.mybatisplus.core.metadata.IPage; /** * 场所区域关联信息表(商超) 服务类 * * @author BladeX * @since 2023-11-20 */ public interface IPlaceRelService extends IService<PlaceRelEntity> { /** * 自定义分页 * * @param page * @param placeRel * @return */ IPage<PlaceRelVO> selectPlaceRelPage(IPage<PlaceRelVO> page, PlaceRelVO placeRel); } src/main/java/org/springblade/modules/place/service/IPlaceService.java
@@ -19,6 +19,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.common.node.TreeNode; import org.springblade.modules.place.entity.PlaceEntity; import org.springblade.modules.place.excel.PlaceAndRelExcel; import org.springblade.modules.place.excel.PlaceExcel; import org.springblade.modules.place.vo.PlaceVO; import org.springblade.core.mp.base.BaseService; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -76,4 +78,18 @@ * @return */ PlaceVO getDetail(PlaceEntity place); /** * 场所数据到导入 * @param data * @param isCovered */ void importPlace(List<PlaceExcel> data, Boolean isCovered); /** * 场所(商超)导入 * @param data * @param isCovered */ void importAndRelPlace(List<PlaceAndRelExcel> data, Boolean isCovered); } src/main/java/org/springblade/modules/place/service/impl/PlaceRelServiceImpl.java
New file @@ -0,0 +1,43 @@ /* * 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.place.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.modules.place.vo.PlaceRelVO; import org.springblade.modules.place.mapper.PlaceRelMapper; import org.springblade.modules.place.service.IPlaceRelService; import org.springblade.core.mp.base.BaseServiceImpl; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; /** * 场所区域关联信息表(商超) 服务实现类 * * @author BladeX * @since 2023-11-20 */ @Service public class PlaceRelServiceImpl extends ServiceImpl<PlaceRelMapper, PlaceRelEntity> implements IPlaceRelService { @Override public IPage<PlaceRelVO> selectPlaceRelPage(IPage<PlaceRelVO> page, PlaceRelVO placeRel) { return page.setRecords(baseMapper.selectPlaceRelPage(page, placeRel)); } } src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
@@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.apache.logging.log4j.util.Strings; import org.springblade.common.node.TreeNode; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; @@ -28,8 +29,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; @@ -61,6 +66,9 @@ @Autowired private IPlaceExtService placeExtService; @Autowired private IPlaceRelService placeRelService; @Autowired private IDoorplateAddressService doorplateAddressService; @@ -154,6 +162,7 @@ if (user != null) { //如果用户存在,则该用户id绑定场所 placeVO.setPrincipalUserId(user.getId()); newUser = user; } else { //如果用户不存在,则新增一个用户 newUser.setAccount(placeVO.getPhone()); @@ -270,4 +279,144 @@ // 返回 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); } } } src/main/java/org/springblade/modules/place/vo/PlaceRelVO.java
New file @@ -0,0 +1,35 @@ /* * 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.place.vo; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.core.tool.node.INode; import lombok.Data; import lombok.EqualsAndHashCode; /** * 场所区域关联信息表(商超) 视图实体类 * * @author BladeX * @since 2023-11-20 */ @Data @EqualsAndHashCode(callSuper = true) public class PlaceRelVO extends PlaceRelEntity { private static final long serialVersionUID = 1L; } src/main/java/org/springblade/modules/place/wrapper/PlaceRelWrapper.java
New file @@ -0,0 +1,50 @@ /* * 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.place.wrapper; import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.modules.place.vo.PlaceRelVO; import java.util.Objects; /** * 场所区域关联信息表(商超) 包装类,返回视图层所需的字段 * * @author BladeX * @since 2023-11-20 */ public class PlaceRelWrapper extends BaseEntityWrapper<PlaceRelEntity, PlaceRelVO> { public static PlaceRelWrapper build() { return new PlaceRelWrapper(); } @Override public PlaceRelVO entityVO(PlaceRelEntity placeRel) { PlaceRelVO placeRelVO = Objects.requireNonNull(BeanUtil.copy(placeRel, PlaceRelVO.class)); //User createUser = UserCache.getUser(placeRel.getCreateUser()); //User updateUser = UserCache.getUser(placeRel.getUpdateUser()); //placeRelVO.setCreateUserName(createUser.getName()); //placeRelVO.setUpdateUserName(updateUser.getName()); return placeRelVO; } }