src/main/java/org/springblade/modules/yw/controller/FacilityController.java
New file @@ -0,0 +1,125 @@ package org.springblade.modules.yw.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.excel.util.ExcelUtil; 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.yw.excel.EmergencySuppliesExcel; import org.springblade.modules.yw.excel.FacilityExcel; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.yw.entity.FacilityEntity; import org.springblade.modules.yw.vo.FacilityVO; import org.springblade.modules.yw.service.IFacilityService; import org.springframework.web.multipart.MultipartFile; import springfox.documentation.annotations.ApiIgnore; import java.util.Map; /** * 设施表 控制器 * * @author BladeX * @since 2024-11-13 */ @RestController @AllArgsConstructor @RequestMapping("yw/facility") @Api(value = "设施表", tags = "设施表接口") public class FacilityController { private final IFacilityService facilityService; /** * 设施表 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入facility") public R<FacilityEntity> detail(FacilityEntity facility) { FacilityEntity detail = facilityService.getOne(Condition.getQueryWrapper(facility)); return R.data(detail); } /** * 设施表 分页 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入facility") public R<IPage<FacilityEntity>> list(@ApiIgnore @RequestParam Map<String, Object> facility, Query query) { IPage<FacilityEntity> pages = facilityService.page(Condition.getPage(query), Condition.getQueryWrapper(facility, FacilityEntity.class)); return R.data(pages); } /** * 设施表 自定义分页 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入facility") public R<IPage<FacilityVO>> page(FacilityVO facility, Query query) { IPage<FacilityVO> pages = facilityService.selectFacilityPage(Condition.getPage(query), facility); return R.data(pages); } /** * 设施表 新增 */ @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入facility") public R save(@Valid @RequestBody FacilityEntity facility) { return R.status(facilityService.save(facility)); } /** * 设施表 修改 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入facility") public R update(@Valid @RequestBody FacilityEntity facility) { return R.status(facilityService.updateById(facility)); } /** * 设施表 新增或修改 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入facility") public R submit(@Valid @RequestBody FacilityEntity facility) { return R.status(facilityService.saveOrUpdate(facility)); } /** * 设施表 删除 */ @PostMapping("/remove") @ApiOperationSupport(order = 7) @ApiOperation(value = "逻辑删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(facilityService.removeByIds(Func.toLongList(ids))); } /** * 导入设施信息 * @param file * @param isCovered * @return */ @PostMapping("import-facility") @ApiOperationSupport(order = 8) @ApiOperation(value = "导入应急物资信息", notes = "传入excel") public R importFacility(MultipartFile file, Integer isCovered) { String data = facilityService.importFacility(ExcelUtil.read(file, FacilityExcel.class),isCovered == 1); return R.data(200, data, data); } } src/main/java/org/springblade/modules/yw/entity/FacilityEntity.java
New file @@ -0,0 +1,104 @@ package org.springblade.modules.yw.entity; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.util.Date; /** * 设施表 实体类 * * @author BladeX * @since 2024-11-13 */ @Data @TableName("yw_facility") @ApiModel(value = "Facility对象", description = "设施表") public class FacilityEntity implements Serializable { private static final long serialVersionUID = 1L; /** * 主键id */ @ApiModelProperty(value = "主键ID", example = "") @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 名称 */ @ApiModelProperty(value = "名称") private String name; /** * 经度 */ @ApiModelProperty(value = "经度") private String lng; /** * 纬度 */ @ApiModelProperty(value = "纬度") private String lat; /** * 防线级别 1:一道防线 2:二道防线 3:三道防线 */ @ApiModelProperty(value = "防线级别 1:一道防线 2:二道防线 3:三道防线") private Integer facLevel; /** * 描述 */ @ApiModelProperty(value = "描述") private String remark; /** * 所属企业id */ @ApiModelProperty(value = "所属企业id") private Long firmId; /** * 图片 */ @ApiModelProperty(value = "图片") private String imageUrl; /** * 创建人 */ @ApiModelProperty(value = "创建人", example = "") @TableField(value = "create_user", fill = FieldFill.INSERT) private Long createUser; /** * 创建时间 */ @ApiModelProperty(value = "创建时间", example = "") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField(value = "create_time", fill = FieldFill.INSERT) private Date createTime; /** * 更新人 */ @ApiModelProperty(value = "更新人", example = "") @TableField("update_user") private Long updateUser; /** * 更新人时间 */ @ApiModelProperty(value = "更新人时间", example = "") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField(value = "update_time", fill = FieldFill.INSERT) private Date updateTime; /** * 是否删除 0:否 1:是 */ @ApiModelProperty(value = "是否删除 0:否 1:是", example = "") @TableField("is_deleted") @TableLogic private Integer isDeleted; } src/main/java/org/springblade/modules/yw/excel/FacilityExcel.java
New file @@ -0,0 +1,62 @@ package org.springblade.modules.yw.excel; import lombok.Data; 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 org.springblade.common.excel.ExcelDictConverter; import org.springblade.common.excel.ExcelDictItemLabel; import java.io.Serializable; /** * 设施表 Excel实体类 * * @author BladeX * @since 2024-11-13 */ @Data @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) public class FacilityExcel implements Serializable { private static final long serialVersionUID = 1L; /** * 企业名称 */ @ColumnWidth(20) @ExcelProperty("企业名称") private String firmName; /** * 名称 */ @ColumnWidth(20) @ExcelProperty("名称") private String name; /** * 经度 */ @ColumnWidth(20) @ExcelProperty("经度") private String lng; /** * 纬度 */ @ColumnWidth(20) @ExcelProperty("纬度") private String lat; /** * 防线级别 1:一道防线 2:二道防线 3:三道防线 */ @ColumnWidth(20) @ExcelProperty(value = "防线级别",converter = ExcelDictConverter.class) @ExcelDictItemLabel(type = "fac_level") private String facLevel; } src/main/java/org/springblade/modules/yw/mapper/EmergencySpaceMapper.xml
@@ -21,6 +21,9 @@ <if test="emergencySpace.type!=null"> and yes.type = #{emergencySpace.type} </if> <if test="emergencySpace.preLevel!=null"> and yes.pre_level = #{emergencySpace.preLevel} </if> </select> <!--获取应急空间统计数据--> src/main/java/org/springblade/modules/yw/mapper/FacilityMapper.java
New file @@ -0,0 +1,26 @@ package org.springblade.modules.yw.mapper; import org.springblade.modules.yw.entity.FacilityEntity; import org.springblade.modules.yw.vo.FacilityVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; /** * 设施表 Mapper 接口 * * @author BladeX * @since 2024-11-13 */ public interface FacilityMapper extends BaseMapper<FacilityEntity> { /** * 自定义分页 * * @param page * @param facility * @return */ List<FacilityVO> selectFacilityPage(IPage page, FacilityVO facility); } src/main/java/org/springblade/modules/yw/mapper/FacilityMapper.xml
New file @@ -0,0 +1,28 @@ <?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.yw.mapper.FacilityMapper"> <!-- 通用查询映射结果 --> <resultMap id="facilityResultMap" type="org.springblade.modules.yw.entity.FacilityEntity"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="lng" property="lng"/> <result column="lat" property="lat"/> <result column="fac_level" property="facLevel"/> <result column="remark" property="remark"/> <result column="firm_id" property="firmId"/> <result column="image_url" property="imageUrl"/> <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="is_deleted" property="isDeleted"/> </resultMap> <!--自定义分页查询--> <select id="selectFacilityPage" resultMap="facilityResultMap"> select * from yw_facility where is_deleted = 0 </select> </mapper> src/main/java/org/springblade/modules/yw/service/IFacilityService.java
New file @@ -0,0 +1,34 @@ package org.springblade.modules.yw.service; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.modules.yw.entity.FacilityEntity; import org.springblade.modules.yw.excel.FacilityExcel; import org.springblade.modules.yw.vo.FacilityVO; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; /** * 设施表 服务类 * * @author BladeX * @since 2024-11-13 */ public interface IFacilityService extends IService<FacilityEntity> { /** * 自定义分页 * * @param page * @param facility * @return */ IPage<FacilityVO> selectFacilityPage(IPage<FacilityVO> page, FacilityVO facility); /** * 导入设施信息 * @param data * @param isCovered * @return */ String importFacility(List<FacilityExcel> data, boolean isCovered); } src/main/java/org/springblade/modules/yw/service/impl/FacilityServiceImpl.java
New file @@ -0,0 +1,106 @@ package org.springblade.modules.yw.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.logging.log4j.util.Strings; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.modules.yw.entity.FacilityEntity; import org.springblade.modules.yw.entity.FirmInfo; import org.springblade.modules.yw.excel.FacilityExcel; import org.springblade.modules.yw.service.IFirmInfoService; import org.springblade.modules.yw.vo.FacilityVO; import org.springblade.modules.yw.mapper.FacilityMapper; import org.springblade.modules.yw.service.IFacilityService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; import java.util.Objects; /** * 设施表 服务实现类 * * @author BladeX * @since 2024-11-13 */ @Service public class FacilityServiceImpl extends ServiceImpl<FacilityMapper, FacilityEntity> implements IFacilityService { @Autowired private IFirmInfoService firmInfoService; /** * 自定义分页查询 * @param page * @param facility * @return */ @Override public IPage<FacilityVO> selectFacilityPage(IPage<FacilityVO> page, FacilityVO facility) { return page.setRecords(baseMapper.selectFacilityPage(page, facility)); } /** * 导入设施信息 * @param data * @param isCovered * @return */ @Override public String importFacility(List<FacilityExcel> data, boolean isCovered) { for (FacilityExcel facilityExcel : data) { // 拷贝数据 FacilityEntity facilityEntity = Objects.requireNonNull(BeanUtil.copy(facilityExcel, FacilityEntity.class)); // 设置防线类型 if(!Strings.isBlank(facilityExcel.getFacLevel())){ facilityEntity.setFacLevel(Integer.parseInt(facilityExcel.getFacLevel())); } // 设置企业id setFirm(facilityExcel,facilityEntity); // 判断是否已保存 Long id = isSave(facilityEntity); // 覆盖更新 if (null!=id){ facilityEntity.setId(id); updateById(facilityEntity); continue; } // 保存 save(facilityEntity); } return null; } /** * 判断是否保存入库 * @param facilityEntity * @return */ private Long isSave(FacilityEntity facilityEntity) { QueryWrapper<FacilityEntity> wrapper = new QueryWrapper<>(); wrapper.eq("name",facilityEntity.getName()) .eq("firm_id",facilityEntity.getFirmId()) .eq("is_deleted",0); FacilityEntity one = getOne(wrapper); if (null!=one){ return one.getId(); } return null; } /** * 设置企业信息 * @param firmExcel * @param facilityEntity */ private void setFirm(FacilityExcel firmExcel,FacilityEntity facilityEntity) { QueryWrapper<FirmInfo> wrapper = new QueryWrapper<>(); wrapper.eq("name",firmExcel.getFirmName()) .eq("is_deleted",0); FirmInfo firmInfo = firmInfoService.getOne(wrapper); if (null!=firmInfo){ facilityEntity.setFirmId(firmInfo.getId()); } } } src/main/java/org/springblade/modules/yw/vo/FacilityVO.java
New file @@ -0,0 +1,16 @@ package org.springblade.modules.yw.vo; import org.springblade.modules.yw.entity.FacilityEntity; import lombok.Data; /** * 设施表 视图实体类 * * @author BladeX * @since 2024-11-13 */ @Data public class FacilityVO extends FacilityEntity { private static final long serialVersionUID = 1L; }