多数据源的项目获取

This commit is contained in:
2025-07-31 20:10:22 +08:00
parent 1ed47f0ff3
commit efb32a5367
29 changed files with 2297 additions and 0 deletions

View File

@ -0,0 +1,130 @@
package org.dromara.cailiaoshebei.controller;
import lombok.RequiredArgsConstructor;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.cailiaoshebei.domain.bo.*;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
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.log.enums.BusinessType;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiVo;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 物资-材料设备
*
* @author Lion Li
* @date 2025-07-31
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cailiaoshebei/cailiaoshebei")
public class BusCailiaoshebeiController extends BaseController {
private final IBusCailiaoshebeiService busCailiaoshebeiService;
//===============================设计===============================
/**
* 查询物资-材料设备列表
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebei:list")
@GetMapping("/list")
public TableDataInfo<BusCailiaoshebeiVo> list(BusCailiaoshebeiBo bo, PageQuery pageQuery) {
return busCailiaoshebeiService.queryPageList(bo, pageQuery);
}
/**
* 获取物资-材料设备详细信息
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebei:query")
@GetMapping("/{id}")
public R<BusCailiaoshebeiVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busCailiaoshebeiService.queryById(id));
}
/**
* 新增物资-材料设备
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebei:add")
@Log(title = "物资-材料设备", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusCailiaoshebeiAddReq req) {
return toAjax(busCailiaoshebeiService.insertByBo(req));
}
/**
* 修改物资-材料设备-设计部
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebei:edit")
@Log(title = "物资-材料设备-设计部", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusCailiaoshebeiEditReq bo) {
return toAjax(busCailiaoshebeiService.updateByBo(bo));
}
// /**
// * 导出物资-材料设备列表
// */
// @SaCheckPermission("cailiaoshebei:cailiaoshebei:export")
// @Log(title = "物资-材料设备", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(BusCailiaoshebeiBo bo, HttpServletResponse response) {
// List<BusCailiaoshebeiVo> list = busCailiaoshebeiService.queryList(bo);
// ExcelUtil.exportExcel(list, "物资-材料设备", BusCailiaoshebeiVo.class, response);
// }
// /**
// * 删除物资-材料设备
// *
// * @param ids 主键串
// */
// @SaCheckPermission("cailiaoshebei:cailiaoshebei:remove")
// @Log(title = "物资-材料设备", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public R<Void> remove(@NotEmpty(message = "主键不能为空")
// @PathVariable Long[] ids) {
// return toAjax(busCailiaoshebeiService.deleteWithValidByIds(List.of(ids), true));
// }
//===============================计划===============================
/**
* 查询物资-材料设备列表
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebei:listPlan")
@GetMapping("/listPlan")
public TableDataInfo<BusCailiaoshebeiListPlanRes> listPlan(BusCailiaoshebeiBo bo, PageQuery pageQuery) {
return busCailiaoshebeiService.queryPageListPlan(bo, pageQuery);
}
/**
* 修改物资-材料设备-计划部`
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebei:editPlan")
@Log(title = "物资-材料设备-计划部", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/editPlan")
public R<Void> editPlan(@Validated(EditGroup.class) @RequestBody BusCailiaoshebeiEditPlanReq bo) {
return toAjax(busCailiaoshebeiService.updateByPlanBo(bo));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.cailiaoshebei.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiPiciVo;
import org.dromara.cailiaoshebei.domain.bo.BusCailiaoshebeiPiciBo;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 物资-批次号
*
* @author Lion Li
* @date 2025-07-31
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cailiaoshebei/cailiaoshebeiPici")
public class BusCailiaoshebeiPiciController extends BaseController {
private final IBusCailiaoshebeiPiciService busCailiaoshebeiPiciService;
/**
* 查询物资-批次号列表
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:list")
@GetMapping("/list")
public TableDataInfo<BusCailiaoshebeiPiciVo> list(BusCailiaoshebeiPiciBo bo, PageQuery pageQuery) {
return busCailiaoshebeiPiciService.queryPageList(bo, pageQuery);
}
/**
* 导出物资-批次号列表
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:export")
@Log(title = "物资-批次号", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BusCailiaoshebeiPiciBo bo, HttpServletResponse response) {
List<BusCailiaoshebeiPiciVo> list = busCailiaoshebeiPiciService.queryList(bo);
ExcelUtil.exportExcel(list, "物资-批次号", BusCailiaoshebeiPiciVo.class, response);
}
/**
* 获取物资-批次号详细信息
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:query")
@GetMapping("/{id}")
public R<BusCailiaoshebeiPiciVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busCailiaoshebeiPiciService.queryById(id));
}
/**
* 新增物资-批次号
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:add")
@Log(title = "物资-批次号", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusCailiaoshebeiPiciBo bo) {
return toAjax(busCailiaoshebeiPiciService.insertByBo(bo));
}
/**
* 修改物资-批次号
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:edit")
@Log(title = "物资-批次号", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusCailiaoshebeiPiciBo bo) {
return toAjax(busCailiaoshebeiPiciService.updateByBo(bo));
}
/**
* 删除物资-批次号
*
* @param ids 主键串
*/
@SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:remove")
@Log(title = "物资-批次号", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busCailiaoshebeiPiciService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.cailiaoshebei.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceVo;
import org.dromara.cailiaoshebei.domain.bo.BusSuppliespriceBo;
import org.dromara.cailiaoshebei.service.IBusSuppliespriceService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 物资-物资清单
*
* @author Lion Li
* @date 2025-07-31
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cailiaoshebei/suppliesprice")
public class BusSuppliespriceController extends BaseController {
private final IBusSuppliespriceService busSuppliespriceService;
/**
* 查询物资-物资清单列表
*/
@SaCheckPermission("cailiaoshebei:suppliesprice:list")
@GetMapping("/list")
public TableDataInfo<BusSuppliespriceVo> list(BusSuppliespriceBo bo, PageQuery pageQuery) {
return busSuppliespriceService.queryPageList(bo, pageQuery);
}
/**
* 导出物资-物资清单列表
*/
@SaCheckPermission("cailiaoshebei:suppliesprice:export")
@Log(title = "物资-物资清单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BusSuppliespriceBo bo, HttpServletResponse response) {
List<BusSuppliespriceVo> list = busSuppliespriceService.queryList(bo);
ExcelUtil.exportExcel(list, "物资-物资清单", BusSuppliespriceVo.class, response);
}
/**
* 获取物资-物资清单详细信息
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:suppliesprice:query")
@GetMapping("/{id}")
public R<BusSuppliespriceVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busSuppliespriceService.queryById(id));
}
/**
* 新增物资-物资清单
*/
@SaCheckPermission("cailiaoshebei:suppliesprice:add")
@Log(title = "物资-物资清单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusSuppliespriceBo bo) {
return toAjax(busSuppliespriceService.insertByBo(bo));
}
/**
* 修改物资-物资清单
*/
@SaCheckPermission("cailiaoshebei:suppliesprice:edit")
@Log(title = "物资-物资清单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusSuppliespriceBo bo) {
return toAjax(busSuppliespriceService.updateByBo(bo));
}
/**
* 删除物资-物资清单
*
* @param ids 主键串
*/
@SaCheckPermission("cailiaoshebei:suppliesprice:remove")
@Log(title = "物资-物资清单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busSuppliespriceService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,108 @@
package org.dromara.cailiaoshebei.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_cailiaoshebei
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_cailiaoshebei")
public class BusCailiaoshebei extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 批次ID
*/
private Long batchId;
/**
* 供货商ID
*/
private Long supplierId;
/**
* 项目ID
*/
private Long projectId;
/**
* 供货商
*/
private String supplier;
/**
* 设备材料名称
*/
private String name;
/**
* 供货来源(字典)
*/
private String supply;
/**
* 规格型号
*/
private String specification;
/**
* 特征描述
*/
private String signalment;
/**
* 物料编码
*/
private String materialCode;
/**
* 计划到场时间
*/
private Date arrivalTime;
/**
* 计划完成时间
*/
private Date finishTime;
/**
* 计量单位
*/
private String unit;
/**
* 计划数量
*/
private Long plan;
/**
* 实际数量
*/
private Long realQuantity;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,65 @@
package org.dromara.cailiaoshebei.domain;
import jakarta.validation.constraints.NotNull;
import lombok.experimental.Accessors;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 物资-批次号对象 bus_cailiaoshebei_pici
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_cailiaoshebei_pici")
@Accessors(chain = true)
public class BusCailiaoshebeiPici extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 批次号
*/
private String batchNumber;
/**
* 审批设计
*/
private String approvalDesign;
/**
* 审批计划
*/
private String approvalPlan;
/**
* 审批项目
*/
private String approvalProject;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,61 @@
package org.dromara.cailiaoshebei.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 物资-物资清单对象 bus_suppliesprice
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_suppliesprice")
public class BusSuppliesprice extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "id")
private Long id;
/**
* 材料设备ID
*/
private Long cailiaoshebeiId;
/**
* 单价
*/
private Long unitPrice;
/**
* 合同号
*/
private String contractNum;
/**
* 预估供应周期
*/
private Long estimatedCycle;
/**
* 供货公司
*/
private String supplierCompany;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,113 @@
package org.dromara.cailiaoshebei.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebei;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.util.Date;
/**
* @Author 铁憨憨
* @Date 2025/7/31 10:04
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusCailiaoshebei.class, reverseConvertGenerate = false)
@Accessors(chain = true)
public class BusCailiaoshebeiAddReq extends BaseEntity {
/**
* 主键ID (编辑时必填)
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目ID
*/
@NotNull(message = "项目ID不能为空", groups = { AddGroup.class })
private Long projectId;
/**
* 批次ID (必填)
*/
@NotBlank(message = "批次ID不能为空", groups = { AddGroup.class })
@Size(max = 128, message = "批次ID长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class})
private String batchId;
/**
* 供货商ID (必填)
*/
@NotNull(message = "供货商ID不能为空", groups = { AddGroup.class })
private Long supplierId;
/**
* 供货商 (必填)
*/
@NotBlank(message = "供货商不能为空", groups = { AddGroup.class })
@Size(max = 64, message = "供货商名称长度不能超过64个字符", groups = {AddGroup.class, EditGroup.class})
private String supplier;
/**
* 设备材料名称 (必填)
*/
@NotBlank(message = "设备材料名称不能为空", groups = { AddGroup.class })
@Size(max = 64, message = "设备材料名称长度不能超过64个字符", groups = {AddGroup.class, EditGroup.class})
private String name;
/**
* 规格型号
*/
@NotBlank(message = "规格型号不能为空", groups = { AddGroup.class })
@Size(max = 128, message = "规格型号长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class})
private String specification;
/**
* 特征描述
*/
@NotBlank(message = "特征描述不能为空", groups = { AddGroup.class })
@Size(max = 128, message = "特征描述长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class})
private String signalment;
/**
* 计量单位 (必填)
*/
@NotBlank(message = "计量单位不能为空", groups = { AddGroup.class })
@Size(max = 10, message = "计量单位长度不能超过10个字符", groups = {AddGroup.class, EditGroup.class})
private String unit;
/**
* 计划数量 (必填)
*/
@NotNull(message = "计划数量不能为空", groups = { AddGroup.class })
private Long plan;
/**
* 供货来源(字典) (必填)
*/
@NotBlank(message = "供货来源不能为空", groups = { AddGroup.class })
@Size(max = 1, message = "供货来源只能是1个字符", groups = {AddGroup.class, EditGroup.class})
private String supply;
/**
* 物料编码 (必填)
*/
@NotBlank(message = "物料编码不能为空", groups = { AddGroup.class })
@Size(max = 128, message = "物料编码长度不能超过255个字符", groups = {AddGroup.class, EditGroup.class})
private String materialCode;
/**
* 备注
*/
@Size(max = 500, message = "备注长度不能超过500个字符", groups = {AddGroup.class, EditGroup.class})
private String remark;
}

View File

@ -0,0 +1,102 @@
package org.dromara.cailiaoshebei.domain.bo;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebei;
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;
/**
* 物资-材料设备业务对象 bus_cailiaoshebei
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusCailiaoshebei.class, reverseConvertGenerate = false)
public class BusCailiaoshebeiBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 批次ID
*/
private String batchId;
/**
* 供货商ID
*/
private Long supplierId;
/**
* 供货商
*/
private String supplier;
/**
* 设备材料名称
*/
private String name;
/**
* 供货来源(字典)
*/
private String supply;
/**
* 规格型号
*/
private String specification;
/**
* 特征描述
*/
private String signalment;
/**
* 物料编码
*/
private String materialCode;
/**
* 计划到场时间
*/
private Date arrivalTime;
/**
* 计划完成时间
*/
private Date finishTime;
/**
* 计量单位
*/
private String unit;
/**
* 计划数量
*/
private Long plan;
/**
* 实际数量
*/
private Long realQuantity;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,53 @@
package org.dromara.cailiaoshebei.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebei;
import org.dromara.cailiaoshebei.domain.dto.BusCailiaoshebeiEditPlanDto;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.util.Date;
import java.util.List;
/**
* @Author 铁憨憨
* @Date 2025/7/31 10:04
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusCailiaoshebei.class, reverseConvertGenerate = false)
@Accessors(chain = true)
public class BusCailiaoshebeiEditPlanReq extends BaseEntity {
/**
* 主键ID (编辑时必填)
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 计划到场时间
*/
@NotNull(message = "计划到场时间", groups = { EditGroup.class })
private Date arrivalTime;
/**
* 计划完成时间
*/
@NotNull(message = "计划完成时间", groups = { EditGroup.class })
private Date finishTime;
/**
* 物资清单列表
*/
private List<BusCailiaoshebeiEditPlanDto> listOfMaterialInventory;
}

View File

@ -0,0 +1,92 @@
package org.dromara.cailiaoshebei.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebei;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
/**
* @Author 铁憨憨
* @Date 2025/7/31 10:04
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusCailiaoshebei.class, reverseConvertGenerate = false)
@Accessors(chain = true)
public class BusCailiaoshebeiEditReq extends BaseEntity {
/**
* 主键ID (编辑时必填)
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 供货商ID (必填)
*/
@NotNull(message = "供货商ID不能为空", groups = { AddGroup.class })
private Long supplierId;
/**
* 供货商 (必填)
*/
@NotBlank(message = "供货商不能为空", groups = { AddGroup.class })
@Size(max = 64, message = "供货商名称长度不能超过64个字符", groups = {AddGroup.class, EditGroup.class})
private String supplier;
/**
* 设备材料名称 (必填)
*/
@NotBlank(message = "设备材料名称不能为空", groups = { AddGroup.class })
@Size(max = 64, message = "设备材料名称长度不能超过64个字符", groups = {AddGroup.class, EditGroup.class})
private String name;
/**
* 规格型号
*/
@NotBlank(message = "规格型号不能为空", groups = { AddGroup.class })
@Size(max = 128, message = "规格型号长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class})
private String specification;
/**
* 特征描述
*/
@NotBlank(message = "特征描述不能为空", groups = { AddGroup.class })
@Size(max = 128, message = "特征描述长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class})
private String signalment;
/**
* 计量单位 (必填)
*/
@NotBlank(message = "计量单位不能为空", groups = { AddGroup.class })
@Size(max = 10, message = "计量单位长度不能超过10个字符", groups = {AddGroup.class, EditGroup.class})
private String unit;
/**
* 计划数量 (必填)
*/
@NotNull(message = "计划数量不能为空", groups = { AddGroup.class })
private Long plan;
/**
* 供货来源(字典) (必填)
*/
@NotBlank(message = "供货来源不能为空", groups = { AddGroup.class })
@Size(max = 1, message = "供货来源只能是1个字符", groups = {AddGroup.class, EditGroup.class})
private String supply;
/**
* 备注
*/
@Size(max = 500, message = "备注长度不能超过500个字符", groups = {AddGroup.class, EditGroup.class})
private String remark;
}

View File

@ -0,0 +1,62 @@
package org.dromara.cailiaoshebei.domain.bo;
import lombok.experimental.Accessors;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
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.*;
/**
* 物资-批次号业务对象 bus_cailiaoshebei_pici
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusCailiaoshebeiPici.class, reverseConvertGenerate = false)
@Accessors(chain = true)
public class BusCailiaoshebeiPiciBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 批次号
*/
private String batchNumber;
/**
* 审批设计
*/
private String approvalDesign;
/**
* 审批计划
*/
private String approvalPlan;
/**
* 审批项目
*/
private String approvalProject;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,60 @@
package org.dromara.cailiaoshebei.domain.bo;
import org.dromara.cailiaoshebei.domain.BusSuppliesprice;
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.*;
/**
* 物资-物资清单业务对象 bus_suppliesprice
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusSuppliesprice.class, reverseConvertGenerate = false)
public class BusSuppliespriceBo extends BaseEntity {
/**
* ID
*/
@NotNull(message = "ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 材料设备ID
*/
private Long cailiaoshebeiId;
/**
* 单价
*/
private Long unitPrice;
/**
* 合同号
*/
private String contractNum;
/**
* 预估供应周期
*/
private Long estimatedCycle;
/**
* 供货公司
*/
private String supplierCompany;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,35 @@
package org.dromara.cailiaoshebei.domain.dto;
import java.io.Serializable;
/**
* @Author 铁憨憨
* @Date 2025/7/31 18:26
* @Version 1.0
*/
public class BusCailiaoshebeiEditPlanDto implements Serializable {
/**
* 单价
*/
private Long unitPrice;
/**
* 合同号
*/
private String contractNum;
/**
* 预估供应周期
*/
private Long estimatedCycle;
/**
* 供货公司
*/
private String supplierCompany;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,115 @@
package org.dromara.cailiaoshebei.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* @Author 铁憨憨
* @Date 2025/7/31 19:49
* @Version 1.0
*/
@Data
@Accessors(chain = true)
public class BusCailiaoshebeiListPlanRes implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 批次ID
*/
@ExcelProperty(value = "批次ID")
private String batchId;
/**
* 供货商ID
*/
@ExcelProperty(value = "供货商ID")
private Long supplierId;
/**
* 供货商
*/
@ExcelProperty(value = "供货商")
private String supplier;
/**
* 设备材料名称
*/
@ExcelProperty(value = "设备材料名称")
private String name;
/**
* 供货来源(字典)
*/
@ExcelProperty(value = "供货来源(字典)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "supply")
private String supply;
/**
* 规格型号
*/
@ExcelProperty(value = "规格型号")
private String specification;
/**
* 特征描述
*/
@ExcelProperty(value = "特征描述")
private String signalment;
/**
* 物料编码
*/
@ExcelProperty(value = "物料编码")
private String materialCode;
/**
* 计划到场时间
*/
@ExcelProperty(value = "计划到场时间")
private Date arrivalTime;
/**
* 计划完成时间
*/
@ExcelProperty(value = "计划完成时间")
private Date finishTime;
/**
* 计量单位
*/
@ExcelProperty(value = "计量单位")
private String unit;
/**
* 计划数量
*/
@ExcelProperty(value = "计划数量")
private Long plan;
/**
* 实际数量
*/
@ExcelProperty(value = "实际数量")
private Long realQuantity;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,68 @@
package org.dromara.cailiaoshebei.domain.vo;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
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_cailiaoshebei_pici
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusCailiaoshebeiPici.class)
public class BusCailiaoshebeiPiciVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 批次号
*/
@ExcelProperty(value = "批次号")
private String batchNumber;
/**
* 审批设计
*/
@ExcelProperty(value = "审批设计")
private String approvalDesign;
/**
* 审批计划
*/
@ExcelProperty(value = "审批计划")
private String approvalPlan;
/**
* 审批项目
*/
@ExcelProperty(value = "审批项目")
private String approvalProject;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,125 @@
package org.dromara.cailiaoshebei.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebei;
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_cailiaoshebei
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusCailiaoshebei.class)
public class BusCailiaoshebeiVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 批次ID
*/
@ExcelProperty(value = "批次ID")
private String batchId;
/**
* 供货商ID
*/
@ExcelProperty(value = "供货商ID")
private Long supplierId;
/**
* 供货商
*/
@ExcelProperty(value = "供货商")
private String supplier;
/**
* 设备材料名称
*/
@ExcelProperty(value = "设备材料名称")
private String name;
/**
* 供货来源(字典)
*/
@ExcelProperty(value = "供货来源(字典)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "supply")
private String supply;
/**
* 规格型号
*/
@ExcelProperty(value = "规格型号")
private String specification;
/**
* 特征描述
*/
@ExcelProperty(value = "特征描述")
private String signalment;
/**
* 物料编码
*/
@ExcelProperty(value = "物料编码")
private String materialCode;
/**
* 计划到场时间
*/
@ExcelProperty(value = "计划到场时间")
private Date arrivalTime;
/**
* 计划完成时间
*/
@ExcelProperty(value = "计划完成时间")
private Date finishTime;
/**
* 计量单位
*/
@ExcelProperty(value = "计量单位")
private String unit;
/**
* 计划数量
*/
@ExcelProperty(value = "计划数量")
private Long plan;
/**
* 实际数量
*/
@ExcelProperty(value = "实际数量")
private Long realQuantity;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,74 @@
package org.dromara.cailiaoshebei.domain.vo;
import org.dromara.cailiaoshebei.domain.BusSuppliesprice;
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_suppliesprice
*
* @author Lion Li
* @date 2025-07-31
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusSuppliesprice.class)
public class BusSuppliespriceVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "ID")
private Long id;
/**
* 材料设备ID
*/
@ExcelProperty(value = "材料设备ID")
private Long cailiaoshebeiId;
/**
* 单价
*/
@ExcelProperty(value = "单价")
private Long unitPrice;
/**
* 合同号
*/
@ExcelProperty(value = "合同号")
private String contractNum;
/**
* 预估供应周期
*/
@ExcelProperty(value = "预估供应周期")
private Long estimatedCycle;
/**
* 供货公司
*/
@ExcelProperty(value = "供货公司")
private String supplierCompany;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.mapper;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebei;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 物资-材料设备Mapper接口
*
* @author Lion Li
* @date 2025-07-31
*/
public interface BusCailiaoshebeiMapper extends BaseMapperPlus<BusCailiaoshebei, BusCailiaoshebeiVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.mapper;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiPiciVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 物资-批次号Mapper接口
*
* @author Lion Li
* @date 2025-07-31
*/
public interface BusCailiaoshebeiPiciMapper extends BaseMapperPlus<BusCailiaoshebeiPici, BusCailiaoshebeiPiciVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.mapper;
import org.dromara.cailiaoshebei.domain.BusSuppliesprice;
import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 物资-物资清单Mapper接口
*
* @author Lion Li
* @date 2025-07-31
*/
public interface BusSuppliespriceMapper extends BaseMapperPlus<BusSuppliesprice, BusSuppliespriceVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.cailiaoshebei.service;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiPiciVo;
import org.dromara.cailiaoshebei.domain.bo.BusCailiaoshebeiPiciBo;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 物资-批次号Service接口
*
* @author Lion Li
* @date 2025-07-31
*/
public interface IBusCailiaoshebeiPiciService extends IService<BusCailiaoshebeiPici>{
/**
* 查询物资-批次号
*
* @param id 主键
* @return 物资-批次号
*/
BusCailiaoshebeiPiciVo queryById(Long id);
/**
* 分页查询物资-批次号列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-批次号分页列表
*/
TableDataInfo<BusCailiaoshebeiPiciVo> queryPageList(BusCailiaoshebeiPiciBo bo, PageQuery pageQuery);
/**
* 查询符合条件的物资-批次号列表
*
* @param bo 查询条件
* @return 物资-批次号列表
*/
List<BusCailiaoshebeiPiciVo> queryList(BusCailiaoshebeiPiciBo bo);
/**
* 新增物资-批次号
*
* @param bo 物资-批次号
* @return 是否新增成功
*/
Boolean insertByBo(BusCailiaoshebeiPiciBo bo);
/**
* 修改物资-批次号
*
* @param bo 物资-批次号
* @return 是否修改成功
*/
Boolean updateByBo(BusCailiaoshebeiPiciBo bo);
/**
* 校验并批量删除物资-批次号信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,88 @@
package org.dromara.cailiaoshebei.service;
import org.dromara.cailiaoshebei.domain.bo.*;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiVo;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebei;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 物资-材料设备Service接口
*
* @author Lion Li
* @date 2025-07-31
*/
public interface IBusCailiaoshebeiService extends IService<BusCailiaoshebei>{
/**
* 查询物资-材料设备
*
* @param id 主键
* @return 物资-材料设备
*/
BusCailiaoshebeiVo queryById(Long id);
/**
* 分页查询物资-材料设备列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-材料设备分页列表
*/
TableDataInfo<BusCailiaoshebeiVo> queryPageList(BusCailiaoshebeiBo bo, PageQuery pageQuery);
/**
* 查询符合条件的物资-材料设备列表
*
* @param bo 查询条件
* @return 物资-材料设备列表
*/
List<BusCailiaoshebeiVo> queryList(BusCailiaoshebeiBo bo);
/**
* 新增物资-材料设备
*
* @param req 物资-材料设备
* @return 是否新增成功
*/
Boolean insertByBo(BusCailiaoshebeiAddReq req);
/**
* 修改物资-材料设备(设计)
*
* @param bo 物资-材料设备
* @return 是否修改成功
*/
Boolean updateByBo(BusCailiaoshebeiEditReq bo);
/**
* 校验并批量删除物资-材料设备信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 分页查询物资-材料设备列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-材料设备分页列表
*/
TableDataInfo<BusCailiaoshebeiListPlanRes> queryPageListPlan(BusCailiaoshebeiBo bo, PageQuery pageQuery);
/**
* 修改物资-材料设备(计划)
*
* @param bo 物资-材料设备
* @return 是否修改成功
*/
Boolean updateByPlanBo(BusCailiaoshebeiEditPlanReq bo);
}

View File

@ -0,0 +1,70 @@
package org.dromara.cailiaoshebei.service;
import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceVo;
import org.dromara.cailiaoshebei.domain.bo.BusSuppliespriceBo;
import org.dromara.cailiaoshebei.domain.BusSuppliesprice;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 物资-物资清单Service接口
*
* @author Lion Li
* @date 2025-07-31
*/
public interface IBusSuppliespriceService extends IService<BusSuppliesprice>{
/**
* 查询物资-物资清单
*
* @param id 主键
* @return 物资-物资清单
*/
BusSuppliespriceVo queryById(Long id);
/**
* 分页查询物资-物资清单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-物资清单分页列表
*/
TableDataInfo<BusSuppliespriceVo> queryPageList(BusSuppliespriceBo bo, PageQuery pageQuery);
/**
* 查询符合条件的物资-物资清单列表
*
* @param bo 查询条件
* @return 物资-物资清单列表
*/
List<BusSuppliespriceVo> queryList(BusSuppliespriceBo bo);
/**
* 新增物资-物资清单
*
* @param bo 物资-物资清单
* @return 是否新增成功
*/
Boolean insertByBo(BusSuppliespriceBo bo);
/**
* 修改物资-物资清单
*
* @param bo 物资-物资清单
* @return 是否修改成功
*/
Boolean updateByBo(BusSuppliespriceBo bo);
/**
* 校验并批量删除物资-物资清单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,134 @@
package org.dromara.cailiaoshebei.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.bo.BusCailiaoshebeiPiciBo;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiPiciVo;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.cailiaoshebei.mapper.BusCailiaoshebeiPiciMapper;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 物资-批次号Service业务层处理
*
* @author Lion Li
* @date 2025-07-31
*/
@RequiredArgsConstructor
@Service
public class BusCailiaoshebeiPiciServiceImpl extends ServiceImpl<BusCailiaoshebeiPiciMapper, BusCailiaoshebeiPici> implements IBusCailiaoshebeiPiciService {
private final BusCailiaoshebeiPiciMapper baseMapper;
/**
* 查询物资-批次号
*
* @param id 主键
* @return 物资-批次号
*/
@Override
public BusCailiaoshebeiPiciVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询物资-批次号列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-批次号分页列表
*/
@Override
public TableDataInfo<BusCailiaoshebeiPiciVo> queryPageList(BusCailiaoshebeiPiciBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusCailiaoshebeiPici> lqw = buildQueryWrapper(bo);
Page<BusCailiaoshebeiPiciVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的物资-批次号列表
*
* @param bo 查询条件
* @return 物资-批次号列表
*/
@Override
public List<BusCailiaoshebeiPiciVo> queryList(BusCailiaoshebeiPiciBo bo) {
LambdaQueryWrapper<BusCailiaoshebeiPici> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusCailiaoshebeiPici> buildQueryWrapper(BusCailiaoshebeiPiciBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusCailiaoshebeiPici> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(BusCailiaoshebeiPici::getId);
lqw.eq(StringUtils.isNotBlank(bo.getBatchNumber()), BusCailiaoshebeiPici::getBatchNumber, bo.getBatchNumber());
lqw.eq(StringUtils.isNotBlank(bo.getApprovalDesign()), BusCailiaoshebeiPici::getApprovalDesign, bo.getApprovalDesign());
lqw.eq(StringUtils.isNotBlank(bo.getApprovalPlan()), BusCailiaoshebeiPici::getApprovalPlan, bo.getApprovalPlan());
lqw.eq(StringUtils.isNotBlank(bo.getApprovalProject()), BusCailiaoshebeiPici::getApprovalProject, bo.getApprovalProject());
return lqw;
}
/**
* 新增物资-批次号
*
* @param bo 物资-批次号
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BusCailiaoshebeiPiciBo bo) {
BusCailiaoshebeiPici add = MapstructUtils.convert(bo, BusCailiaoshebeiPici.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改物资-批次号
*
* @param bo 物资-批次号
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusCailiaoshebeiPiciBo bo) {
BusCailiaoshebeiPici update = MapstructUtils.convert(bo, BusCailiaoshebeiPici.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusCailiaoshebeiPici entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除物资-批次号信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,215 @@
package org.dromara.cailiaoshebei.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.cailiaoshebei.domain.BusSuppliesprice;
import org.dromara.cailiaoshebei.domain.bo.*;
import org.dromara.cailiaoshebei.domain.dto.BusCailiaoshebeiEditPlanDto;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService;
import org.dromara.cailiaoshebei.service.IBusSuppliespriceService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiVo;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebei;
import org.dromara.cailiaoshebei.mapper.BusCailiaoshebeiMapper;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiService;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 物资-材料设备Service业务层处理
*
* @author Lion Li
* @date 2025-07-31
*/
@RequiredArgsConstructor
@Service
public class BusCailiaoshebeiServiceImpl extends ServiceImpl<BusCailiaoshebeiMapper, BusCailiaoshebei> implements IBusCailiaoshebeiService {
private final BusCailiaoshebeiMapper baseMapper;
private final IBusCailiaoshebeiPiciService busCailiaoshebeiPiciService;
private final IBusSuppliespriceService busSuppliespriceService;
/**
* 查询物资-材料设备
*
* @param id 主键
* @return 物资-材料设备
*/
@Override
public BusCailiaoshebeiVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询物资-材料设备列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-材料设备分页列表
*/
@Override
public TableDataInfo<BusCailiaoshebeiVo> queryPageList(BusCailiaoshebeiBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusCailiaoshebei> lqw = buildQueryWrapper(bo);
Page<BusCailiaoshebeiVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的物资-材料设备列表
*
* @param bo 查询条件
* @return 物资-材料设备列表
*/
@Override
public List<BusCailiaoshebeiVo> queryList(BusCailiaoshebeiBo bo) {
LambdaQueryWrapper<BusCailiaoshebei> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusCailiaoshebei> buildQueryWrapper(BusCailiaoshebeiBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusCailiaoshebei> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(BusCailiaoshebei::getId);
lqw.eq(StringUtils.isNotBlank(bo.getBatchId()), BusCailiaoshebei::getBatchId, bo.getBatchId());
lqw.eq(bo.getSupplierId() != null, BusCailiaoshebei::getSupplierId, bo.getSupplierId());
lqw.eq(StringUtils.isNotBlank(bo.getSupplier()), BusCailiaoshebei::getSupplier, bo.getSupplier());
lqw.like(StringUtils.isNotBlank(bo.getName()), BusCailiaoshebei::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getSupply()), BusCailiaoshebei::getSupply, bo.getSupply());
lqw.eq(StringUtils.isNotBlank(bo.getSpecification()), BusCailiaoshebei::getSpecification, bo.getSpecification());
lqw.eq(StringUtils.isNotBlank(bo.getSignalment()), BusCailiaoshebei::getSignalment, bo.getSignalment());
lqw.eq(StringUtils.isNotBlank(bo.getMaterialCode()), BusCailiaoshebei::getMaterialCode, bo.getMaterialCode());
lqw.eq(bo.getArrivalTime() != null, BusCailiaoshebei::getArrivalTime, bo.getArrivalTime());
lqw.eq(bo.getFinishTime() != null, BusCailiaoshebei::getFinishTime, bo.getFinishTime());
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), BusCailiaoshebei::getUnit, bo.getUnit());
lqw.eq(bo.getPlan() != null, BusCailiaoshebei::getPlan, bo.getPlan());
lqw.eq(bo.getRealQuantity() != null, BusCailiaoshebei::getRealQuantity, bo.getRealQuantity());
return lqw;
}
/**
* 新增物资-材料设备
*
* @param bo 物资-材料设备
* @return 是否新增成功
*/
@Override
@Transactional
public Boolean insertByBo(BusCailiaoshebeiAddReq bo) {
//1、创建批次号
BusCailiaoshebeiPici busCailiaoshebeiPici = new BusCailiaoshebeiPici().
setProjectId(bo.getProjectId()).
setBatchNumber(BatchNumberGenerator.generateBatchNumber("PC-"));
boolean save = busCailiaoshebeiPiciService.save(busCailiaoshebeiPici);
if (!save) {
return false;
}
//2、新增初始化数据信息
BusCailiaoshebei add = MapstructUtils.convert(bo, BusCailiaoshebei.class);
assert add != null;
add.setBatchId(busCailiaoshebeiPici.getId()); //批次ID
add.setMaterialCode(BatchNumberGenerator.generateBatchNumber("WL-")); //物料编码
validEntityBeforeSave(add);
Boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改物资-材料设备
*
* @param bo 物资-材料设备
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusCailiaoshebeiEditReq bo) {
BusCailiaoshebei update = MapstructUtils.convert(bo, BusCailiaoshebei.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
@Override
@Transactional
public Boolean updateByPlanBo(BusCailiaoshebeiEditPlanReq bo) {
//1、计划部更新主体数据的计划时间和完成时间
BusCailiaoshebei entity = MapstructUtils.convert(bo, BusCailiaoshebei.class);
validEntityBeforeSave(entity);
if (baseMapper.updateById(entity)==0){
return false;
}
//2、为每个供应商确认单价等信息
List<BusCailiaoshebeiEditPlanDto> listOfMaterialInventory = bo.getListOfMaterialInventory();
List<BusSuppliesprice> busSuppliesprices = BeanUtil.copyToList(listOfMaterialInventory, BusSuppliesprice.class);
busSuppliesprices.forEach(busSuppliesprice -> {
assert entity != null;
busSuppliesprice.setCailiaoshebeiId(entity.getId());
});
return busSuppliespriceService.saveBatch(busSuppliesprices);
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusCailiaoshebei 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 bo 查询条件
* @param pageQuery 分页参数
* @return 物资-材料设备分页列表
*/
@Override
public TableDataInfo<BusCailiaoshebeiListPlanRes> queryPageListPlan(BusCailiaoshebeiBo bo, PageQuery pageQuery) {
// 1、查询原始数据分页对象
LambdaQueryWrapper<BusCailiaoshebei> lqw = buildQueryWrapper(bo);
Page<BusCailiaoshebei> originalPage = this.page(pageQuery.build(), lqw);
// 2、转换Page对象中的记录列表同时保留分页信息
Page<BusCailiaoshebeiListPlanRes> convertedPage = (Page<BusCailiaoshebeiListPlanRes>) originalPage.convert(busCailiaoshebei -> {
BusCailiaoshebeiListPlanRes res = new BusCailiaoshebeiListPlanRes();// 将单个BusCailiaoshebei转换为BusCailiaoshebeiListPlanRes
BeanUtil.copyProperties(busCailiaoshebei, res);// 可以使用BeanUtil.copyProperties进行属性复制
return res;// 如果有需要手动处理的属性,可以在这里补充
});
// 3、用转换后的分页对象构建TableDataInfo
return TableDataInfo.build(convertedPage);
}
}

View File

@ -0,0 +1,135 @@
package org.dromara.cailiaoshebei.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.bo.BusSuppliespriceBo;
import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceVo;
import org.dromara.cailiaoshebei.domain.BusSuppliesprice;
import org.dromara.cailiaoshebei.mapper.BusSuppliespriceMapper;
import org.dromara.cailiaoshebei.service.IBusSuppliespriceService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 物资-物资清单Service业务层处理
*
* @author Lion Li
* @date 2025-07-31
*/
@RequiredArgsConstructor
@Service
public class BusSuppliespriceServiceImpl extends ServiceImpl<BusSuppliespriceMapper, BusSuppliesprice> implements IBusSuppliespriceService {
private final BusSuppliespriceMapper baseMapper;
/**
* 查询物资-物资清单
*
* @param id 主键
* @return 物资-物资清单
*/
@Override
public BusSuppliespriceVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询物资-物资清单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-物资清单分页列表
*/
@Override
public TableDataInfo<BusSuppliespriceVo> queryPageList(BusSuppliespriceBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusSuppliesprice> lqw = buildQueryWrapper(bo);
Page<BusSuppliespriceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的物资-物资清单列表
*
* @param bo 查询条件
* @return 物资-物资清单列表
*/
@Override
public List<BusSuppliespriceVo> queryList(BusSuppliespriceBo bo) {
LambdaQueryWrapper<BusSuppliesprice> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusSuppliesprice> buildQueryWrapper(BusSuppliespriceBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusSuppliesprice> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(BusSuppliesprice::getId);
lqw.eq(bo.getCailiaoshebeiId() != null, BusSuppliesprice::getCailiaoshebeiId, bo.getCailiaoshebeiId());
lqw.eq(bo.getUnitPrice() != null, BusSuppliesprice::getUnitPrice, bo.getUnitPrice());
lqw.eq(StringUtils.isNotBlank(bo.getContractNum()), BusSuppliesprice::getContractNum, bo.getContractNum());
lqw.eq(bo.getEstimatedCycle() != null, BusSuppliesprice::getEstimatedCycle, bo.getEstimatedCycle());
lqw.eq(StringUtils.isNotBlank(bo.getSupplierCompany()), BusSuppliesprice::getSupplierCompany, bo.getSupplierCompany());
return lqw;
}
/**
* 新增物资-物资清单
*
* @param bo 物资-物资清单
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BusSuppliespriceBo bo) {
BusSuppliesprice add = MapstructUtils.convert(bo, BusSuppliesprice.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改物资-物资清单
*
* @param bo 物资-物资清单
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusSuppliespriceBo bo) {
BusSuppliesprice update = MapstructUtils.convert(bo, BusSuppliesprice.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusSuppliesprice entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除物资-物资清单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,53 @@
package org.dromara.common.utils;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @Author 铁憨憨
* @Date 2025/7/31 9:54
* @Version 1.0
*/
public class BatchNumberGenerator {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
private static final AtomicInteger COUNTER = new AtomicInteger(0);
private static final int MAX_COUNTER = 9999;
private static String lastTimestamp = "";
/**
* 生成唯一批次号,格式为 yyyyMMddHHmmssXXXXXXXX为四位递增数字
* @param str 自定义字符串
* @return 唯一批次号字符串
* @throws RuntimeException 当同一毫秒内生成数量超过9999时抛出异常
*/
public static synchronized String generateBatchNumber(String str) {
String currentTimestamp = LocalDateTime.now().format(FORMATTER);
if (!currentTimestamp.equals(lastTimestamp)) {
lastTimestamp = currentTimestamp;
COUNTER.set(0);
}
int counterValue = COUNTER.getAndIncrement();
if (counterValue >= MAX_COUNTER) {
throw new RuntimeException("批次号生成器在同一毫秒内生成的数量已达到上限");
}
//判断str是否为空
if (str == null || str.isEmpty()) {
return currentTimestamp + String.format("%04d", counterValue);
}
return currentTimestamp + str + String.format("%04d", counterValue);
}
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(generateBatchNumber(null));
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

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.cailiaoshebei.mapper.BusCailiaoshebeiMapper">
</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.cailiaoshebei.mapper.BusCailiaoshebeiPiciMapper">
</mapper>