完成材料、供应商、材料台账增删改查接口

This commit is contained in:
lcj
2025-03-06 15:21:15 +08:00
parent b891b59cd7
commit c9b8d8734f
91 changed files with 2829 additions and 3305 deletions

View File

@ -0,0 +1,112 @@
package org.dromara.materials.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.materials.domain.req.company.CompanyCreateReq;
import org.dromara.materials.domain.req.company.CompanyQueryReq;
import org.dromara.materials.domain.req.company.CompanyUpdateReq;
import org.dromara.materials.domain.vo.BusCompanyVo;
import org.dromara.materials.service.IBusCompanyService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公司
*
* @author lcj
* @date 2025-03-06
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/materials/company")
public class BusCompanyController extends BaseController {
private final IBusCompanyService busCompanyService;
/**
* 查询公司列表
*/
@SaCheckPermission("materials:company:list")
@GetMapping("/list")
public Page<BusCompanyVo> list(CompanyQueryReq req) {
return busCompanyService.queryPageList(req);
}
/**
* 导出公司列表
*/
@SaCheckPermission("materials:company:export")
@Log(title = "公司", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(CompanyQueryReq req, HttpServletResponse response) {
List<BusCompanyVo> list = busCompanyService.queryList(req);
ExcelUtil.exportExcel(list, "公司", BusCompanyVo.class, response);
}
/**
* 获取公司详细信息
*
* @param id 主键
*/
@SaCheckPermission("materials:company:query")
@GetMapping("/{id}")
public R<BusCompanyVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busCompanyService.queryById(id));
}
/**
* 新增公司
*/
@SaCheckPermission("materials:company:add")
@Log(title = "公司", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Long> add(@Validated(AddGroup.class) @RequestBody CompanyCreateReq req) {
if (req == null) {
throw new ServiceException("参数不能为空", HttpStatus.BAD_REQUEST);
}
return R.ok(busCompanyService.insertByBo(req));
}
/**
* 修改公司
*/
@SaCheckPermission("materials:company:edit")
@Log(title = "公司", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody CompanyUpdateReq req) {
return toAjax(busCompanyService.updateByBo(req));
}
/**
* 删除公司
*
* @param ids 主键串
*/
@SaCheckPermission("materials:company:remove")
@Log(title = "公司", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busCompanyService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,107 @@
package org.dromara.materials.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.materials.domain.req.materials.MaterialsCreateReq;
import org.dromara.materials.domain.req.materials.MaterialsQueryReq;
import org.dromara.materials.domain.req.materials.MaterialsUpdateReq;
import org.dromara.materials.domain.vo.BusMaterialsVo;
import org.dromara.materials.service.IBusMaterialsService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 材料
*
* @author lcj
* @date 2025-03-06
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/materials/materials")
public class BusMaterialsController extends BaseController {
private final IBusMaterialsService busMaterialsService;
/**
* 查询材料列表
*/
@SaCheckPermission("materials:materials:list")
@GetMapping("/list")
public Page<BusMaterialsVo> list(MaterialsQueryReq req) {
return busMaterialsService.queryPageList(req);
}
/**
* 导出材料列表
*/
@SaCheckPermission("materials:materials:export")
@Log(title = "材料", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(MaterialsQueryReq req, HttpServletResponse response) {
List<BusMaterialsVo> list = busMaterialsService.queryList(req);
ExcelUtil.exportExcel(list, "材料名称", BusMaterialsVo.class, response);
}
/**
* 获取材料详细信息
*
* @param id 主键
*/
@SaCheckPermission("materials:materials:query")
@GetMapping("/{id}")
public R<BusMaterialsVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busMaterialsService.queryById(id));
}
/**
* 新增材料
*/
@SaCheckPermission("materials:materials:add")
@Log(title = "材料", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Long> add(@Validated(AddGroup.class) @RequestBody MaterialsCreateReq req) {
return R.ok(busMaterialsService.insertByBo(req));
}
/**
* 修改材料
*/
@SaCheckPermission("materials:materials:edit")
@Log(title = "材料", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody MaterialsUpdateReq req) {
return toAjax(busMaterialsService.updateByBo(req));
}
/**
* 删除材料
*
* @param ids 主键串
*/
@SaCheckPermission("materials:materials:remove")
@Log(title = "材料", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busMaterialsService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,107 @@
package org.dromara.materials.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryCreateReq;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryQueryReq;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryUpdateReq;
import org.dromara.materials.domain.vo.BusMaterialsInventoryVo;
import org.dromara.materials.service.IBusMaterialsInventoryService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 材料出/入库
*
* @author lcj
* @date 2025-03-06
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/materials/materialsInventory")
public class BusMaterialsInventoryController extends BaseController {
private final IBusMaterialsInventoryService busMaterialsInventoryService;
/**
* 查询材料出/入库列表
*/
@SaCheckPermission("materials:materialsInventory:list")
@GetMapping("/list")
public Page<BusMaterialsInventoryVo> list(MaterialsInventoryQueryReq req) {
return busMaterialsInventoryService.queryPageList(req);
}
/**
* 导出材料出/入库列表
*/
@SaCheckPermission("materials:materialsInventory:export")
@Log(title = "材料出/入库", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(MaterialsInventoryQueryReq req, HttpServletResponse response) {
List<BusMaterialsInventoryVo> list = busMaterialsInventoryService.queryList(req);
ExcelUtil.exportExcel(list, "材料出/入库", BusMaterialsInventoryVo.class, response);
}
/**
* 获取材料出/入库详细信息
*
* @param id 主键
*/
@SaCheckPermission("materials:materialsInventory:query")
@GetMapping("/{id}")
public R<BusMaterialsInventoryVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busMaterialsInventoryService.queryById(id));
}
/**
* 新增材料出/入库
*/
@SaCheckPermission("materials:materialsInventory:add")
@Log(title = "材料出/入库", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Long> add(@Validated(AddGroup.class) @RequestBody MaterialsInventoryCreateReq req) {
return R.ok(busMaterialsInventoryService.insertByBo(req));
}
/**
* 修改材料出/入库
*/
@SaCheckPermission("materials:materialsInventory:edit")
@Log(title = "材料出/入库", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody MaterialsInventoryUpdateReq req) {
return toAjax(busMaterialsInventoryService.updateByBo(req));
}
/**
* 删除材料出/入库
*
* @param ids 主键串
*/
@SaCheckPermission("materials:materialsInventory:remove")
@Log(title = "材料出/入库", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busMaterialsInventoryService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,69 @@
package org.dromara.materials.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 公司对象 bus_company
*
* @author lcj
* @date 2025-03-06
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_company")
public class BusCompany extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 公司名称
*/
private String companyName;
/**
* 项目id
*/
private Long projectId;
/**
* 帐号状态0正常 1停用
*/
private String status;
/**
* 备注
*/
private String remark;
/**
* 资质情况
*/
private String qualification;
/**
* 删除时间
*/
private Date deletedAt;
/**
* 是否删除0正常 1删除
*/
@TableLogic
private Long isDelete;
}

View File

@ -0,0 +1,134 @@
package org.dromara.materials.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 材料名称对象 bus_materials
*
* @author lcj
* @date 2025-03-06
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_materials")
public class BusMaterials extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 材料名称
*/
private String materialsName;
/**
* 公司id
*/
private Long companyId;
/**
* 项目id
*/
private Long projectId;
/**
* 规格型号名称
*/
private String typeSpecificationName;
/**
* 规格型号文件路径
*/
private String typeSpecificationUrl;
/**
* 合格证编号名称
*/
private String certificateConformityName;
/**
* 合格证编号文件路径
*/
private String certificateConformityUrl;
/**
* 质量说明书编号
*/
private String qualityName;
/**
* 质量说明书文件路径
*/
private String qualityUrl;
/**
* 检验报告编号
*/
private String inspectionReportName;
/**
* 检验报告文件路径
*/
private String inspectionReportUrl;
/**
* 复试报告编号
*/
private String reexamineReportName;
/**
* 复试报告文件路径
*/
private String reexamineReportUrl;
/**
* 使用部位
*/
private String usePart;
/**
* 计量单位
*/
private String weightId;
/**
* 备注
*/
private String remark;
/**
* 预计材料数量
*/
private String quantityCount;
/**
* 状态0正常 1停用
*/
private String status;
/**
* 删除时间
*/
private Date deletedAt;
/**
* 是否删除0正常 1删除
*/
@TableLogic
private Long isDelete;
}

View File

@ -0,0 +1,104 @@
package org.dromara.materials.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 材料出/入库对象 bus_materials_inventory
*
* @author lcj
* @date 2025-03-06
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_materials_inventory")
public class BusMaterialsInventory extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 材料id
*/
private Long materialsId;
/**
* 项目id
*/
private Long projectId;
/**
* 出入库状态
*/
private String outPut;
/**
* 出/入库的数量
*/
private Long number;
/**
* 出/入库操作时间
*/
private Date outPutTime;
/**
* 剩余库存数量(记录最后一次操作留下的库存数)
*/
private Long residue;
/**
* 操作人(入库人、领料人)
*/
private String operator;
/**
* 材料出入证明
*/
private String path;
/**
* 处理方式
*/
private String disposition;
/**
* 交接单位(班组)
*/
private String recipient;
/**
* 领用人
*/
private String shipper;
/**
* 备注
*/
private String remark;
/**
* 删除时间
*/
private Date deletedAt;
/**
* 是否删除0正常 1删除
*/
@TableLogic
private Long isDelete;
}

View File

@ -0,0 +1,38 @@
package org.dromara.materials.domain.req.company;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lilemy
* @date 2025/3/5 14:05
*/
@Data
public class CompanyCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7603153089205421154L;
/**
* 公司名称
*/
private String companyName;
/**
* 项目id
*/
private Long projectId;
/**
* 备注
*/
private String remark;
/**
* 资质情况
*/
private String qualification;
}

View File

@ -0,0 +1,51 @@
package org.dromara.materials.domain.req.company;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.common.PageRequest;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lilemy
* @date 2025/3/5 14:31
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CompanyQueryReq extends PageRequest implements Serializable {
@Serial
private static final long serialVersionUID = 5563677643070664671L;
/**
* 主键id
*/
private Long id;
/**
* 公司名称
*/
private String companyName;
/**
* 项目id
*/
private Long projectId;
/**
* 帐号状态0正常 1停用
*/
private String status;
/**
* 备注
*/
private String remark;
/**
* 资质情况
*/
private String qualification;
}

View File

@ -0,0 +1,48 @@
package org.dromara.materials.domain.req.company;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lilemy
* @date 2025/3/5 15:04
*/
@Data
public class CompanyUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = 3431952359907567659L;
/**
* 主键id
*/
private Long id;
/**
* 公司名称
*/
private String companyName;
/**
* 项目id
*/
private Long projectId;
/**
* 帐号状态0正常 1停用
*/
private String status;
/**
* 备注
*/
private String remark;
/**
* 资质情况
*/
private String qualification;
}

View File

@ -0,0 +1,103 @@
package org.dromara.materials.domain.req.materials;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lilemy
* @date 2025/3/5 14:05
*/
@Data
public class MaterialsCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7603153089205421154L;
/**
* 材料名称
*/
private String materialsName;
/**
* 公司id
*/
private Long companyId;
/**
* 项目id
*/
private Long projectId;
/**
* 规格型号名称
*/
private String typeSpecificationName;
/**
* 规格型号文件路径
*/
private String typeSpecificationUrl;
/**
* 合格证编号名称
*/
private String certificateConformityName;
/**
* 合格证编号文件路径
*/
private String certificateConformityUrl;
/**
* 质量说明书编号
*/
private String qualityName;
/**
* 质量说明书文件路径
*/
private String qualityUrl;
/**
* 检验报告编号
*/
private String inspectionReportName;
/**
* 检验报告文件路径
*/
private String inspectionReportUrl;
/**
* 复试报告编号
*/
private String reexamineReportName;
/**
* 复试报告文件路径
*/
private String reexamineReportUrl;
/**
* 使用部位
*/
private String usePart;
/**
* 计量单位
*/
private String weightId;
/**
* 备注
*/
private String remark;
/**
* 预计材料数量
*/
private String quantityCount;
}

