唐耀东
2022-10-12 d1bcbbefab4da603c275ed61d0018a46dbc67d1e
施工交付增加其他录入交付功能
8个文件已添加
546 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgOtherController.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgOther.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgOtherBo.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgOtherVo.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgOtherMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgOtherService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgOtherServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/resources/mapper/oa/SgOtherMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgOtherController.java
New file
@@ -0,0 +1,118 @@
package com.ruoyi.web.controller.oa;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.common.annotation.DataDictClass;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.SgOtherVo;
import com.ruoyi.oa.domain.bo.SgOtherBo;
import com.ruoyi.oa.service.ISgOtherService;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiOperation;
/**
 * 施工交付-其他Controller
 *
 * @author ruoyi
 * @date 2022-10-10
 */
@Validated
@Api(value = "施工交付-其他控制器", tags = {"施工交付-其他管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/oa/other")
public class SgOtherController extends BaseController {
    private final ISgOtherService iSgOtherService;
    /**
     * 查询施工交付-其他列表
     */
    @DataDictClass
    @ApiOperation("查询施工交付-其他列表")
//    @PreAuthorize("@ss.hasPermi('oa:other:list')")
    @GetMapping("/list")
    public TableDataInfo<SgOtherVo> list(@Validated(QueryGroup.class) SgOtherBo bo) {
        return iSgOtherService.queryPageList(bo);
    }
    /**
     * 导出施工交付-其他列表
     */
    @ApiOperation("导出施工交付-其他列表")
//    @PreAuthorize("@ss.hasPermi('oa:other:export')")
    @Log(title = "施工交付-其他", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public void export(@Validated SgOtherBo bo, HttpServletResponse response) {
        List<SgOtherVo> list = iSgOtherService.queryList(bo);
        ExcelUtil.exportExcel(list, "施工交付-其他", SgOtherVo.class, response);
    }
    /**
     * 获取施工交付-其他详细信息
     */
    @ApiOperation("获取施工交付-其他详细信息")
//    @PreAuthorize("@ss.hasPermi('oa:other:query')")
    @GetMapping("/{id}")
    public AjaxResult<SgOtherVo> getInfo(@ApiParam("主键")
                                                  @NotNull(message = "主键不能为空")
                                                  @PathVariable("id") Long id) {
        return AjaxResult.success(iSgOtherService.queryById(id));
    }
    /**
     * 新增施工交付-其他
     */
    @ApiOperation("新增施工交付-其他")
//    @PreAuthorize("@ss.hasPermi('oa:other:add')")
    @Log(title = "施工交付-其他", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody SgOtherBo bo) {
        return toAjax(iSgOtherService.insertByBo(bo) ? 1 : 0);
    }
    /**
     * 修改施工交付-其他
     */
    @ApiOperation("修改施工交付-其他")
//    @PreAuthorize("@ss.hasPermi('oa:other:edit')")
    @Log(title = "施工交付-其他", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody SgOtherBo bo) {
        return toAjax(iSgOtherService.updateByBo(bo) ? 1 : 0);
    }
    /**
     * 删除施工交付-其他
     */
    @ApiOperation("删除施工交付-其他")
//    @PreAuthorize("@ss.hasPermi('oa:other:remove')")
    @Log(title = "施工交付-其他" , businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult<Void> remove(@ApiParam("主键串")
                                       @NotEmpty(message = "主键不能为空")
                                       @PathVariable Long[] ids) {
        return toAjax(iSgOtherService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
    }
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgOther.java
New file
@@ -0,0 +1,61 @@
package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * 施工交付-其他对象 sg_other
 *
 * @author ruoyi
 * @date 2022-10-10
 */
@Data
@Accessors(chain = true)
@TableName("sg_other")
public class SgOther extends BaseEntity {
    private static final long serialVersionUID=1L;
    /**
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 高校ID
     */
    private Long schoolId;
    /**
     * 名称
     */
    private String name;
    /**
     * 部署位置
     */
    private Long buildingId;
    /**
     * 施工批次
     */
    private Long constructionBatchId;
    /**
     * 生产厂商
     */
    private Long manufacturerId;
    /**
     * 型号
     */
    private String model;
    /**
     *
     */
    @TableLogic
    private String delFlag;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgOtherBo.java
New file
@@ -0,0 +1,101 @@
package com.ruoyi.oa.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * 施工交付-其他业务对象 sg_other
 *
 * @author ruoyi
 * @date 2022-10-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("施工交付-其他业务对象")
public class SgOtherBo extends BaseEntity {
    /**
     *
     */
    @ApiModelProperty(value = "", required = true)
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * 高校ID
     */
    @ApiModelProperty(value = "高校ID", required = true)
    @NotNull(message = "高校ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long schoolId;
    /**
     * 名称
     */
    @ApiModelProperty(value = "名称", required = true)
    @NotBlank(message = "名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;
    /**
     * 部署位置
     */
    @ApiModelProperty(value = "部署位置", required = true)
    @NotNull(message = "部署位置不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long buildingId;
    /**
     * 施工批次
     */
    @ApiModelProperty(value = "施工批次", required = true)
    @NotNull(message = "施工批次不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long constructionBatchId;
    /**
     * 生产厂商
     */
    @ApiModelProperty(value = "生产厂商", required = true)
    @NotNull(message = "生产厂商不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long manufacturerId;
    /**
     * 型号
     */
    @ApiModelProperty(value = "型号", required = true)
    @NotBlank(message = "型号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String model;
    /**
     * 分页大小
     */
    @ApiModelProperty("分页大小")
    private Integer pageSize;
    /**
     * 当前页数
     */
    @ApiModelProperty("当前页数")
    private Integer pageNum;
    /**
     * 排序列
     */
    @ApiModelProperty("排序列")
    private String orderByColumn;
    /**
     * 排序的方向desc或者asc
     */
    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
    private String isAsc;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgOtherVo.java
New file
@@ -0,0 +1,81 @@
package com.ruoyi.oa.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.Dict;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * 施工交付-其他视图对象 sg_other
 *
 * @author ruoyi
 * @date 2022-10-10
 */
@Data
@ApiModel("施工交付-其他视图对象")
@ExcelIgnoreUnannotated
public class SgOtherVo {
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    @ApiModelProperty("")
    private Long id;
    /**
     * 高校ID
     */
    @ExcelProperty(value = "高校ID")
    @ApiModelProperty("高校ID")
    private Long schoolId;
    /**
     * 名称
     */
    @ExcelProperty(value = "名称")
    @ApiModelProperty("名称")
    private String name;
    /**
     * 部署位置
     */
    @ExcelProperty(value = "部署位置")
    @ApiModelProperty("部署位置")
    @Dict(dictTable = "bs_building", dicCode = "id", dicText = "detailed_name")
    private Long buildingId;
    /**
     * 施工批次
     */
    @ExcelProperty(value = "施工批次")
    @ApiModelProperty("施工批次")
    @Dict(dictTable = "sg_construction_batch", dicCode = "id", dicText = "batch")
    private Long constructionBatchId;
    /**
     * 生产厂商
     */
    @ExcelProperty(value = "生产厂商")
    @ApiModelProperty("生产厂商")
    @Dict(dictTable = "dev_manufacturer", dicCode = "id", dicText = "name")
    private Long manufacturerId;
    /**
     * 型号
     */
    @ExcelProperty(value = "型号")
    @ApiModelProperty("型号")
    private String model;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgOtherMapper.java
New file
@@ -0,0 +1,14 @@
package com.ruoyi.oa.mapper;
import com.ruoyi.oa.domain.SgOther;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
/**
 * 施工交付-其他Mapper接口
 *
 * @author ruoyi
 * @date 2022-10-10
 */
public interface SgOtherMapper extends BaseMapperPlus<SgOther> {
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgOtherService.java
New file
@@ -0,0 +1,56 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.SgOther;
import com.ruoyi.oa.domain.vo.SgOtherVo;
import com.ruoyi.oa.domain.bo.SgOtherBo;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import java.util.Collection;
import java.util.List;
/**
 * 施工交付-其他Service接口
 *
 * @author ruoyi
 * @date 2022-10-10
 */
public interface ISgOtherService extends IServicePlus<SgOther, SgOtherVo> {
    /**
     * 查询单个
     * @return
     */
    SgOtherVo queryById(Long id);
    /**
     * 查询列表
     */
    TableDataInfo<SgOtherVo> queryPageList(SgOtherBo bo);
    /**
     * 查询列表
     */
    List<SgOtherVo> queryList(SgOtherBo bo);
    /**
     * 根据新增业务对象插入施工交付-其他
     * @param bo 施工交付-其他新增业务对象
     * @return
     */
    Boolean insertByBo(SgOtherBo bo);
    /**
     * 根据编辑业务对象修改施工交付-其他
     * @param bo 施工交付-其他编辑业务对象
     * @return
     */
    Boolean updateByBo(SgOtherBo bo);
    /**
     * 校验并删除数据
     * @param ids 主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgOtherServiceImpl.java
New file
@@ -0,0 +1,92 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.bo.SgOtherBo;
import com.ruoyi.oa.domain.vo.SgOtherVo;
import com.ruoyi.oa.domain.SgOther;
import com.ruoyi.oa.mapper.SgOtherMapper;
import com.ruoyi.oa.service.ISgOtherService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * 施工交付-其他Service业务层处理
 *
 * @author ruoyi
 * @date 2022-10-10
 */
@Service
public class SgOtherServiceImpl extends ServicePlusImpl<SgOtherMapper, SgOther, SgOtherVo> implements ISgOtherService {
    @Override
    public SgOtherVo queryById(Long id){
        return getVoById(id);
    }
    @Override
    public TableDataInfo<SgOtherVo> queryPageList(SgOtherBo bo) {
        PagePlus<SgOther, SgOtherVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
        return PageUtils.buildDataInfo(result);
    }
    @Override
    public List<SgOtherVo> queryList(SgOtherBo bo) {
        return listVo(buildQueryWrapper(bo));
    }
    private LambdaQueryWrapper<SgOther> buildQueryWrapper(SgOtherBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<SgOther> lqw = Wrappers.lambdaQuery();
        lqw.like(StringUtils.isNotBlank(bo.getName()), SgOther::getName, bo.getName());
        lqw.eq(bo.getBuildingId() != null, SgOther::getBuildingId, bo.getBuildingId());
        lqw.eq(bo.getConstructionBatchId() != null, SgOther::getConstructionBatchId, bo.getConstructionBatchId());
        lqw.eq(bo.getManufacturerId() != null, SgOther::getManufacturerId, bo.getManufacturerId());
        lqw.eq(bo.getSchoolId() != null, SgOther::getSchoolId, bo.getSchoolId());
        return lqw;
    }
    @Override
    public Boolean insertByBo(SgOtherBo bo) {
        SgOther add = BeanUtil.toBean(bo, SgOther.class);
        validEntityBeforeSave(add);
        boolean flag = save(add);
        if (flag) {
            bo.setId(add.getId());
        }
        return flag;
    }
    @Override
    public Boolean updateByBo(SgOtherBo bo) {
        SgOther update = BeanUtil.toBean(bo, SgOther.class);
        validEntityBeforeSave(update);
        return updateById(update);
    }
    /**
     * 保存前的数据校验
     *
     * @param entity 实体类数据
     */
    private void validEntityBeforeSave(SgOther entity){
        //TODO 做一些数据校验,如唯一约束
    }
    @Override
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
        if(isValid){
            //TODO 做一些业务上的校验,判断是否需要校验
        }
        return removeByIds(ids);
    }
}
ruoyi-oa/src/main/resources/mapper/oa/SgOtherMapper.xml
New file
@@ -0,0 +1,23 @@
<?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="com.ruoyi.oa.mapper.SgOtherMapper">
    <resultMap type="com.ruoyi.oa.domain.SgOther" id="SgOtherResult">
        <result property="id" column="id"/>
        <result property="schoolId" column="school_id"/>
        <result property="name" column="name"/>
        <result property="buildingId" column="building_id"/>
        <result property="constructionBatchId" column="construction_batch_id"/>
        <result property="manufacturerId" column="manufacturer_id"/>
        <result property="model" column="model"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
    </resultMap>
</mapper>