收资,提资清单导出

This commit is contained in:
zt
2025-08-13 21:21:04 +08:00
parent 92d5fefc26
commit 7a9a648d9a
47 changed files with 3041 additions and 8 deletions

View File

@ -53,13 +53,13 @@ spring:
username: xinnengyuandev
password: StRWCZdZirysNSs2
# 从库数据源
slave:
lazy: true
type: ${spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.110.2:13386/zmkgdev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: zmkgdev
password: JhYxREf25AXdy3h8
# slave:
# lazy: true
# type: ${spring.datasource.type}
# driverClassName: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://192.168.110.2:13386/zmkgdev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# username: zmkgdev
# password: JhYxREf25AXdy3h8
# oracle:
# type: ${spring.datasource.type}
# driverClassName: oracle.jdbc.OracleDriver

View File

@ -0,0 +1,120 @@
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.dromara.cailiaoshebei.domain.dto.BusMrpDto;
import org.dromara.cailiaoshebei.domain.vo.BusMrpVo;
import org.dromara.design.domain.dto.desCollect.DesCollectBatchDto;
import org.dromara.design.domain.vo.DesCollectVo;
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.BusMrpBaseVo;
import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo;
import org.dromara.cailiaoshebei.service.IBusMrpBaseService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 物资-批次需求计划基础信息
*
* @author Lion Li
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cailiaoshebei/mrpBase")
public class BusMrpBaseController extends BaseController {
private final IBusMrpBaseService busMrpBaseService;
/**
* 查询物资-批次需求计划基础信息列表
*/
@SaCheckPermission("cailiaoshebei:mrpBase:list")
@GetMapping("/list")
public TableDataInfo<BusMrpBaseVo> list(BusMrpBaseBo bo, PageQuery pageQuery) {
return busMrpBaseService.queryPageList(bo, pageQuery);
}
/**
* 导出物资-批次需求计划基础信息列表
*/
@SaCheckPermission("cailiaoshebei:mrpBase:export")
@Log(title = "物资-批次需求计划基础信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BusMrpBaseBo bo, HttpServletResponse response) {
List<BusMrpBaseVo> list = busMrpBaseService.queryList(bo);
ExcelUtil.exportExcel(list, "物资-批次需求计划基础信息", BusMrpBaseVo.class, response);
}
/**
* 获取物资-批次需求计划基础信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:mrpBase:query")
@GetMapping("/{id}")
public R<BusMrpVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busMrpBaseService.queryById(id));
}
/**
* 新增物资-批次需求计划基础信息
*/
@SaCheckPermission("cailiaoshebei:mrpBase:add")
@Log(title = "物资-批次需求计划基础信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusMrpBaseBo bo) {
return toAjax(busMrpBaseService.insertByBo(bo));
}
/**
* 修改物资-批次需求计划基础信息
*/
@SaCheckPermission("cailiaoshebei:mrpBase:edit")
@Log(title = "物资-批次需求计划基础信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusMrpBaseBo bo) {
return toAjax(busMrpBaseService.updateByBo(bo));
}
/**
* 删除物资-批次需求计划基础信息
*
* @param ids 主键串
*/
@SaCheckPermission("cailiaoshebei:mrpBase:remove")
@Log(title = "物资-批次需求计划基础信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busMrpBaseService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 批量新增或修改
*/
@RepeatSubmit()
@PostMapping("/batch")
public R<Void> batchAddOrUpdate(@RequestBody BusMrpDto dto) {
return toAjax(busMrpBaseService.batchAddOrUpdate(dto));
}
}

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.BusPlanDocAssociationVo;
import org.dromara.cailiaoshebei.domain.bo.BusPlanDocAssociationBo;
import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 物资-批次需求计划与采购单关联
*
* @author Lion Li
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cailiaoshebei/planDocAssociation")
public class BusPlanDocAssociationController extends BaseController {
private final IBusPlanDocAssociationService busPlanDocAssociationService;
/**
* 查询物资-批次需求计划与采购单关联列表
*/
@SaCheckPermission("cailiaoshebei:planDocAssociation:list")
@GetMapping("/list")
public TableDataInfo<BusPlanDocAssociationVo> list(BusPlanDocAssociationBo bo, PageQuery pageQuery) {
return busPlanDocAssociationService.queryPageList(bo, pageQuery);
}
/**
* 导出物资-批次需求计划与采购单关联列表
*/
@SaCheckPermission("cailiaoshebei:planDocAssociation:export")
@Log(title = "物资-批次需求计划与采购单关联", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BusPlanDocAssociationBo bo, HttpServletResponse response) {
List<BusPlanDocAssociationVo> list = busPlanDocAssociationService.queryList(bo);
ExcelUtil.exportExcel(list, "物资-批次需求计划与采购单关联", BusPlanDocAssociationVo.class, response);
}
/**
* 获取物资-批次需求计划与采购单关联详细信息
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:planDocAssociation:query")
@GetMapping("/{id}")
public R<BusPlanDocAssociationVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busPlanDocAssociationService.queryById(id));
}
/**
* 新增物资-批次需求计划与采购单关联
*/
@SaCheckPermission("cailiaoshebei:planDocAssociation:add")
@Log(title = "物资-批次需求计划与采购单关联", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusPlanDocAssociationBo bo) {
return toAjax(busPlanDocAssociationService.insertByBo(bo));
}
/**
* 修改物资-批次需求计划与采购单关联
*/
@SaCheckPermission("cailiaoshebei:planDocAssociation:edit")
@Log(title = "物资-批次需求计划与采购单关联", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusPlanDocAssociationBo bo) {
return toAjax(busPlanDocAssociationService.updateByBo(bo));
}
/**
* 删除物资-批次需求计划与采购单关联
*
* @param ids 主键串
*/
@SaCheckPermission("cailiaoshebei:planDocAssociation:remove")
@Log(title = "物资-批次需求计划与采购单关联", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busPlanDocAssociationService.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.BusPurchaseDocVo;
import org.dromara.cailiaoshebei.domain.bo.BusPurchaseDocBo;
import org.dromara.cailiaoshebei.service.IBusPurchaseDocService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 物资-采购联系单
*
* @author Lion Li
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cailiaoshebei/purchaseDoc")
public class BusPurchaseDocController extends BaseController {
private final IBusPurchaseDocService busPurchaseDocService;
/**
* 查询物资-采购联系单列表
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:list")
@GetMapping("/list")
public TableDataInfo<BusPurchaseDocVo> list(BusPurchaseDocBo bo, PageQuery pageQuery) {
return busPurchaseDocService.queryPageList(bo, pageQuery);
}
/**
* 导出物资-采购联系单列表
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:export")
@Log(title = "物资-采购联系单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BusPurchaseDocBo bo, HttpServletResponse response) {
List<BusPurchaseDocVo> list = busPurchaseDocService.queryList(bo);
ExcelUtil.exportExcel(list, "物资-采购联系单", BusPurchaseDocVo.class, response);
}
/**
* 获取物资-采购联系单详细信息
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:query")
@GetMapping("/{id}")
public R<BusPurchaseDocVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busPurchaseDocService.queryById(id));
}
/**
* 新增物资-采购联系单
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:add")
@Log(title = "物资-采购联系单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusPurchaseDocBo bo) {
return toAjax(busPurchaseDocService.insertByBo(bo));
}
/**
* 修改物资-采购联系单
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:edit")
@Log(title = "物资-采购联系单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusPurchaseDocBo bo) {
return toAjax(busPurchaseDocService.updateByBo(bo));
}
/**
* 删除物资-采购联系单
*
* @param ids 主键串
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:remove")
@Log(title = "物资-采购联系单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busPurchaseDocService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,130 @@
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.BusPurchaseUserVo;
import org.dromara.cailiaoshebei.domain.bo.BusPurchaseUserBo;
import org.dromara.cailiaoshebei.service.IBusPurchaseUserService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 物资采购人员
*
* @author Lion Li
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cailiaoshebei/purchaseUser")
public class BusPurchaseUserController extends BaseController {
private final IBusPurchaseUserService busPurchaseUserService;
/**
* 查询物资采购人员列表
*/
@SaCheckPermission("cailiaoshebei:purchaseUser:list")
@GetMapping("/list")
public TableDataInfo<BusPurchaseUserVo> list(BusPurchaseUserBo bo, PageQuery pageQuery) {
return busPurchaseUserService.queryPageList(bo, pageQuery);
}
/**
* 导出物资采购人员列表
*/
@SaCheckPermission("cailiaoshebei:purchaseUser:export")
@Log(title = "物资采购人员", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BusPurchaseUserBo bo, HttpServletResponse response) {
List<BusPurchaseUserVo> list = busPurchaseUserService.queryList(bo);
ExcelUtil.exportExcel(list, "物资采购人员", BusPurchaseUserVo.class, response);
}
/**
* 获取物资采购人员详细信息
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:purchaseUser:query")
@GetMapping("/{id}")
public R<BusPurchaseUserVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busPurchaseUserService.queryById(id));
}
/**
* 新增物资采购人员
*/
@SaCheckPermission("cailiaoshebei:purchaseUser:add")
@Log(title = "物资采购人员", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusPurchaseUserBo bo) {
return toAjax(busPurchaseUserService.insertByBo(bo));
}
/**
* 修改物资采购人员
*/
@SaCheckPermission("cailiaoshebei:purchaseUser:edit")
@Log(title = "物资采购人员", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusPurchaseUserBo bo) {
return toAjax(busPurchaseUserService.updateByBo(bo));
}
/**
* 删除物资采购人员
*
* @param ids 主键串
*/
@SaCheckPermission("cailiaoshebei:purchaseUser:remove")
@Log(title = "物资采购人员", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busPurchaseUserService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 新增或修改物资采购人员
*/
@SaCheckPermission("cailiaoshebei:purchaseUser:add")
@Log(title = "物资采购人员", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/addOrUpdate")
public R<Void> addOrUpdate(@Validated(AddGroup.class) @RequestBody BusPurchaseUserBo bo) {
return toAjax(busPurchaseUserService.addOrUpdate(bo));
}
/**
* 根据项目获取物资采购人员详细信息
*
* @param projectId 项目id
*/
@SaCheckPermission("cailiaoshebei:purchaseUser:query")
@GetMapping("/byProject/{projectId}")
public R<BusPurchaseUserVo> getInfoByProject(@NotNull(message = "主键不能为空")
@PathVariable Long projectId) {
return R.ok(busPurchaseUserService.getInfoByProject(projectId));
}
}

View File

@ -49,6 +49,11 @@ public class BusMaterialbatchdemandplan extends BaseEntity {
*/
private Long suppliespriceId;
/**
* 基础信息ID
*/
private Long mrpBaseId;
/**
* 物料编码
*/
@ -94,5 +99,10 @@ public class BusMaterialbatchdemandplan extends BaseEntity {
*/
private String remark;
/**
* 质量标准
*/
private String qs;
}

View File

@ -0,0 +1,57 @@
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;
import java.time.LocalDate;
/**
* 物资-批次需求计划基础信息对象 bus_mrp_base
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_mrp_base")
public class BusMrpBase extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 计划编号
*/
private String planCode;
/**
* 物资类别
*/
private String matCat;
/**
* 编制日期
*/
private LocalDate preparedDate;
/**
* 审核状态
*/
private String status;
}

View File

@ -0,0 +1,46 @@
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_plan_doc_association
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_plan_doc_association")
public class BusPlanDocAssociation extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 计划id
*/
private Long planId;
/**
* 采购联系单id
*/
private Long docId;
}

View File

@ -0,0 +1,122 @@
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;
import java.time.LocalDate;
/**
* 物资-采购联系单对象 bus_purchase_doc
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_purchase_doc")
public class BusPurchaseDoc extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 采购单编号
*/
private String docCode;
/**
* 供应商
*/
private String supplier;
/**
* 事由
*/
private String reason;
/**
* 设备统称
*/
private String name;
/**
* 到货日期
*/
private LocalDate arrivalDate;
/**
* 设计负责人联系方式
*/
private String designDirectorTel;
/**
* 现场技术负责人联系方式
*/
private String technicalDirectorTel;
/**
* 收货地址
*/
private String receivingAddress;
/**
* 联系人
*/
private String contacts;
/**
* 项目负责人
*/
private String projectDirector;
/**
* 采购经办人
*/
private String purchasingAgent;
/**
* 日期
*/
private LocalDate preparedDate;
/**
* 反馈文件地址
*/
private String feedbackUrl;
/**
* 签收单位
*/
private String signingUnit;
/**
* 签收人
*/
private String signingPerson;
/**
* 签收日期
*/
private LocalDate signingDate;
/**
* 审核状态
*/
private String status;
}

View File

@ -0,0 +1,46 @@
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_purchase_user
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_purchase_user")
public class BusPurchaseUser extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 项目id
*/
private Long projectId;
/**
* 采购人员id
*/
private Long userId;
/**
* 采购人员姓名
*/
private String userName;
}

View File

@ -33,7 +33,6 @@ public class BusMaterialbatchdemandplanBo extends BaseEntity {
/**
* 批次号
*/
@NotBlank(message = "批次号不能为空")
private String batchNumber;
/**
@ -41,6 +40,11 @@ public class BusMaterialbatchdemandplanBo extends BaseEntity {
*/
private Long projectId;
/**
* 基础信息ID
*/
private Long mrpBaseId;
/**
* 材料设备ID
*/
@ -97,4 +101,8 @@ public class BusMaterialbatchdemandplanBo extends BaseEntity {
private String remark;
/**
* 质量标准
*/
private String qs;
}

View File

@ -0,0 +1,59 @@
package org.dromara.cailiaoshebei.domain.bo;
import org.dromara.cailiaoshebei.domain.BusMrpBase;
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.time.LocalDate;
/**
* 物资-批次需求计划基础信息业务对象 bus_mrp_base
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusMrpBase.class, reverseConvertGenerate = false)
public class BusMrpBaseBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目ID
*/
@NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 计划编号
*/
@NotBlank(message = "计划编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String planCode;
/**
* 物资类别
*/
private String matCat;
/**
* 编制日期
*/
private LocalDate preparedDate;
/**
* 审核状态
*/
private String status;
}

View File

@ -0,0 +1,45 @@
package org.dromara.cailiaoshebei.domain.bo;
import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation;
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_plan_doc_association
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusPlanDocAssociation.class, reverseConvertGenerate = false)
public class BusPlanDocAssociationBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 计划id
*/
private Long planId;
/**
* 采购联系单id
*/
private Long docId;
}

View File

@ -0,0 +1,126 @@
package org.dromara.cailiaoshebei.domain.bo;
import org.dromara.cailiaoshebei.domain.BusPurchaseDoc;
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.time.LocalDate;
import java.util.List;
/**
* 物资-采购联系单业务对象 bus_purchase_doc
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusPurchaseDoc.class, reverseConvertGenerate = false)
public class BusPurchaseDocBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 采购单编号
*/
private String docCode;
/**
* 供应商
*/
private String supplier;
/**
* 事由
*/
private String reason;
/**
* 设备统称
*/
private String name;
/**
* 到货日期
*/
private LocalDate arrivalDate;
/**
* 设计负责人联系方式
*/
private String designDirectorTel;
/**
* 现场技术负责人联系方式
*/
private String technicalDirectorTel;
/**
* 收货地址
*/
private String receivingAddress;
/**
* 联系人
*/
private String contacts;
/**
* 项目负责人
*/
private String projectDirector;
/**
* 采购经办人
*/
private String purchasingAgent;
/**
* 日期
*/
private LocalDate preparedDate;
/**
* 反馈文件地址
*/
private String feedbackUrl;
/**
* 签收单位
*/
private String signingUnit;
/**
* 签收人
*/
private String signingPerson;
/**
* 签收日期
*/
private LocalDate signingDate;
/**
* 审核状态
*/
private String status;
/**
* 关联计划
*/
private List<BusPlanDocAssociationBo> associationList;
}

View File

@ -0,0 +1,48 @@
package org.dromara.cailiaoshebei.domain.bo;
import org.dromara.cailiaoshebei.domain.BusPurchaseUser;
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_purchase_user
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusPurchaseUser.class, reverseConvertGenerate = false)
public class BusPurchaseUserBo extends BaseEntity {
/**
*
*/
@NotNull(message = "不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目id
*/
@NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 采购人员id
*/
@NotNull(message = "采购人员id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long userId;
/**
* 采购人员姓名
*/
@NotBlank(message = "采购人员姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String userName;
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.domain.dto;
import lombok.Data;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo;
import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo;
import java.util.List;
@Data
public class BusMrpDto {
private BusMrpBaseBo mrpBaseBo;
private List<BusMaterialbatchdemandplanBo> planList;
}

View File

@ -43,6 +43,11 @@ public class BusMaterialbatchdemandplanVo implements Serializable {
@ExcelProperty(value = "批次ID")
private String batchId;
/**
* 基础信息ID
*/
private Long mrpBaseId;
/**
* 项目ID
*/
@ -115,5 +120,9 @@ public class BusMaterialbatchdemandplanVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
/**
* 质量标准
*/
private String qs;
}

View File

@ -0,0 +1,73 @@
package org.dromara.cailiaoshebei.domain.vo;
import org.dromara.cailiaoshebei.domain.BusMrpBase;
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.time.LocalDate;
import java.util.List;
/**
* 物资-批次需求计划基础信息视图对象 bus_mrp_base
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusMrpBase.class)
public class BusMrpBaseVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 项目ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 计划编号
*/
@ExcelProperty(value = "计划编号")
private String planCode;
/**
* 物资类别
*/
@ExcelProperty(value = "物资类别")
private String matCat;
/**
* 编制日期
*/
@ExcelProperty(value = "编制日期")
private LocalDate preparedDate;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String status;
/**
* 计划详情
*/
private List<BusMaterialbatchdemandplanVo> planList;
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.domain.vo;
import lombok.Data;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo;
import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo;
import java.util.List;
@Data
public class BusMrpVo {
private BusMrpBaseVo mrpBaseBo;
private List<BusMaterialbatchdemandplanVo> planList;
}

View File

@ -0,0 +1,56 @@
package org.dromara.cailiaoshebei.domain.vo;
import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation;
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_plan_doc_association
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusPlanDocAssociation.class)
public class BusPlanDocAssociationVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 项目ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 计划id
*/
@ExcelProperty(value = "计划id")
private Long planId;
/**
* 采购联系单id
*/
@ExcelProperty(value = "采购联系单id")
private Long docId;
}

View File

@ -0,0 +1,147 @@
package org.dromara.cailiaoshebei.domain.vo;
import org.dromara.cailiaoshebei.domain.BusPurchaseDoc;
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.time.LocalDate;
import java.util.Date;
/**
* 物资-采购联系单视图对象 bus_purchase_doc
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusPurchaseDoc.class)
public class BusPurchaseDocVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 项目ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 采购单编号
*/
@ExcelProperty(value = "采购单编号")
private String docCode;
/**
* 供应商
*/
@ExcelProperty(value = "供应商")
private String supplier;
/**
* 事由
*/
@ExcelProperty(value = "事由")
private String reason;
/**
* 设备统称
*/
@ExcelProperty(value = "设备统称")
private String name;
/**
* 到货日期
*/
@ExcelProperty(value = "到货日期")
private LocalDate arrivalDate;
/**
* 设计负责人联系方式
*/
@ExcelProperty(value = "设计负责人联系方式")
private String designDirectorTel;
/**
* 现场技术负责人联系方式
*/
@ExcelProperty(value = "现场技术负责人联系方式")
private String technicalDirectorTel;
/**
* 收货地址
*/
@ExcelProperty(value = "收货地址")
private String receivingAddress;
/**
* 联系人
*/
@ExcelProperty(value = "联系人")
private String contacts;
/**
* 项目负责人
*/
@ExcelProperty(value = "项目负责人")
private String projectDirector;
/**
* 采购经办人
*/
@ExcelProperty(value = "采购经办人")
private String purchasingAgent;
/**
* 日期
*/
@ExcelProperty(value = "日期")
private LocalDate preparedDate;
/**
* 反馈文件地址
*/
@ExcelProperty(value = "反馈文件地址")
private String feedbackUrl;
/**
* 签收单位
*/
@ExcelProperty(value = "签收单位")
private String signingUnit;
/**
* 签收人
*/
@ExcelProperty(value = "签收人")
private String signingPerson;
/**
* 签收日期
*/
@ExcelProperty(value = "签收日期")
private LocalDate signingDate;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String status;
}

View File

@ -0,0 +1,56 @@
package org.dromara.cailiaoshebei.domain.vo;
import org.dromara.cailiaoshebei.domain.BusPurchaseUser;
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_purchase_user
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusPurchaseUser.class)
public class BusPurchaseUserVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private Long projectId;
/**
* 采购人员id
*/
@ExcelProperty(value = "采购人员id")
private Long userId;
/**
* 采购人员姓名
*/
@ExcelProperty(value = "采购人员姓名")
private String userName;
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.mapper;
import org.dromara.cailiaoshebei.domain.BusMrpBase;
import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 物资-批次需求计划基础信息Mapper接口
*
* @author Lion Li
* @date 2025-08-13
*/
public interface BusMrpBaseMapper extends BaseMapperPlus<BusMrpBase, BusMrpBaseVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.mapper;
import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation;
import org.dromara.cailiaoshebei.domain.vo.BusPlanDocAssociationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 物资-批次需求计划与采购单关联Mapper接口
*
* @author Lion Li
* @date 2025-08-13
*/
public interface BusPlanDocAssociationMapper extends BaseMapperPlus<BusPlanDocAssociation, BusPlanDocAssociationVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.mapper;
import org.dromara.cailiaoshebei.domain.BusPurchaseDoc;
import org.dromara.cailiaoshebei.domain.vo.BusPurchaseDocVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 物资-采购联系单Mapper接口
*
* @author Lion Li
* @date 2025-08-13
*/
public interface BusPurchaseDocMapper extends BaseMapperPlus<BusPurchaseDoc, BusPurchaseDocVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.mapper;
import org.dromara.cailiaoshebei.domain.BusPurchaseUser;
import org.dromara.cailiaoshebei.domain.vo.BusPurchaseUserVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 物资采购人员Mapper接口
*
* @author Lion Li
* @date 2025-08-13
*/
public interface BusPurchaseUserMapper extends BaseMapperPlus<BusPurchaseUser, BusPurchaseUserVo> {
}