View File

@ -0,0 +1,66 @@
package org.dromara.materials.domain.req.materials;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.common.PageRequest;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lilemy
* @date 2025/3/5 14:31
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class MaterialsQueryReq extends PageRequest implements Serializable {
@Serial
private static final long serialVersionUID = 5563677643070664671L;
/**
* 主键id
*/
private Long id;
/**
* 材料名称
*/
private String materialsName;
/**
* 公司id
*/
private Long companyId;
/**
* 项目id
*/
private Long projectId;
/**
* 使用部位
*/
private String usePart;
/**
* 计量单位
*/
private String weightId;
/**
* 备注
*/
private String remark;
/**
* 预计材料数量
*/
private String quantityCount;
/**
* 状态0正常 1停用
*/
private String status;
}

View File

@ -0,0 +1,113 @@
package org.dromara.materials.domain.req.materials;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lilemy
* @date 2025/3/5 15:04
*/
@Data
public class MaterialsUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = 3431952359907567659L;
/**
* 主键id
*/
private Long id;
/**
* 材料名称
*/
private String materialsName;
/**
* 公司id
*/
private Long companyId;
/**
* 项目id
*/
private Long projectId;
/**
* 规格型号名称
*/
private String typeSpecificationName;
/**
* 规格型号文件路径
*/
private String typeSpecificationUrl;
/**
* 合格证编号名称
*/
private String certificateConformityName;
/**
* 合格证编号文件路径
*/
private String certificateConformityUrl;
/**
* 质量说明书编号
*/
private String qualityName;
/**
* 质量说明书文件路径
*/
private String qualityUrl;
/**
* 检验报告编号
*/
private String inspectionReportName;
/**
* 检验报告文件路径
*/
private String inspectionReportUrl;
/**
* 复试报告编号
*/
private String reexamineReportName;
/**
* 复试报告文件路径
*/
private String reexamineReportUrl;
/**
* 使用部位
*/
private String usePart;
/**
* 计量单位
*/
private String weightId;
/**
* 备注
*/
private String remark;
/**
* 预计材料数量
*/
private String quantityCount;
/**
* 状态0正常 1停用
*/
private String status;
}

View File

