zhongrj
2024-11-13 288b3680bb69d0931fa7503b09b920832d73a1ac
新增设施接口
1 files modified
8 files added
504 ■■■■■ changed files
src/main/java/org/springblade/modules/yw/controller/FacilityController.java 125 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/yw/entity/FacilityEntity.java 104 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/yw/excel/FacilityExcel.java 62 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/yw/mapper/EmergencySpaceMapper.xml 3 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/yw/mapper/FacilityMapper.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/yw/mapper/FacilityMapper.xml 28 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/yw/service/IFacilityService.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/yw/service/impl/FacilityServiceImpl.java 106 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/yw/vo/FacilityVO.java 16 ●●●●● patch | view | raw | blame | history
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;
}