View File

@ -0,0 +1,79 @@
package org.dromara.cailiaoshebei.service;
import org.dromara.cailiaoshebei.domain.dto.BusMrpDto;
import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo;
import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo;
import org.dromara.cailiaoshebei.domain.BusMrpBase;
import org.dromara.cailiaoshebei.domain.vo.BusMrpVo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Collection;
import java.util.List;
/**
* 物资-批次需求计划基础信息Service接口
*
* @author Lion Li
* @date 2025-08-13
*/
public interface IBusMrpBaseService extends IService<BusMrpBase>{
/**
* 查询物资-批次需求计划基础信息
*
* @param id 主键
* @return 物资-批次需求计划基础信息
*/
BusMrpVo queryById(Long id);
/**
* 分页查询物资-批次需求计划基础信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-批次需求计划基础信息分页列表
*/
TableDataInfo<BusMrpBaseVo> queryPageList(BusMrpBaseBo bo, PageQuery pageQuery);
/**
* 查询符合条件的物资-批次需求计划基础信息列表
*
* @param bo 查询条件
* @return 物资-批次需求计划基础信息列表
*/
List<BusMrpBaseVo> queryList(BusMrpBaseBo bo);
/**
* 新增物资-批次需求计划基础信息
*
* @param bo 物资-批次需求计划基础信息
* @return 是否新增成功
*/
Boolean insertByBo(BusMrpBaseBo bo);
/**
* 修改物资-批次需求计划基础信息
*
* @param bo 物资-批次需求计划基础信息
* @return 是否修改成功
*/
Boolean updateByBo(BusMrpBaseBo bo);
/**
* 校验并批量删除物资-批次需求计划基础信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 批量新增或修改物资-批次需求计划
*/
Boolean batchAddOrUpdate(BusMrpDto dto);
}