@ -0,0 +1,74 @@
package org.dromara.materials.domain.req.materialsinventory;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* @author lilemy
* @date 2025/3/5 14:05
*/
@Data
public class MaterialsInventoryCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7603153089205421154L;
/**
* 材料id
*/
private Long materialsId;
/**
* 项目id
*/
private Long projectId;
/**
* 出入库状态
*/
private String outPut;
/**
* 出/入库的数量
*/
private Long number;
/**
* 出/入库操作时间
*/
private Date outPutTime;
/**
* 剩余库存数量(记录最后一次操作留下的库存数)
*/
private Long residue;
/**
* 材料出入证明
*/
private String path;
/**
* 处理方式
*/
private String disposition;
/**
* 交接单位(班组)
*/
private String recipient;
/**
* 领用人
*/
private String shipper;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,82 @@
package org.dromara.materials.domain.req.materialsinventory;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.common.PageRequest;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* @author lilemy
* @date 2025/3/5 14:31
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class MaterialsInventoryQueryReq extends PageRequest implements Serializable {
@Serial
private static final long serialVersionUID = 5563677643070664671L;
/**
* 主键id
*/
private Long id;
/**
* 材料id
*/
private Long materialsId;
/**
* 项目id
*/
private Long projectId;
/**
* 出入库状态
*/
private String outPut;
/**
* 出/入库的数量
*/
private Long number;
/**
* 出/入库操作时间
*/
private Date outPutTime;
/**
* 剩余库存数量(记录最后一次操作留下的库存数)
*/
private Long residue;
/**
* 操作人(入库人、领料人)
*/
private String operator;
/**
* 处理方式
*/
private String disposition;
/**
* 交接单位(班组)
*/
private String recipient;
/**
* 领用人
*/
private String shipper;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,79 @@
package org.dromara.materials.domain.req.materialsinventory;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* @author lilemy
* @date 2025/3/5 15:04
*/
@Data
public class MaterialsInventoryUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = 3431952359907567659L;
/**
* 主键id
*/
private Long id;
/**
* 材料id
*/
private Long materialsId;
/**
* 项目id
*/
private Long projectId;
/**
* 出入库状态
*/
private String outPut;
/**
* 出/入库的数量
*/
private Long number;
/**
* 出/入库操作时间
*/
private Date outPutTime;
/**
* 剩余库存数量(记录最后一次操作留下的库存数)
*/
private Long residue;
/**
* 材料出入证明
*/
private String path;
/**
* 处理方式
*/
private String disposition;
/**
* 交接单位(班组)
*/
private String recipient;
/**
* 领用人
*/
private String shipper;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,71 @@
package org.dromara.materials.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.materials.domain.BusCompany;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 公司视图对象 bus_company
*
* @author lcj
* @date 2025-03-06
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusCompany.class)
public class BusCompanyVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 公司名称
*/
@ExcelProperty(value = "公司名称")
private String companyName;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private Long projectId;
/**
* 帐号状态0正常 1停用
*/
@ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
private String status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 资质情况
*/
@ExcelProperty(value = "资质情况")
private String qualification;
}

View File

@ -0,0 +1,115 @@
package org.dromara.materials.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.materials.domain.BusMaterialsInventory;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 材料出/入库视图对象 bus_materials_inventory
*
* @author lcj
* @date 2025-03-06
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusMaterialsInventory.class)
public class BusMaterialsInventoryVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 材料id
*/
@ExcelProperty(value = "材料id")
private Long materialsId;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private Long projectId;
/**
* 出入库状态
*/
@ExcelProperty(value = "出入库状态")
private String outPut;
/**
* 出/入库的数量
*/
@ExcelProperty(value = "出/入库的数量")
private Long number;
/**
* 出/入库操作时间
*/
@ExcelProperty(value = "出/入库操作时间")
private Date outPutTime;
/**
* 剩余库存数量(记录最后一次操作留下的库存数)
*/
@ExcelProperty(value = "剩余库存数量", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "记=录最后一次操作留下的库存数")
private Long residue;
/**
* 操作人(入库人、领料人)
*/
@ExcelProperty(value = "操作人", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "入=库人、领料人")
private String operator;
/**
* 材料出入证明
*/
@ExcelProperty(value = "材料出入证明")
private String path;
/**
* 处理方式
*/
@ExcelProperty(value = "处理方式")
private String disposition;
/**
* 交接单位(班组)
*/
@ExcelProperty(value = "交接单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "班=组")
private String recipient;
/**
* 领用人
*/
@ExcelProperty(value = "领用人")
private String shipper;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,151 @@
package org.dromara.materials.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.materials.domain.BusMaterials;
import java.io.Serial;
import java.io.Serializable;
/**
* 材料名称视图对象 bus_materials
*
* @author lcj
* @date 2025-03-06
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusMaterials.class)
public class BusMaterialsVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 材料名称
*/
@ExcelProperty(value = "材料名称")
private String materialsName;
/**
* 公司id
*/
@ExcelProperty(value = "公司id")
private Long companyId;
/**
* 公司信息
*/
@ExcelProperty(value = "公司信息")
private BusCompanyVo companyVo;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private Long projectId;
/**
* 规格型号名称
*/
@ExcelProperty(value = "规格型号名称")
private String typeSpecificationName;
/**
* 规格型号文件路径
*/
@ExcelProperty(value = "规格型号文件路径")
private String typeSpecificationUrl;
/**
* 合格证编号名称
*/
@ExcelProperty(value = "合格证编号名称")
private String certificateConformityName;
/**
* 合格证编号文件路径
*/
@ExcelProperty(value = "合格证编号文件路径")
private String certificateConformityUrl;
/**
* 质量说明书编号
*/
@ExcelProperty(value = "质量说明书编号")
private String qualityName;
/**
* 质量说明书文件路径
*/
@ExcelProperty(value = "质量说明书文件路径")
private String qualityUrl;
/**
* 检验报告编号
*/
@ExcelProperty(value = "检验报告编号")
private String inspectionReportName;
/**
* 检验报告文件路径
*/
@ExcelProperty(value = "检验报告文件路径")
private String inspectionReportUrl;
/**
* 复试报告编号
*/
@ExcelProperty(value = "复试报告编号")
private String reexamineReportName;
/**
* 复试报告文件路径
*/
@ExcelProperty(value = "复试报告文件路径")
private String reexamineReportUrl;
/**
* 使用部位
*/
@ExcelProperty(value = "使用部位")
private String usePart;
/**
* 计量单位
*/
@ExcelProperty(value = "计量单位")
private String weightId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 预计材料数量
*/
@ExcelProperty(value = "预计材料数量")
private String quantityCount;
/**
* 状态0正常 1停用
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
private String status;
}

View File

@ -0,0 +1,15 @@
package org.dromara.materials.mapper;
import org.dromara.materials.domain.BusCompany;
import org.dromara.materials.domain.vo.BusCompanyVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 公司Mapper接口
*
* @author lcj
* @date 2025-03-06
*/
public interface BusCompanyMapper extends BaseMapperPlus<BusCompany, BusCompanyVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.materials.mapper;
import org.dromara.materials.domain.BusMaterialsInventory;
import org.dromara.materials.domain.vo.BusMaterialsInventoryVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 材料出/入库Mapper接口
*
* @author lcj
* @date 2025-03-06
*/
public interface BusMaterialsInventoryMapper extends BaseMapperPlus<BusMaterialsInventory, BusMaterialsInventoryVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.materials.mapper;
import org.dromara.materials.domain.BusMaterials;
import org.dromara.materials.domain.vo.BusMaterialsVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 材料名称Mapper接口
*
* @author lcj
* @date 2025-03-06
*/
public interface BusMaterialsMapper extends BaseMapperPlus<BusMaterials, BusMaterialsVo> {
}

View File

@ -0,0 +1,87 @@
package org.dromara.materials.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.materials.domain.BusCompany;
import org.dromara.materials.domain.req.company.CompanyCreateReq;
import org.dromara.materials.domain.req.company.CompanyQueryReq;
import org.dromara.materials.domain.req.company.CompanyUpdateReq;
import org.dromara.materials.domain.vo.BusCompanyVo;
import java.util.Collection;
import java.util.List;
/**
* 公司Service接口
*
* @author lcj
* @date 2025-03-06
*/
public interface IBusCompanyService extends IService<BusCompany> {
/**
* 查询公司
*
* @param id 主键
* @return 公司
*/
BusCompanyVo queryById(Long id);
/**
* 分页查询公司列表
*
* @param req 查询条件
* @return 公司分页列表
*/
Page<BusCompanyVo> queryPageList(CompanyQueryReq req);
/**
* 查询符合条件的公司列表
*
* @param req 查询条件
* @return 公司列表
*/
List<BusCompanyVo> queryList(CompanyQueryReq req);
/**
* 新增公司
*
* @param req 公司
* @return 新增公司id
*/
Long insertByBo(CompanyCreateReq req);
/**
* 修改公司
*
* @param req 公司
* @return 是否修改成功
*/
Boolean updateByBo(CompanyUpdateReq req);
/**
* 校验并批量删除公司信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 构建查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
QueryWrapper<BusCompany> getQueryWrapper(CompanyQueryReq req);
/**
* 获取公司分页对象视图
*
* @param companyPage 公司分页对象
* @return 公司分页对象视图
*/
Page<BusCompanyVo> getCompanyVoPage(Page<BusCompany> companyPage);
}

View File

@ -0,0 +1,88 @@
package org.dromara.materials.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.materials.domain.BusMaterialsInventory;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryCreateReq;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryQueryReq;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryUpdateReq;
import org.dromara.materials.domain.vo.BusMaterialsInventoryVo;
import java.util.Collection;
import java.util.List;
/**
* 材料出/入库Service接口
*
* @author lcj
* @date 2025-03-06
*/
public interface IBusMaterialsInventoryService extends IService<BusMaterialsInventory> {
/**
* 查询材料出/入库
*
* @param id 主键
* @return 材料出/入库
*/
BusMaterialsInventoryVo queryById(Long id);
/**
* 分页查询材料出/入库列表
*
* @param req 查询条件
* @return 材料出/入库分页列表
*/
Page<BusMaterialsInventoryVo> queryPageList(MaterialsInventoryQueryReq req);
/**
* 查询符合条件的材料出/入库列表
*
* @param req 查询条件
* @return 材料出/入库列表
*/
List<BusMaterialsInventoryVo> queryList(MaterialsInventoryQueryReq req);
/**
* 新增材料出/入库
*
* @param req 材料出/入库
* @return 是否新增成功
*/
Long insertByBo(MaterialsInventoryCreateReq req);
/**
* 修改材料出/入库
*
* @param req 材料出/入库
* @return 是否修改成功
*/
Boolean updateByBo(MaterialsInventoryUpdateReq req);
/**
* 校验并批量删除材料出/入库信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 构建查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
QueryWrapper<BusMaterialsInventory> getQueryWrapper(MaterialsInventoryQueryReq req);
/**
* 获取材料出/入库分页对象视图
*
* @param materialsInventoryPage 材料出/入库分页对象
* @return 材料出/入库分页对象视图
*/
Page<BusMaterialsInventoryVo> getMaterialsInventoryVoPage(Page<BusMaterialsInventory> materialsInventoryPage);
}

View File

@ -0,0 +1,95 @@
package org.dromara.materials.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.materials.domain.BusMaterials;
import org.dromara.materials.domain.req.materials.MaterialsCreateReq;
import org.dromara.materials.domain.req.materials.MaterialsQueryReq;
import org.dromara.materials.domain.req.materials.MaterialsUpdateReq;
import org.dromara.materials.domain.vo.BusMaterialsVo;
import java.util.Collection;
import java.util.List;
/**
* 材料名称Service接口
*
* @author lcj
* @date 2025-03-06
*/
public interface IBusMaterialsService extends IService<BusMaterials> {
/**
* 查询材料名称
*
* @param id 主键
* @return 材料名称
*/
BusMaterialsVo queryById(Long id);
/**
* 分页查询材料名称列表
*
* @param req 查询条件
* @return 材料名称分页列表
*/
Page<BusMaterialsVo> queryPageList(MaterialsQueryReq req);
/**
* 查询符合条件的材料名称列表
*
* @param req 查询条件
* @return 材料名称列表
*/
List<BusMaterialsVo> queryList(MaterialsQueryReq req);
/**
* 新增材料名称
*
* @param req 材料名称
* @return 是否新增成功
*/
Long insertByBo(MaterialsCreateReq req);
/**
* 修改材料名称
*
* @param req 材料名称
* @return 是否修改成功
*/
Boolean updateByBo(MaterialsUpdateReq req);
/**
* 校验并批量删除材料名称信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取材料视图
*
* @param Materials 材料
* @return 材料视图
*/
BusMaterialsVo getBusMaterialsVo(BusMaterials Materials);
/**
* 构建查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
QueryWrapper<BusMaterials> getQueryWrapper(MaterialsQueryReq req);
/**
* 获取材料分页对象视图
*
* @param materialsPage 材料分页对象
* @return 材料分页对象视图
*/
Page<BusMaterialsVo> getMaterialsVoPage(Page<BusMaterials> materialsPage);
}

View File

@ -0,0 +1,211 @@
package org.dromara.materials.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.dromara.common.core.constant.CommonConstant;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.materials.domain.BusCompany;
import org.dromara.materials.domain.req.company.CompanyCreateReq;
import org.dromara.materials.domain.req.company.CompanyQueryReq;
import org.dromara.materials.domain.req.company.CompanyUpdateReq;
import org.dromara.materials.domain.vo.BusCompanyVo;
import org.dromara.materials.mapper.BusCompanyMapper;
import org.dromara.materials.service.IBusCompanyService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
/**
* 公司Service业务层处理
*
* @author lcj
* @date 2025-03-06
*/
@Service
public class BusCompanyServiceImpl extends ServiceImpl<BusCompanyMapper, BusCompany>
implements IBusCompanyService {
@Resource
private BusCompanyMapper baseMapper;
/**
* 查询公司
*
* @param id 主键
* @return 公司
*/
@Override
public BusCompanyVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询公司列表
*
* @param req 查询条件
* @return 公司分页列表
*/
@Override
public Page<BusCompanyVo> queryPageList(CompanyQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
// 查询数据库
Page<BusCompany> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getCompanyVoPage(result);
}
/**
* 查询符合条件的公司列表
*
* @param req 查询条件
* @return 公司列表
*/
@Override
public List<BusCompanyVo> queryList(CompanyQueryReq req) {
QueryWrapper<BusCompany> queryWrapper = this.getQueryWrapper(req);
return baseMapper.selectVoList(queryWrapper);
}
/**
* 新增公司
*
* @param req 公司
* @return 新增公司id
*/
@Override
public Long insertByBo(CompanyCreateReq req) {
// 将实体类和 DTO 进行转换
BusCompany company = new BusCompany();
BeanUtils.copyProperties(req, company);
// 数据校验
validEntityBeforeSave(company);
// 写入数据库
boolean save = this.save(company);
if (!save) {
throw new ServiceException("新增公司失败,数据库异常", HttpStatus.ERROR);
}
return company.getId();
}
/**
* 修改公司
*
* @param req 公司
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(CompanyUpdateReq req) {
// 将实体类和 DTO 进行转换
BusCompany company = new BusCompany();
BeanUtils.copyProperties(req, company);
// 数据校验
validEntityBeforeSave(company);
// 判断是否存在
BusCompany oldCompany = this.getById(company.getId());
if (oldCompany == null) {
throw new ServiceException("修改公司失败,数据不存在", HttpStatus.NOT_FOUND);
}
// 操作数据库
return this.updateById(company);
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusCompany entity) {
// TODO 做一些数据校验,如唯一约束
String companyName = entity.getCompanyName();
Long projectId = entity.getProjectId();
if (StringUtils.isBlank(companyName)) {
throw new ServiceException("公司名称不能为空", HttpStatus.BAD_REQUEST);
}
if (projectId == null) {
throw new ServiceException("项目 id 不能为空", HttpStatus.BAD_REQUEST);
}
}
/**
* 校验并批量删除公司信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 构建查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
@Override
public QueryWrapper<BusCompany> getQueryWrapper(CompanyQueryReq req) {
QueryWrapper<BusCompany> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
String companyName = req.getCompanyName();
Long projectId = req.getProjectId();
String status = req.getStatus();
String remark = req.getRemark();
String qualification = req.getQualification();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 模糊查询
queryWrapper.like(StringUtils.isNotBlank(companyName), "company_name", companyName);
queryWrapper.like(StringUtils.isNotBlank(qualification), "qualification", qualification);
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(status), "status", status);
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
}
/**
* 获取公司分页对象视图
*
* @param companyPage 公司分页对象
* @return 公司分页对象视图
*/
@Override
public Page<BusCompanyVo> getCompanyVoPage(Page<BusCompany> companyPage) {
List<BusCompany> companyList = companyPage.getRecords();
Page<BusCompanyVo> companyVoPage = new Page<>(companyPage.getCurrent(), companyPage.getSize(), companyPage.getTotal());
if (CollUtil.isEmpty(companyList)) {
return companyVoPage;
}
// 对象列表 => 封装对象列表
List<BusCompanyVo> companyVoList = companyList.stream().map(company -> {
BusCompanyVo companyVo = new BusCompanyVo();
BeanUtils.copyProperties(company, companyVo);
return companyVo;
}).toList();
companyVoPage.setRecords(companyVoList);
return companyVoPage;
}
}

View File

@ -0,0 +1,219 @@
package org.dromara.materials.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.dromara.common.core.constant.CommonConstant;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.materials.domain.BusMaterialsInventory;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryCreateReq;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryQueryReq;
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryUpdateReq;
import org.dromara.materials.domain.vo.BusMaterialsInventoryVo;
import org.dromara.materials.mapper.BusMaterialsInventoryMapper;
import org.dromara.materials.service.IBusMaterialsInventoryService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* 材料出/入库Service业务层处理
*
* @author lcj
* @date 2025-03-06
*/
@Service
public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsInventoryMapper, BusMaterialsInventory>
implements IBusMaterialsInventoryService {
@Resource
private BusMaterialsInventoryMapper baseMapper;
/**
* 查询材料出/入库
*
* @param id 主键
* @return 材料出/入库
*/
@Override
public BusMaterialsInventoryVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询材料出/入库列表
*
* @param req 查询条件
* @return 材料出/入库分页列表
*/
@Override
public Page<BusMaterialsInventoryVo> queryPageList(MaterialsInventoryQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
// 查询数据库
Page<BusMaterialsInventory> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getMaterialsInventoryVoPage(result);
}
/**
* 查询符合条件的材料出/入库列表
*
* @param req 查询条件
* @return 材料出/入库列表
*/
@Override
public List<BusMaterialsInventoryVo> queryList(MaterialsInventoryQueryReq req) {
QueryWrapper<BusMaterialsInventory> queryWrapper = this.getQueryWrapper(req);
return baseMapper.selectVoList(queryWrapper);
}
/**
* 新增材料出/入库
*
* @param req 材料出/入库
* @return 是否新增成功
*/
@Override
public Long insertByBo(MaterialsInventoryCreateReq req) {
// 将实体类和 DTO 进行转换
BusMaterialsInventory materialsInventory = new BusMaterialsInventory();
BeanUtils.copyProperties(req, materialsInventory);
// 数据校验
validEntityBeforeSave(materialsInventory);
// 操作数据库
boolean save = this.save(materialsInventory);
if (!save) {
throw new ServiceException("新增材料出/入库失败,数据库异常", HttpStatus.ERROR);
}
return materialsInventory.getId();
}
/**
* 修改材料出/入库
*
* @param req 材料出/入库
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(MaterialsInventoryUpdateReq req) {
// 将实体类和 DTO 进行转换
BusMaterialsInventory materialsInventory = new BusMaterialsInventory();
BeanUtils.copyProperties(req, materialsInventory);
// 数据校验
validEntityBeforeSave(materialsInventory);
// 判断是否存在
BusMaterialsInventory oldBusMaterialsInventory = this.getById(materialsInventory.getId());
if (oldBusMaterialsInventory == null) {
throw new ServiceException("修改材料出/入库失败,数据不存在", HttpStatus.NOT_FOUND);
}
// 操作数据库
return this.updateById(materialsInventory);
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusMaterialsInventory entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除材料出/入库信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 构建查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
@Override
public QueryWrapper<BusMaterialsInventory> getQueryWrapper(MaterialsInventoryQueryReq req) {
QueryWrapper<BusMaterialsInventory> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
Long materialsId = req.getMaterialsId();
Long projectId = req.getProjectId();
String outPut = req.getOutPut();
Long number = req.getNumber();
Date outPutTime = req.getOutPutTime();
Long residue = req.getResidue();
String operator = req.getOperator();
String disposition = req.getDisposition();
String recipient = req.getRecipient();
String shipper = req.getShipper();
String remark = req.getRemark();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 模糊查询
queryWrapper.like(StringUtils.isNotBlank(outPut), "out_put", outPut);
queryWrapper.like(StringUtils.isNotBlank(operator), "operator", operator);
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
queryWrapper.like(StringUtils.isNotBlank(disposition), "disposition", disposition);
queryWrapper.like(StringUtils.isNotBlank(recipient), recipient, recipient);
queryWrapper.like(StringUtils.isNotBlank(shipper), shipper, shipper);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
queryWrapper.eq(ObjectUtils.isNotEmpty(materialsId), "materials_id", materialsId);
queryWrapper.eq(ObjectUtils.isNotEmpty(number), "number", number);
queryWrapper.eq(ObjectUtils.isNotEmpty(outPutTime), "out_put_time", outPutTime);
queryWrapper.eq(ObjectUtils.isNotEmpty(residue), "residue", residue);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
}
/**
* 获取材料出/入库分页对象视图
*
* @param materialsInventoryPage 材料出/入库分页对象
* @return 材料出/入库分页对象视图
*/
@Override
public Page<BusMaterialsInventoryVo> getMaterialsInventoryVoPage(Page<BusMaterialsInventory> materialsInventoryPage) {
List<BusMaterialsInventory> materialsInventoryList = materialsInventoryPage.getRecords();
Page<BusMaterialsInventoryVo> materialsInventoryVoPage = new Page<>(
materialsInventoryPage.getCurrent(),
materialsInventoryPage.getSize(),
materialsInventoryPage.getTotal());
if (CollUtil.isEmpty(materialsInventoryList)) {
return materialsInventoryVoPage;
}
// 对象列表 => 封装对象列表
List<BusMaterialsInventoryVo> materialsInventoryVoList = materialsInventoryList.stream().map(materialsInventory -> {
BusMaterialsInventoryVo materialsInventoryVo = new BusMaterialsInventoryVo();
BeanUtils.copyProperties(materialsInventory, materialsInventoryVo);
return materialsInventoryVo;
}).toList();
materialsInventoryVoPage.setRecords(materialsInventoryVoList);
return materialsInventoryVoPage;
}
}

View File

@ -0,0 +1,248 @@
package org.dromara.materials.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.CommonConstant;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.materials.domain.BusMaterials;
import org.dromara.materials.domain.req.materials.MaterialsCreateReq;
import org.dromara.materials.domain.req.materials.MaterialsQueryReq;
import org.dromara.materials.domain.req.materials.MaterialsUpdateReq;
import org.dromara.materials.domain.vo.BusMaterialsVo;
import org.dromara.materials.mapper.BusMaterialsMapper;
import org.dromara.materials.service.IBusCompanyService;
import org.dromara.materials.service.IBusMaterialsService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
/**
* 材料名称Service业务层处理
*
* @author lcj
* @date 2025-03-06
*/
@RequiredArgsConstructor
@Service
public class BusMaterialsServiceImpl extends ServiceImpl<BusMaterialsMapper, BusMaterials>
implements IBusMaterialsService {
@Resource
private BusMaterialsMapper baseMapper;
@Resource
private IBusCompanyService companyService;
/**
* 查询材料名称
*
* @param id 主键
* @return 材料名称
*/
@Override
public BusMaterialsVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询材料名称列表
*
* @param req 查询条件
* @return 材料名称分页列表
*/
@Override
public Page<BusMaterialsVo> queryPageList(MaterialsQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
// 查询数据库
Page<BusMaterials> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getMaterialsVoPage(result);
}
/**
* 查询符合条件的材料名称列表
*
* @param req 查询条件
* @return 材料名称列表
*/
@Override
public List<BusMaterialsVo> queryList(MaterialsQueryReq req) {
QueryWrapper<BusMaterials> queryWrapper = this.getQueryWrapper(req);
return baseMapper.selectVoList(queryWrapper);
}
/**
* 新增材料名称
*
* @param req 材料名称
* @return 新增材料信息id
*/
@Override
public Long insertByBo(MaterialsCreateReq req) {
// 将实体类和 DTO 进行转换
BusMaterials materials = new BusMaterials();
BeanUtils.copyProperties(req, materials);
// 数据校验
validEntityBeforeSave(materials);
// 写入数据库
boolean save = this.save(materials);
if (!save) {
throw new ServiceException("新增材料信息失败,数据库异常", HttpStatus.ERROR);
}
// 返回新写入的数据
return materials.getId();
}
/**
* 修改材料名称
*
* @param req 材料名称
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(MaterialsUpdateReq req) {
// 将实体类和 DTO 进行转换
BusMaterials materials = new BusMaterials();
BeanUtils.copyProperties(req, materials);
// 数据校验
validEntityBeforeSave(materials);
// 判断是否存在
BusMaterials oldMaterials = this.getById(materials.getId());
if (oldMaterials == null) {
throw new ServiceException("修改材料信息失败,数据不存在", HttpStatus.NOT_FOUND);
}
// 操作数据库
return this.updateById(materials);
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusMaterials entity) {
// TODO 做一些数据校验,如唯一约束
String materialsName = entity.getMaterialsName();
Long companyId = entity.getCompanyId();
Long projectId = entity.getProjectId();
if (StringUtils.isEmpty(materialsName)) {
throw new ServiceException("请填写材料名称", HttpStatus.BAD_REQUEST);
}
if (companyId == null) {
throw new ServiceException("请填写公司ID", HttpStatus.BAD_REQUEST);
}
if (projectId == null) {
throw new ServiceException("请填写项目ID", HttpStatus.BAD_REQUEST);
}
}
/**
* 校验并批量删除材料名称信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取材料视图
*
* @param Materials 材料
* @return 材料视图
*/
@Override
public BusMaterialsVo getBusMaterialsVo(BusMaterials Materials) {
// 对象转封装类
BusMaterialsVo materialsVo = new BusMaterialsVo();
if (Materials == null) {
return materialsVo;
}
BeanUtils.copyProperties(Materials, materialsVo);
// 关联查询项目信息
Long companyId = Materials.getCompanyId();
if (companyId != null) {
materialsVo.setCompanyVo(companyService.queryById(companyId));
}
return materialsVo;
}
/**
* 构建查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
@Override
public QueryWrapper<BusMaterials> getQueryWrapper(MaterialsQueryReq req) {
QueryWrapper<BusMaterials> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
String materialsName = req.getMaterialsName();
Long companyId = req.getCompanyId();
Long projectId = req.getProjectId();
String usePart = req.getUsePart();
String weightId = req.getWeightId();
String remark = req.getRemark();
String quantityCount = req.getQuantityCount();
String status = req.getStatus();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 模糊查询
queryWrapper.like(StringUtils.isNotBlank(materialsName), "materials_name", materialsName);
queryWrapper.like(StringUtils.isNotBlank(usePart), "use_part", usePart);
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
queryWrapper.like(StringUtils.isNotBlank(weightId), "weight_id", weightId);
queryWrapper.like(StringUtils.isNotBlank(quantityCount), "quantity_count", quantityCount);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(status), "status", status);
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
queryWrapper.eq(ObjectUtils.isNotEmpty(companyId), "company_id", companyId);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
}
/**
* 获取材料分页对象视图
*
* @param materialsPage 材料分页对象
* @return 材料分页对象视图
*/
@Override
public Page<BusMaterialsVo> getMaterialsVoPage(Page<BusMaterials> materialsPage) {
// 获取材料数据
List<BusMaterials> materialsList = materialsPage.getRecords();
// 添加分页信息
Page<BusMaterialsVo> materialsVoPage = new Page<>(materialsPage.getCurrent(), materialsPage.getSize(), materialsPage.getTotal());
if (CollUtil.isEmpty(materialsList)) {
return materialsVoPage;
}
// 对象列表 => 封装对象列表
List<BusMaterialsVo> materialsVoList = materialsList.stream().map(this::getBusMaterialsVo).toList();
materialsVoPage.setRecords(materialsVoList);
return materialsVoPage;
}
}

View File

@ -16,7 +16,6 @@ import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.bo.ProjectBo;
import org.dromara.project.domain.req.project.ProjectCreateReq;
import org.dromara.project.domain.req.project.ProjectQueryReq;
import org.dromara.project.domain.req.project.ProjectUpdateReq;
@ -56,8 +55,8 @@ public class ProjectController extends BaseController {
@SaCheckPermission("project:project:export")
@Log(title = "项目", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProjectBo bo, HttpServletResponse response) {
List<ProjectVo> list = projectService.queryList(bo);
public void export(ProjectQueryReq req, HttpServletResponse response) {
List<ProjectVo> list = projectService.queryList(req);
ExcelUtil.exportExcel(list, "项目", ProjectVo.class, response);
}

View File

@ -1,6 +1,7 @@
package org.dromara.project.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
@ -14,12 +15,10 @@ import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.UserProjectRelevancy;
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
@ -30,7 +29,6 @@ import org.dromara.project.service.IUserProjectRelevancyService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
@ -53,8 +51,8 @@ public class UserProjectRelevancyController extends BaseController {
@Tag(name = "查询用户与项目关联列表")
@SaCheckPermission("project:projectRelevancy:list")
@GetMapping("/list")
public TableDataInfo<UserProjectRelevancyVo> list(UserProjectRelevancyBo bo, PageQuery pageQuery) {
return userProjectRelevancyService.queryPageList(bo, pageQuery);
public Page<UserProjectRelevancyVo> list(UserProjectRelevancyQueryReq req) {
return userProjectRelevancyService.queryPageList(req);
}
/**
@ -86,8 +84,8 @@ public class UserProjectRelevancyController extends BaseController {
@SaCheckPermission("project:projectRelevancy:export")
@Log(title = "系统用户与项目关联", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(UserProjectRelevancyBo bo, HttpServletResponse response) {
List<UserProjectRelevancyVo> list = userProjectRelevancyService.queryList(bo);
public void export(UserProjectRelevancyQueryReq req, HttpServletResponse response) {
List<UserProjectRelevancyVo> list = userProjectRelevancyService.queryList(req);
ExcelUtil.exportExcel(list, "系统用户与项目关联", UserProjectRelevancyVo.class, response);
}
@ -140,13 +138,16 @@ public class UserProjectRelevancyController extends BaseController {
public R<Boolean> removeBatchByProjectList(@RequestBody ProjectBatchByProjectListReq req) {
Long userId = req.getUserId();
Long[] projectIdList = req.getProjectIdList();
List<UserProjectRelevancy> userProjectRelevancyList = Arrays.stream(projectIdList).map(projectId -> {
QueryWrapper<UserProjectRelevancy> wrapper = new QueryWrapper<>();
wrapper.eq("user_id", userId).in("project_id", (Object[]) projectIdList);
boolean result = userProjectRelevancyService.remove(wrapper);
/* List<UserProjectRelevancy> userProjectRelevancyList = Arrays.stream(projectIdList).map(projectId -> {
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
userProjectRelevancy.setUserId(userId);
userProjectRelevancy.setProjectId(projectId);
return userProjectRelevancy;
}).toList();
boolean result = userProjectRelevancyService.removeBatchByIds(userProjectRelevancyList);
boolean result = userProjectRelevancyService.removeBatchByIds(userProjectRelevancyList);*/
return R.ok(result);
}

View File

@ -1,141 +0,0 @@
package org.dromara.project.domain.bo;
import org.dromara.project.domain.Project;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 项目业务对象 project
*
* @author lcj
* @date 2025-03-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = Project.class, reverseConvertGenerate = false)
public class ProjectBo extends BaseEntity {
/**
* 项目id
*/
@NotNull(message = "不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目名称
*/
private String projectName;
/**
* 项目简称
*/
private String shortName;
/**
* 父项目id
*/
private Long pId;
/**
* 状态0正常 1停用
*/
private Long status;
/**
* 项目图片
*/
private String picUrl;
/**
* 备注
*/
private String remark;
/**
* 项目类型
*/
private String type;
/**
* 项目类型1光伏 2风电
*/
private Long isType;
/**
* 删除时间
*/
private Date deletedAt;
/**
* 项目地址
*/
private String projectSite;
/**
* 负责人
*/
private String principal;
/**
* 负责人电话
*/
private String principalPhone;
/**
* 实际容量
*/
private String actual;
/**
* 计划容量
*/
private String plan;
/**
* 开工时间
*/
private String onStreamTime;
/**
* 打卡范围09:00,18:00
*/
@NotBlank(message = "打卡范围09:00,18:00不能为空", groups = { AddGroup.class, EditGroup.class })
private String punchRange;
/**
* 设计总量
*/
@NotNull(message = "设计总量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long designTotal;
/**
* 安全协议书
*/
private String securityAgreement;
/**
* 排序字段
*/
@NotNull(message = "排序字段不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sort;
/**
* 显示隐藏0显示 1隐藏
*/
private Long showHidden;
/**
* 是否删除0正常 1删除
*/
@NotNull(message = "是否删除0正常 1删除不能为空", groups = { EditGroup.class })
private Long isDelete;
}

View File

@ -1,49 +0,0 @@
package org.dromara.project.domain.bo;
import org.dromara.project.domain.UserProjectRelevancy;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 系统用户与项目关联业务对象 user_project_relevancy
*
* @author lcj
* @date 2025-03-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = UserProjectRelevancy.class, reverseConvertGenerate = false)
public class UserProjectRelevancyBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 用户ID
*/
@NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long userId;
/**
* 项目ID
*/
@NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 删除时间
*/
private Date deletedAt;
}

View File

@ -3,10 +3,7 @@ package org.dromara.project.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.project.domain.Project;
import org.dromara.project.domain.bo.ProjectBo;
import org.dromara.project.domain.req.project.ProjectCreateReq;
import org.dromara.project.domain.req.project.ProjectQueryReq;
import org.dromara.project.domain.req.project.ProjectUpdateReq;
@ -58,10 +55,10 @@ public interface IProjectService extends IService<Project> {
/**
* 查询符合条件的项目列表
*
* @param bo 查询条件
* @param req 查询条件
* @return 项目列表
*/
List<ProjectVo> queryList(ProjectBo bo);
List<ProjectVo> queryList(ProjectQueryReq req);
/**
* 获取项目分页对象视图

View File

@ -3,10 +3,7 @@ package org.dromara.project.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.project.domain.UserProjectRelevancy;
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
@ -52,19 +49,18 @@ public interface IUserProjectRelevancyService extends IService<UserProjectReleva
/**
* 分页查询系统用户与项目关联列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @param req 查询条件
* @return 系统用户与项目关联分页列表
*/
TableDataInfo<UserProjectRelevancyVo> queryPageList(UserProjectRelevancyBo bo, PageQuery pageQuery);
Page<UserProjectRelevancyVo> queryPageList(UserProjectRelevancyQueryReq req);
/**
* 查询符合条件的系统用户与项目关联列表
*
* @param bo 查询条件
* @param req 查询条件
* @return 系统用户与项目关联列表
*/
List<UserProjectRelevancyVo> queryList(UserProjectRelevancyBo bo);
List<UserProjectRelevancyVo> queryList(UserProjectRelevancyQueryReq req);
/**
* 新增系统用户与项目关联

View File

@ -2,9 +2,7 @@ package org.dromara.project.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
@ -17,7 +15,6 @@ import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.project.domain.Project;
import org.dromara.project.domain.UserProjectRelevancy;
import org.dromara.project.domain.bo.ProjectBo;
import org.dromara.project.domain.req.project.ProjectCreateReq;
import org.dromara.project.domain.req.project.ProjectQueryReq;
import org.dromara.project.domain.req.project.ProjectUpdateReq;
@ -25,7 +22,6 @@ import org.dromara.project.domain.vo.ProjectVo;
import org.dromara.project.mapper.ProjectMapper;
import org.dromara.project.service.IProjectService;
import org.dromara.project.service.IUserProjectRelevancyService;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -46,9 +42,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
@Resource
private ProjectMapper baseMapper;
@Resource
private ISysUserService userService;
@Lazy
@Resource
private IUserProjectRelevancyService userProjectRelevancyService;
@ -152,13 +145,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
/**
* 查询符合条件的项目列表
*
* @param bo 查询条件
* @param req 查询条件
* @return 项目列表
*/
@Override
public List<ProjectVo> queryList(ProjectBo bo) {
LambdaQueryWrapper<Project> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
public List<ProjectVo> queryList(ProjectQueryReq req) {
QueryWrapper<Project> queryWrapper = this.getQueryWrapper(req);
return baseMapper.selectVoList(queryWrapper);
}
@Override
@ -174,31 +167,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
return projectVoPage;
}
private LambdaQueryWrapper<Project> buildQueryWrapper(ProjectBo bo) {
LambdaQueryWrapper<Project> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(Project::getId);
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), Project::getProjectName, bo.getProjectName());
lqw.like(StringUtils.isNotBlank(bo.getShortName()), Project::getShortName, bo.getShortName());
lqw.eq(bo.getPId() != null, Project::getPId, bo.getPId());
lqw.eq(bo.getStatus() != null, Project::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getPicUrl()), Project::getPicUrl, bo.getPicUrl());
lqw.eq(StringUtils.isNotBlank(bo.getType()), Project::getType, bo.getType());
lqw.eq(bo.getIsType() != null, Project::getIsType, bo.getIsType());
lqw.eq(bo.getDeletedAt() != null, Project::getDeletedAt, bo.getDeletedAt());
lqw.eq(StringUtils.isNotBlank(bo.getProjectSite()), Project::getProjectSite, bo.getProjectSite());
lqw.eq(StringUtils.isNotBlank(bo.getPrincipal()), Project::getPrincipal, bo.getPrincipal());
lqw.eq(StringUtils.isNotBlank(bo.getPrincipalPhone()), Project::getPrincipalPhone, bo.getPrincipalPhone());
lqw.eq(StringUtils.isNotBlank(bo.getActual()), Project::getActual, bo.getActual());
lqw.eq(StringUtils.isNotBlank(bo.getPlan()), Project::getPlan, bo.getPlan());
lqw.eq(StringUtils.isNotBlank(bo.getOnStreamTime()), Project::getOnStreamTime, bo.getOnStreamTime());
lqw.eq(StringUtils.isNotBlank(bo.getPunchRange()), Project::getPunchRange, bo.getPunchRange());
lqw.eq(bo.getDesignTotal() != null, Project::getDesignTotal, bo.getDesignTotal());
lqw.eq(StringUtils.isNotBlank(bo.getSecurityAgreement()), Project::getSecurityAgreement, bo.getSecurityAgreement());
lqw.eq(bo.getSort() != null, Project::getSort, bo.getSort());
lqw.eq(bo.getShowHidden() != null, Project::getShowHidden, bo.getShowHidden());
return lqw;
}
/**
* 新增项目
*

View File

@ -13,12 +13,8 @@ import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.project.domain.Project;
import org.dromara.project.domain.UserProjectRelevancy;
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
@ -102,41 +98,29 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
/**
* 分页查询系统用户与项目关联列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @param req 查询条件
* @return 系统用户与项目关联分页列表
*/
@Override
public TableDataInfo<UserProjectRelevancyVo> queryPageList(UserProjectRelevancyBo bo, PageQuery pageQuery) {
Page<UserProjectRelevancyVo> resultVo = pageQuery.build();
LambdaQueryWrapper<UserProjectRelevancy> lqw = buildQueryWrapper(bo);
Page<UserProjectRelevancy> result = this.page(pageQuery.build(), lqw);
if (CollUtil.isEmpty(result.getRecords())) {
return TableDataInfo.build(resultVo);
}
List<UserProjectRelevancyVo> userProjectRelevancyVos = result.getRecords().stream().map(this::getUserProjectRelevancyVo).toList();
resultVo.setRecords(userProjectRelevancyVos);
return TableDataInfo.build(resultVo);
public Page<UserProjectRelevancyVo> queryPageList(UserProjectRelevancyQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
// 查询数据库
Page<UserProjectRelevancy> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getUserProjectRelevancyVoPage(result);
}
/**
* 查询符合条件的系统用户与项目关联列表
*
* @param bo 查询条件
* @param req 查询条件
* @return 系统用户与项目关联列表
*/
@Override
public List<UserProjectRelevancyVo> queryList(UserProjectRelevancyBo bo) {
LambdaQueryWrapper<UserProjectRelevancy> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<UserProjectRelevancy> buildQueryWrapper(UserProjectRelevancyBo bo) {
LambdaQueryWrapper<UserProjectRelevancy> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(UserProjectRelevancy::getId);
lqw.eq(bo.getUserId() != null, UserProjectRelevancy::getUserId, bo.getUserId());
lqw.eq(bo.getProjectId() != null, UserProjectRelevancy::getProjectId, bo.getProjectId());
return lqw;
public List<UserProjectRelevancyVo> queryList(UserProjectRelevancyQueryReq req) {
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
return baseMapper.selectVoList(queryWrapper);
}
/**
@ -234,10 +218,7 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
public List<LoginUserProjectRelevancyResp> queryListByUserId(Long userId) {
// 添加查询条件,根据当前用户,获取数据
LambdaQueryWrapper<UserProjectRelevancy> queryWrapper = Wrappers.lambdaQuery();
// 如果是超级管理员查看所有
if (!LoginHelper.isSuperAdmin()) {
queryWrapper.eq(UserProjectRelevancy::getUserId, userId);
}
queryWrapper.eq(UserProjectRelevancy::getUserId, userId);
// 查询数据库,获取数据
List<UserProjectRelevancy> list = this.list(queryWrapper);
// 获取封装
@ -266,11 +247,8 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
public Page<UserProjectRelevancyVo> queryPageByUserId(Long userId, UserProjectRelevancyQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
// 如果是超级管理员查看所有
if (!LoginHelper.isSuperAdmin()) {
// 添加查询条件
req.setUserId(userId);
}
// 添加查询条件
req.setUserId(userId);
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
// 查询数据库
Page<UserProjectRelevancy> result = this.page(new Page<>(current, size), queryWrapper);

View File

@ -0,0 +1,7 @@
<?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.dromara.materials.mapper.BusCompanyMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?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.dromara.materials.mapper.BusMaterialsInventoryMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?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.dromara.materials.mapper.BusMaterialsMapper">
</mapper>