View File

@ -0,0 +1,70 @@
package org.dromara.cailiaoshebei.service;
import org.dromara.cailiaoshebei.domain.vo.BusPlanDocAssociationVo;
import org.dromara.cailiaoshebei.domain.bo.BusPlanDocAssociationBo;
import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation;
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-08-13
*/
public interface IBusPlanDocAssociationService extends IService<BusPlanDocAssociation>{
/**
* 查询物资-批次需求计划与采购单关联
*
* @param id 主键
* @return 物资-批次需求计划与采购单关联
*/
BusPlanDocAssociationVo queryById(Long id);
/**
* 分页查询物资-批次需求计划与采购单关联列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-批次需求计划与采购单关联分页列表
*/
TableDataInfo<BusPlanDocAssociationVo> queryPageList(BusPlanDocAssociationBo bo, PageQuery pageQuery);
/**
* 查询符合条件的物资-批次需求计划与采购单关联列表
*
* @param bo 查询条件
* @return 物资-批次需求计划与采购单关联列表
*/
List<BusPlanDocAssociationVo> queryList(BusPlanDocAssociationBo bo);
/**
* 新增物资-批次需求计划与采购单关联
*
* @param bo 物资-批次需求计划与采购单关联
* @return 是否新增成功
*/
Boolean insertByBo(BusPlanDocAssociationBo bo);
/**
* 修改物资-批次需求计划与采购单关联
*
* @param bo 物资-批次需求计划与采购单关联
* @return 是否修改成功
*/
Boolean updateByBo(BusPlanDocAssociationBo bo);
/**
* 校验并批量删除物资-批次需求计划与采购单关联信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.cailiaoshebei.service;
import org.dromara.cailiaoshebei.domain.vo.BusPurchaseDocVo;
import org.dromara.cailiaoshebei.domain.bo.BusPurchaseDocBo;
import org.dromara.cailiaoshebei.domain.BusPurchaseDoc;
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-08-13
*/
public interface IBusPurchaseDocService extends IService<BusPurchaseDoc>{
/**
* 查询物资-采购联系单
*
* @param id 主键
* @return 物资-采购联系单
*/
BusPurchaseDocVo queryById(Long id);
/**
* 分页查询物资-采购联系单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-采购联系单分页列表
*/
TableDataInfo<BusPurchaseDocVo> queryPageList(BusPurchaseDocBo bo, PageQuery pageQuery);
/**
* 查询符合条件的物资-采购联系单列表
*
* @param bo 查询条件
* @return 物资-采购联系单列表
*/
List<BusPurchaseDocVo> queryList(BusPurchaseDocBo bo);
/**
* 新增物资-采购联系单
*
* @param bo 物资-采购联系单
* @return 是否新增成功
*/
Boolean insertByBo(BusPurchaseDocBo bo);
/**
* 修改物资-采购联系单
*
* @param bo 物资-采购联系单
* @return 是否修改成功
*/
Boolean updateByBo(BusPurchaseDocBo bo);
/**
* 校验并批量删除物资-采购联系单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,83 @@
package org.dromara.cailiaoshebei.service;
import jakarta.validation.constraints.NotNull;
import org.dromara.cailiaoshebei.domain.vo.BusPurchaseUserVo;
import org.dromara.cailiaoshebei.domain.bo.BusPurchaseUserBo;
import org.dromara.cailiaoshebei.domain.BusPurchaseUser;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.Collection;
import java.util.List;
/**
* 物资采购人员Service接口
*
* @author Lion Li
* @date 2025-08-13
*/
public interface IBusPurchaseUserService extends IService<BusPurchaseUser>{
/**
* 查询物资采购人员
*
* @param id 主键
* @return 物资采购人员
*/
BusPurchaseUserVo queryById(Long id);
/**
* 分页查询物资采购人员列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资采购人员分页列表
*/
TableDataInfo<BusPurchaseUserVo> queryPageList(BusPurchaseUserBo bo, PageQuery pageQuery);
/**
* 查询符合条件的物资采购人员列表
*
* @param bo 查询条件
* @return 物资采购人员列表
*/
List<BusPurchaseUserVo> queryList(BusPurchaseUserBo bo);
/**
* 新增物资采购人员
*
* @param bo 物资采购人员
* @return 是否新增成功
*/
Boolean insertByBo(BusPurchaseUserBo bo);
/**
* 修改物资采购人员
*
* @param bo 物资采购人员
* @return 是否修改成功
*/
Boolean updateByBo(BusPurchaseUserBo bo);
/**
* 校验并批量删除物资采购人员信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 新增或修改
*/
boolean addOrUpdate(BusPurchaseUserBo bo);
/**
* 根据项目id查询采购人员信息
*/
BusPurchaseUserVo getInfoByProject(Long projectId);
}

View File

@ -112,6 +112,7 @@ public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl<BusMateri
lqw.eq(bo.getEstimatedCycle() != null, BusMaterialbatchdemandplan::getEstimatedCycle, bo.getEstimatedCycle());
lqw.eq(bo.getDemandQuantity() != null, BusMaterialbatchdemandplan::getDemandQuantity, bo.getDemandQuantity());
lqw.eq(bo.getArrivalTime() != null, BusMaterialbatchdemandplan::getArrivalTime, bo.getArrivalTime());
lqw.eq(bo.getMrpBaseId()!=null, BusMaterialbatchdemandplan::getMrpBaseId, bo.getMrpBaseId());
return lqw;
}

View File

@ -0,0 +1,255 @@
package org.dromara.cailiaoshebei.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.domain.BusMaterialbatchdemandplan;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo;
import org.dromara.cailiaoshebei.domain.dto.BusMrpDto;
import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo;
import org.dromara.cailiaoshebei.domain.vo.BusMrpVo;
import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.enums.BusinessStatusEnum;
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.design.domain.DesCollect;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo;
import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo;
import org.dromara.cailiaoshebei.domain.BusMrpBase;
import org.dromara.cailiaoshebei.mapper.BusMrpBaseMapper;
import org.dromara.cailiaoshebei.service.IBusMrpBaseService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 物资-批次需求计划基础信息Service业务层处理
*
* @author Lion Li
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class BusMrpBaseServiceImpl extends ServiceImpl<BusMrpBaseMapper, BusMrpBase> implements IBusMrpBaseService {
private final BusMrpBaseMapper baseMapper;
private final IBusMaterialbatchdemandplanService planservice;
/**
* 查询物资-批次需求计划基础信息
*
* @param id 主键
* @return 物资-批次需求计划基础信息
*/
@Override
public BusMrpVo queryById(Long id){
BusMrpVo busMrpVo = new BusMrpVo();
BusMrpBaseVo busMrpBaseVo = baseMapper.selectVoById(id);
BusMaterialbatchdemandplanBo planBo = new BusMaterialbatchdemandplanBo();
planBo.setMrpBaseId(id);
List<BusMaterialbatchdemandplanVo> voList = planservice.queryList(planBo);
busMrpVo.setMrpBaseBo(busMrpBaseVo);
busMrpVo.setPlanList(voList);
return busMrpVo;
}
/**
* 分页查询物资-批次需求计划基础信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-批次需求计划基础信息分页列表
*/
@Override
public TableDataInfo<BusMrpBaseVo> queryPageList(BusMrpBaseBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusMrpBase> lqw = buildQueryWrapper(bo);
Page<BusMrpBaseVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的物资-批次需求计划基础信息列表
*
* @param bo 查询条件
* @return 物资-批次需求计划基础信息列表
*/
@Override
public List<BusMrpBaseVo> queryList(BusMrpBaseBo bo) {
LambdaQueryWrapper<BusMrpBase> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusMrpBase> buildQueryWrapper(BusMrpBaseBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusMrpBase> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BusMrpBase::getId);
lqw.eq(bo.getProjectId() != null, BusMrpBase::getProjectId, bo.getProjectId());
lqw.like(StringUtils.isNotBlank(bo.getPlanCode()), BusMrpBase::getPlanCode, bo.getPlanCode());
lqw.eq(StringUtils.isNotBlank(bo.getMatCat()), BusMrpBase::getMatCat, bo.getMatCat());
lqw.eq(bo.getPreparedDate() != null, BusMrpBase::getPreparedDate, bo.getPreparedDate());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BusMrpBase::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增物资-批次需求计划基础信息
*
* @param bo 物资-批次需求计划基础信息
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BusMrpBaseBo bo) {
BusMrpBase add = MapstructUtils.convert(bo, BusMrpBase.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改物资-批次需求计划基础信息
*
* @param bo 物资-批次需求计划基础信息
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusMrpBaseBo bo) {
BusMrpBase update = MapstructUtils.convert(bo, BusMrpBase.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusMrpBase entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除物资-批次需求计划基础信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
planservice.remove(Wrappers.<BusMaterialbatchdemandplan>lambdaQuery()
.in(BusMaterialbatchdemandplan::getMrpBaseId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean batchAddOrUpdate(BusMrpDto dto) {
BusMrpBase convert = MapstructUtils.convert(dto.getMrpBaseBo(), BusMrpBase.class);
convert.setStatus(null);
boolean b = saveOrUpdate(convert);
planservice.remove(Wrappers.<BusMaterialbatchdemandplan>lambdaQuery()
.eq(BusMaterialbatchdemandplan::getMrpBaseId,convert.getId()));
if(CollectionUtil.isNotEmpty(dto.getPlanList())){
List<BusMaterialbatchdemandplan> plans = MapstructUtils.convert(dto.getPlanList(), BusMaterialbatchdemandplan.class);
plans.forEach(item -> {
item.setMrpBaseId(convert.getId());
item.setProjectId(convert.getProjectId());
});
planservice.saveBatch(plans);
}
return b;
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@EventListener(condition = "#processEvent.flowCode.endsWith('mrp')")
public void processHandler(ProcessEvent processEvent) {
log.info("收资清单审核任务执行了{}", processEvent.toString());
BusMrpBase busMrpBase = this.getById(Convert.toLong(processEvent.getBusinessId()));
busMrpBase.setStatus(processEvent.getStatus());
if (processEvent.getSubmit()) {
busMrpBase.setStatus(BusinessStatusEnum.WAITING.getStatus());
}
this.updateById(busMrpBase);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@EventListener(condition = "#processTaskEvent.flowCode.endsWith('mrp')")
public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
log.info("收资清单审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('mrp')")
public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) {
log.info("监听删除流程事件,收资清单审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -0,0 +1,133 @@
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.BusPlanDocAssociationBo;
import org.dromara.cailiaoshebei.domain.vo.BusPlanDocAssociationVo;
import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation;
import org.dromara.cailiaoshebei.mapper.BusPlanDocAssociationMapper;
import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 物资-批次需求计划与采购单关联Service业务层处理
*
* @author Lion Li
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class BusPlanDocAssociationServiceImpl extends ServiceImpl<BusPlanDocAssociationMapper, BusPlanDocAssociation> implements IBusPlanDocAssociationService {
private final BusPlanDocAssociationMapper baseMapper;
/**
* 查询物资-批次需求计划与采购单关联
*
* @param id 主键
* @return 物资-批次需求计划与采购单关联
*/
@Override
public BusPlanDocAssociationVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询物资-批次需求计划与采购单关联列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-批次需求计划与采购单关联分页列表
*/
@Override
public TableDataInfo<BusPlanDocAssociationVo> queryPageList(BusPlanDocAssociationBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusPlanDocAssociation> lqw = buildQueryWrapper(bo);
Page<BusPlanDocAssociationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的物资-批次需求计划与采购单关联列表
*
* @param bo 查询条件
* @return 物资-批次需求计划与采购单关联列表
*/
@Override
public List<BusPlanDocAssociationVo> queryList(BusPlanDocAssociationBo bo) {
LambdaQueryWrapper<BusPlanDocAssociation> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusPlanDocAssociation> buildQueryWrapper(BusPlanDocAssociationBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusPlanDocAssociation> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BusPlanDocAssociation::getId);
lqw.eq(bo.getProjectId() != null, BusPlanDocAssociation::getProjectId, bo.getProjectId());
lqw.eq(bo.getPlanId() != null, BusPlanDocAssociation::getPlanId, bo.getPlanId());
lqw.eq(bo.getDocId() != null, BusPlanDocAssociation::getDocId, bo.getDocId());
return lqw;
}
/**
* 新增物资-批次需求计划与采购单关联
*
* @param bo 物资-批次需求计划与采购单关联
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BusPlanDocAssociationBo bo) {
BusPlanDocAssociation add = MapstructUtils.convert(bo, BusPlanDocAssociation.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改物资-批次需求计划与采购单关联
*
* @param bo 物资-批次需求计划与采购单关联
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusPlanDocAssociationBo bo) {
BusPlanDocAssociation update = MapstructUtils.convert(bo, BusPlanDocAssociation.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusPlanDocAssociation 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,177 @@
package org.dromara.cailiaoshebei.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation;
import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService;
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.BusPurchaseDocBo;
import org.dromara.cailiaoshebei.domain.vo.BusPurchaseDocVo;
import org.dromara.cailiaoshebei.domain.BusPurchaseDoc;
import org.dromara.cailiaoshebei.mapper.BusPurchaseDocMapper;
import org.dromara.cailiaoshebei.service.IBusPurchaseDocService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 物资-采购联系单Service业务层处理
*
* @author Lion Li
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class BusPurchaseDocServiceImpl extends ServiceImpl<BusPurchaseDocMapper, BusPurchaseDoc> implements IBusPurchaseDocService {
private final BusPurchaseDocMapper baseMapper;
private final IBusPlanDocAssociationService planDocAssociationService;
/**
* 查询物资-采购联系单
*
* @param id 主键
* @return 物资-采购联系单
*/
@Override
public BusPurchaseDocVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询物资-采购联系单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-采购联系单分页列表
*/
@Override
public TableDataInfo<BusPurchaseDocVo> queryPageList(BusPurchaseDocBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusPurchaseDoc> lqw = buildQueryWrapper(bo);
Page<BusPurchaseDocVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的物资-采购联系单列表
*
* @param bo 查询条件
* @return 物资-采购联系单列表
*/
@Override
public List<BusPurchaseDocVo> queryList(BusPurchaseDocBo bo) {
LambdaQueryWrapper<BusPurchaseDoc> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusPurchaseDoc> buildQueryWrapper(BusPurchaseDocBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusPurchaseDoc> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BusPurchaseDoc::getId);
lqw.eq(bo.getProjectId() != null, BusPurchaseDoc::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), BusPurchaseDoc::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getSupplier()), BusPurchaseDoc::getSupplier, bo.getSupplier());
lqw.eq(StringUtils.isNotBlank(bo.getReason()), BusPurchaseDoc::getReason, bo.getReason());
lqw.like(StringUtils.isNotBlank(bo.getName()), BusPurchaseDoc::getName, bo.getName());
lqw.eq(bo.getArrivalDate() != null, BusPurchaseDoc::getArrivalDate, bo.getArrivalDate());
lqw.eq(StringUtils.isNotBlank(bo.getDesignDirectorTel()), BusPurchaseDoc::getDesignDirectorTel, bo.getDesignDirectorTel());
lqw.eq(StringUtils.isNotBlank(bo.getTechnicalDirectorTel()), BusPurchaseDoc::getTechnicalDirectorTel, bo.getTechnicalDirectorTel());
lqw.eq(StringUtils.isNotBlank(bo.getReceivingAddress()), BusPurchaseDoc::getReceivingAddress, bo.getReceivingAddress());
lqw.eq(StringUtils.isNotBlank(bo.getContacts()), BusPurchaseDoc::getContacts, bo.getContacts());
lqw.eq(StringUtils.isNotBlank(bo.getProjectDirector()), BusPurchaseDoc::getProjectDirector, bo.getProjectDirector());
lqw.eq(StringUtils.isNotBlank(bo.getPurchasingAgent()), BusPurchaseDoc::getPurchasingAgent, bo.getPurchasingAgent());
lqw.eq(bo.getPreparedDate() != null, BusPurchaseDoc::getPreparedDate, bo.getPreparedDate());
lqw.eq(StringUtils.isNotBlank(bo.getFeedbackUrl()), BusPurchaseDoc::getFeedbackUrl, bo.getFeedbackUrl());
lqw.eq(StringUtils.isNotBlank(bo.getSigningUnit()), BusPurchaseDoc::getSigningUnit, bo.getSigningUnit());
lqw.eq(StringUtils.isNotBlank(bo.getSigningPerson()), BusPurchaseDoc::getSigningPerson, bo.getSigningPerson());
lqw.eq(bo.getSigningDate() != null, BusPurchaseDoc::getSigningDate, bo.getSigningDate());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BusPurchaseDoc::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增物资-采购联系单
*
* @param bo 物资-采购联系单
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(BusPurchaseDocBo bo) {
BusPurchaseDoc add = MapstructUtils.convert(bo, BusPurchaseDoc.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
//存入联系表
if(CollectionUtil.isNotEmpty(bo.getAssociationList())){
List<BusPlanDocAssociation> convert = MapstructUtils.convert(bo.getAssociationList(), BusPlanDocAssociation.class);
convert.forEach(item -> {
item.setProjectId(add.getProjectId());
item.setDocId(add.getId());
});
planDocAssociationService.saveBatch(convert);
}
return flag;
}
/**
* 修改物资-采购联系单
*
* @param bo 物资-采购联系单
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusPurchaseDocBo bo) {
BusPurchaseDoc update = MapstructUtils.convert(bo, BusPurchaseDoc.class);
validEntityBeforeSave(update);
planDocAssociationService.remove(Wrappers.<BusPlanDocAssociation>lambdaQuery()
.eq(BusPlanDocAssociation::getProjectId, update.getProjectId())
.eq(BusPlanDocAssociation::getDocId, update.getId()));
if(CollectionUtil.isNotEmpty(bo.getAssociationList())){
List<BusPlanDocAssociation> convert = MapstructUtils.convert(bo.getAssociationList(), BusPlanDocAssociation.class);
convert.forEach(item -> {
item.setProjectId(update.getProjectId());
item.setDocId(update.getId());
});
planDocAssociationService.saveBatch(convert);
}
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusPurchaseDoc 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,146 @@
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.BusPurchaseUserBo;
import org.dromara.cailiaoshebei.domain.vo.BusPurchaseUserVo;
import org.dromara.cailiaoshebei.domain.BusPurchaseUser;
import org.dromara.cailiaoshebei.mapper.BusPurchaseUserMapper;
import org.dromara.cailiaoshebei.service.IBusPurchaseUserService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 物资采购人员Service业务层处理
*
* @author Lion Li
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class BusPurchaseUserServiceImpl extends ServiceImpl<BusPurchaseUserMapper, BusPurchaseUser>
implements IBusPurchaseUserService {
private final BusPurchaseUserMapper baseMapper;
/**
* 查询物资采购人员
*
* @param id 主键
* @return 物资采购人员
*/
@Override
public BusPurchaseUserVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询物资采购人员列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资采购人员分页列表
*/
@Override
public TableDataInfo<BusPurchaseUserVo> queryPageList(BusPurchaseUserBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusPurchaseUser> lqw = buildQueryWrapper(bo);
Page<BusPurchaseUserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的物资采购人员列表
*
* @param bo 查询条件
* @return 物资采购人员列表
*/
@Override
public List<BusPurchaseUserVo> queryList(BusPurchaseUserBo bo) {
LambdaQueryWrapper<BusPurchaseUser> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusPurchaseUser> buildQueryWrapper(BusPurchaseUserBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusPurchaseUser> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BusPurchaseUser::getId);
lqw.eq(bo.getProjectId() != null, BusPurchaseUser::getProjectId, bo.getProjectId());
lqw.eq(bo.getUserId() != null, BusPurchaseUser::getUserId, bo.getUserId());
lqw.like(StringUtils.isNotBlank(bo.getUserName()), BusPurchaseUser::getUserName, bo.getUserName());
return lqw;
}
/**
* 新增物资采购人员
*
* @param bo 物资采购人员
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BusPurchaseUserBo bo) {
BusPurchaseUser add = MapstructUtils.convert(bo, BusPurchaseUser.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改物资采购人员
*
* @param bo 物资采购人员
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusPurchaseUserBo bo) {
BusPurchaseUser update = MapstructUtils.convert(bo, BusPurchaseUser.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusPurchaseUser entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除物资采购人员信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public boolean addOrUpdate(BusPurchaseUserBo bo) {
BusPurchaseUser add = MapstructUtils.convert(bo, BusPurchaseUser.class);
return saveOrUpdate(add);
}
@Override
public BusPurchaseUserVo getInfoByProject(Long projectId) {
return baseMapper.selectVoOne(Wrappers.lambdaQuery(BusPurchaseUser.class)
.eq(BusPurchaseUser::getProjectId, projectId).last("limit 1"));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.message.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.message.domain.vo.MsgConfigVo;
import org.dromara.message.domain.bo.MsgConfigBo;
import org.dromara.message.service.IMsgConfigService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 消息配置
*
* @author Lion Li
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/message/config")
public class MsgConfigController extends BaseController {
private final IMsgConfigService msgConfigService;
/**
* 查询消息配置列表
*/
@SaCheckPermission("message:config:list")
@GetMapping("/list")
public TableDataInfo<MsgConfigVo> list(MsgConfigBo bo, PageQuery pageQuery) {
return msgConfigService.queryPageList(bo, pageQuery);
}
/**
* 导出消息配置列表
*/
@SaCheckPermission("message:config:export")
@Log(title = "消息配置", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(MsgConfigBo bo, HttpServletResponse response) {
List<MsgConfigVo> list = msgConfigService.queryList(bo);
ExcelUtil.exportExcel(list, "消息配置", MsgConfigVo.class, response);
}
/**
* 获取消息配置详细信息
*
* @param id 主键
*/
@SaCheckPermission("message:config:query")
@GetMapping("/{id}")
public R<MsgConfigVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(msgConfigService.queryById(id));
}
/**
* 新增消息配置
*/
@SaCheckPermission("message:config:add")
@Log(title = "消息配置", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody MsgConfigBo bo) {
return toAjax(msgConfigService.insertByBo(bo));
}
/**
* 修改消息配置
*/
@SaCheckPermission("message:config:edit")
@Log(title = "消息配置", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody MsgConfigBo bo) {
return toAjax(msgConfigService.updateByBo(bo));
}
/**
* 删除消息配置
*
* @param ids 主键串
*/
@SaCheckPermission("message:config:remove")
@Log(title = "消息配置", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(msgConfigService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,61 @@
package org.dromara.message.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 消息配置对象 msg_config
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("msg_config")
public class MsgConfig extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 消息名称
*/
private Long msgName;
/**
* 消息模板
*/
private String msgContent;
/**
* 消息标识
*/
private String msgKey;
/**
* 跳转路由
*/
private String route;
/**
* 通知人
*/
private String userId;
}

View File

@ -0,0 +1,65 @@
package org.dromara.message.domain.bo;
import org.dromara.message.domain.MsgConfig;
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.*;
/**
* 消息配置业务对象 msg_config
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = MsgConfig.class, reverseConvertGenerate = false)
public class MsgConfigBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目ID
*/
@NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 消息名称
*/
@NotNull(message = "消息名称不能为空", groups = { AddGroup.class, EditGroup.class })
private Long msgName;
/**
* 消息模板
*/
@NotBlank(message = "消息模板不能为空", groups = { AddGroup.class, EditGroup.class })
private String msgContent;
/**
* 消息标识
*/
@NotBlank(message = "消息标识不能为空", groups = { AddGroup.class, EditGroup.class })
private String msgKey;
/**
* 跳转路由
*/
@NotBlank(message = "跳转路由不能为空", groups = { AddGroup.class, EditGroup.class })
private String route;
/**
* 通知人
*/
private String userId;
}

View File

@ -0,0 +1,74 @@
package org.dromara.message.domain.vo;
import org.dromara.message.domain.MsgConfig;
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;
/**
* 消息配置视图对象 msg_config
*
* @author Lion Li
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = MsgConfig.class)
public class MsgConfigVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 项目ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 消息名称
*/
@ExcelProperty(value = "消息名称")
private Long msgName;
/**
* 消息模板
*/
@ExcelProperty(value = "消息模板")
private String msgContent;
/**
* 消息标识
*/
@ExcelProperty(value = "消息标识")
private String msgKey;
/**
* 跳转路由
*/
@ExcelProperty(value = "跳转路由")
private String route;
/**
* 通知人
*/
@ExcelProperty(value = "通知人")
private String userId;
}

View File

@ -0,0 +1,15 @@
package org.dromara.message.mapper;
import org.dromara.message.domain.MsgConfig;
import org.dromara.message.domain.vo.MsgConfigVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 消息配置Mapper接口
*
* @author Lion Li
* @date 2025-08-13
*/
public interface MsgConfigMapper extends BaseMapperPlus<MsgConfig, MsgConfigVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.message.service;
import org.dromara.message.domain.vo.MsgConfigVo;
import org.dromara.message.domain.bo.MsgConfigBo;
import org.dromara.message.domain.MsgConfig;
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-08-13
*/
public interface IMsgConfigService extends IService<MsgConfig>{
/**
* 查询消息配置
*
* @param id 主键
* @return 消息配置
*/
MsgConfigVo queryById(Long id);
/**
* 分页查询消息配置列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 消息配置分页列表
*/
TableDataInfo<MsgConfigVo> queryPageList(MsgConfigBo bo, PageQuery pageQuery);
/**
* 查询符合条件的消息配置列表
*
* @param bo 查询条件
* @return 消息配置列表
*/
List<MsgConfigVo> queryList(MsgConfigBo bo);
/**
* 新增消息配置
*
* @param bo 消息配置
* @return 是否新增成功
*/
Boolean insertByBo(MsgConfigBo bo);
/**
* 修改消息配置
*
* @param bo 消息配置
* @return 是否修改成功
*/
Boolean updateByBo(MsgConfigBo bo);
/**
* 校验并批量删除消息配置信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,136 @@
package org.dromara.message.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.message.domain.bo.MsgConfigBo;
import org.dromara.message.domain.vo.MsgConfigVo;
import org.dromara.message.domain.MsgConfig;
import org.dromara.message.mapper.MsgConfigMapper;
import org.dromara.message.service.IMsgConfigService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 消息配置Service业务层处理
*
* @author Lion Li
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class MsgConfigServiceImpl extends ServiceImpl<MsgConfigMapper, MsgConfig> implements IMsgConfigService {
private final MsgConfigMapper baseMapper;
/**
* 查询消息配置
*
* @param id 主键
* @return 消息配置
*/
@Override
public MsgConfigVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询消息配置列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 消息配置分页列表
*/
@Override
public TableDataInfo<MsgConfigVo> queryPageList(MsgConfigBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<MsgConfig> lqw = buildQueryWrapper(bo);
Page<MsgConfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的消息配置列表
*
* @param bo 查询条件
* @return 消息配置列表
*/
@Override
public List<MsgConfigVo> queryList(MsgConfigBo bo) {
LambdaQueryWrapper<MsgConfig> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<MsgConfig> buildQueryWrapper(MsgConfigBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<MsgConfig> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(MsgConfig::getId);
lqw.eq(bo.getProjectId() != null, MsgConfig::getProjectId, bo.getProjectId());
lqw.like(bo.getMsgName() != null, MsgConfig::getMsgName, bo.getMsgName());
lqw.eq(StringUtils.isNotBlank(bo.getMsgContent()), MsgConfig::getMsgContent, bo.getMsgContent());
lqw.eq(StringUtils.isNotBlank(bo.getMsgKey()), MsgConfig::getMsgKey, bo.getMsgKey());
lqw.eq(StringUtils.isNotBlank(bo.getRoute()), MsgConfig::getRoute, bo.getRoute());
lqw.eq(StringUtils.isNotBlank(bo.getUserId()), MsgConfig::getUserId, bo.getUserId());
return lqw;
}
/**
* 新增消息配置
*
* @param bo 消息配置
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(MsgConfigBo bo) {
MsgConfig add = MapstructUtils.convert(bo, MsgConfig.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改消息配置
*
* @param bo 消息配置
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(MsgConfigBo bo) {
MsgConfig update = MapstructUtils.convert(bo, MsgConfig.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(MsgConfig 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,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.BusMrpBaseMapper">
</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.BusPlanDocAssociationMapper">
</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.BusPurchaseDocMapper">
</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.BusPurchaseUserMapper">
</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.message.mapper.MsgConfigMapper">
</mapper>