From 5995918c0873f97b9afe8d84a52f6f5a32ae9cad Mon Sep 17 00:00:00 2001 From: zch Date: Wed, 23 Jul 2025 15:56:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(qms):=20=E6=8B=B7=E8=B4=9Dmes=E7=9A=84?= =?UTF-8?q?=E7=89=A9=E6=96=99=E3=80=81=E7=89=A9=E6=96=99=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E3=80=81=E5=B7=A5=E5=BA=8F=E3=80=81=E5=B7=A5=E4=BD=8D=E5=88=B0?= =?UTF-8?q?qms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseMaterialInfoController.java | 119 ++++++ .../BaseSupplierInfoController.java | 118 ++++++ .../ProdBaseProcessInfoController.java | 127 ++++++ .../ProdBaseStationInfoController.java | 117 ++++++ .../dromara/qms/domain/BaseMaterialInfo.java | 293 +++++++++++++ .../dromara/qms/domain/BaseMaterialType.java | 100 +++++ .../dromara/qms/domain/BaseSupplierInfo.java | 74 ++++ .../qms/domain/ProdBaseProcessInfo.java | 161 ++++++++ .../qms/domain/ProdBaseStationInfo.java | 91 +++++ .../qms/domain/bo/BaseMaterialInfoBo.java | 270 ++++++++++++ .../qms/domain/bo/BaseSupplierInfoBo.java | 68 +++ .../qms/domain/bo/ProdBaseProcessInfoBo.java | 149 +++++++ .../qms/domain/bo/ProdBaseStationInfoBo.java | 83 ++++ .../qms/domain/vo/BaseMaterialInfoVo.java | 386 ++++++++++++++++++ .../qms/domain/vo/BaseMaterialTypeVo.java | 141 +++++++ .../qms/domain/vo/BaseSupplierInfoVo.java | 116 ++++++ .../qms/domain/vo/ProdBaseProcessInfoVo.java | 196 +++++++++ .../qms/domain/vo/ProdBaseStationInfoVo.java | 144 +++++++ .../qms/mapper/BaseMaterialInfoMapper.java | 27 ++ .../qms/mapper/BaseMaterialTypeMapper.java | 15 + .../qms/mapper/BaseSupplierInfoMapper.java | 15 + .../qms/mapper/ProdBaseProcessInfoMapper.java | 99 +++++ .../qms/mapper/ProdBaseStationInfoMapper.java | 15 + .../qms/service/IBaseMaterialInfoService.java | 68 +++ .../qms/service/IBaseSupplierInfoService.java | 68 +++ .../service/IProdBaseProcessInfoService.java | 76 ++++ .../service/IProdBaseStationInfoService.java | 68 +++ .../impl/BaseMaterialInfoServiceImpl.java | 244 +++++++++++ .../impl/BaseSupplierInfoServiceImpl.java | 150 +++++++ .../impl/ProdBaseProcessInfoServiceImpl.java | 330 +++++++++++++++ .../impl/ProdBaseStationInfoServiceImpl.java | 169 ++++++++ .../mapper/qms/BaseMaterialInfoMapper.xml | 39 ++ .../mapper/qms/BaseMaterialTypeMapper.xml | 7 + .../mapper/qms/BaseSupplierInfoMapper.xml | 7 + .../mapper/qms/ProdBaseProcessInfoMapper.xml | 189 +++++++++ .../mapper/qms/ProdBaseStationInfoMapper.xml | 7 + 36 files changed, 4346 insertions(+) create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/BaseMaterialInfoController.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/BaseSupplierInfoController.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/ProdBaseProcessInfoController.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/ProdBaseStationInfoController.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseMaterialInfo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseMaterialType.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseSupplierInfo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/ProdBaseProcessInfo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/ProdBaseStationInfo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/BaseMaterialInfoBo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/BaseSupplierInfoBo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/ProdBaseProcessInfoBo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/ProdBaseStationInfoBo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseMaterialInfoVo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseMaterialTypeVo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseSupplierInfoVo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/ProdBaseProcessInfoVo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/ProdBaseStationInfoVo.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseMaterialInfoMapper.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseMaterialTypeMapper.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseSupplierInfoMapper.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/ProdBaseProcessInfoMapper.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/ProdBaseStationInfoMapper.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IBaseMaterialInfoService.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IBaseSupplierInfoService.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IProdBaseProcessInfoService.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IProdBaseStationInfoService.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/BaseMaterialInfoServiceImpl.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/BaseSupplierInfoServiceImpl.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/ProdBaseProcessInfoServiceImpl.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/ProdBaseStationInfoServiceImpl.java create mode 100644 ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseMaterialInfoMapper.xml create mode 100644 ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseMaterialTypeMapper.xml create mode 100644 ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseSupplierInfoMapper.xml create mode 100644 ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/ProdBaseProcessInfoMapper.xml create mode 100644 ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/ProdBaseStationInfoMapper.xml diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/BaseMaterialInfoController.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/BaseMaterialInfoController.java new file mode 100644 index 00000000..a451cb9d --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/BaseMaterialInfoController.java @@ -0,0 +1,119 @@ +package org.dromara.qms.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.qms.domain.bo.BaseMaterialInfoBo; +import org.dromara.qms.domain.vo.BaseMaterialInfoVo; +import org.dromara.qms.service.IBaseMaterialInfoService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 物料信息 + * 前端访问路由地址为:/qms/baseMaterialInfo + * + * @author zangch + * @date 2025-01-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/baseMaterialInfo") +public class BaseMaterialInfoController extends BaseController { + + private final IBaseMaterialInfoService baseMaterialInfoService; + + + /** + * 查询物料信息列表 + */ + //@SaCheckPermission("mes:baseMaterialInfo:list") + @GetMapping("/list") + public TableDataInfo list(BaseMaterialInfoBo bo, PageQuery pageQuery) { + return baseMaterialInfoService.queryPageList(bo, pageQuery); + } + + /** + * 导出物料信息列表 + */ + //@SaCheckPermission("mes:baseMaterialInfo:export") + @Log(title = "物料信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BaseMaterialInfoBo bo, HttpServletResponse response) { + List list = baseMaterialInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "物料信息", BaseMaterialInfoVo.class, response); + } + + /** + * 获取物料信息详细信息 + * + * @param materialId 主键 + */ + //@SaCheckPermission("mes:baseMaterialInfo:query") + @GetMapping("/{materialId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long materialId) { + return R.ok(baseMaterialInfoService.queryById(materialId)); + } + + /** + * 新增物料信息 + */ + //@SaCheckPermission("mes:baseMaterialInfo:add") + @Log(title = "物料信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BaseMaterialInfoBo bo) { + return toAjax(baseMaterialInfoService.insertByBo(bo)); + } + + /** + * 修改物料信息 + */ + //@SaCheckPermission("mes:baseMaterialInfo:edit") + @Log(title = "物料信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BaseMaterialInfoBo bo) { + return toAjax(baseMaterialInfoService.updateByBo(bo)); + } + + /** + * 删除物料信息 + * + * @param materialIds 主键串 + */ + //@SaCheckPermission("mes:baseMaterialInfo:remove") + @Log(title = "物料信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{materialIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] materialIds) { + return toAjax(baseMaterialInfoService.deleteWithValidByIds(List.of(materialIds), true)); + } + + /** + * 下拉框查询物料信息列表 + */ + + @GetMapping("getBaseMaterialInfoList") + public R> getBaseMaterialInfoList(BaseMaterialInfoBo bo) { + List list = baseMaterialInfoService.queryList(bo); + return R.ok(list); + } + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/BaseSupplierInfoController.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/BaseSupplierInfoController.java new file mode 100644 index 00000000..528411f8 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/BaseSupplierInfoController.java @@ -0,0 +1,118 @@ +package org.dromara.qms.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.qms.domain.bo.BaseSupplierInfoBo; +import org.dromara.qms.domain.vo.BaseSupplierInfoVo; +import org.dromara.qms.service.IBaseSupplierInfoService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 供应商信息 + * 前端访问路由地址为:/qms/baseSupplierInfo + * + * @author ZangCH + * @date 2025-01-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/baseSupplierInfo") +public class BaseSupplierInfoController extends BaseController { + + private final IBaseSupplierInfoService baseSupplierInfoService; + + /** + * 查询供应商信息列表 + */ + //@SaCheckPermission("mes:baseSupplierInfo:list") + @GetMapping("/list") + public TableDataInfo list(BaseSupplierInfoBo bo, PageQuery pageQuery) { + return baseSupplierInfoService.queryPageList(bo, pageQuery); + } + + /** + * 导出供应商信息列表 + */ + //@SaCheckPermission("mes:baseSupplierInfo:export") + @Log(title = "供应商信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BaseSupplierInfoBo bo, HttpServletResponse response) { + List list = baseSupplierInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "供应商信息", BaseSupplierInfoVo.class, response); + } + + /** + * 获取供应商信息详细信息 + * + * @param supplierId 主键 + */ + //@SaCheckPermission("mes:baseSupplierInfo:query") + @GetMapping("/{supplierId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long supplierId) { + return R.ok(baseSupplierInfoService.queryById(supplierId)); + } + + /** + * 新增供应商信息 + */ + //@SaCheckPermission("mes:baseSupplierInfo:add") + @Log(title = "供应商信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BaseSupplierInfoBo bo) { + return toAjax(baseSupplierInfoService.insertByBo(bo)); + } + + /** + * 修改供应商信息 + */ + //@SaCheckPermission("mes:baseSupplierInfo:edit") + @Log(title = "供应商信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BaseSupplierInfoBo bo) { + return toAjax(baseSupplierInfoService.updateByBo(bo)); + } + + /** + * 删除供应商信息 + * + * @param supplierIds 主键串 + */ + //@SaCheckPermission("mes:baseSupplierInfo:remove") + @Log(title = "供应商信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{supplierIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] supplierIds) { + return toAjax(baseSupplierInfoService.deleteWithValidByIds(List.of(supplierIds), true)); + } + + + /** + * 下拉框查询供应商信息列表 + */ + + @GetMapping("getBaseSupplierInfoList") + public R> getBaseSupplierInfolist(BaseSupplierInfoBo bo) { + List list = baseSupplierInfoService.queryList(bo); + return R.ok(list); + } +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/ProdBaseProcessInfoController.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/ProdBaseProcessInfoController.java new file mode 100644 index 00000000..8a5583f8 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/ProdBaseProcessInfoController.java @@ -0,0 +1,127 @@ +package org.dromara.qms.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.qms.domain.bo.ProdBaseProcessInfoBo; +import org.dromara.qms.domain.vo.ProdBaseProcessInfoVo; +import org.dromara.qms.service.IProdBaseProcessInfoService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 工序信息 + * 前端访问路由地址为:/qms/baseProcessInfo + * + * @author Yinq + * @date 2025-01-06 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/baseProcessInfo") +public class ProdBaseProcessInfoController extends BaseController { + + private final IProdBaseProcessInfoService prodBaseProcessInfoService; + + /** + * 查询工序信息列表 + */ + //@SaCheckPermission("mes:baseProcessInfo:list") + @GetMapping("/list") + public TableDataInfo list(ProdBaseProcessInfoBo bo, PageQuery pageQuery) { + return prodBaseProcessInfoService.queryPageList(bo, pageQuery); + } + + /** + * 查询工序信息下拉框列表 + */ + @GetMapping("/getProcessInfoList") + public R> getProcessInfoList(ProdBaseProcessInfoBo bo) { + List list = prodBaseProcessInfoService.queryList(bo); + return R.ok(list); + } + + /** + * 导出工序信息列表 + */ + //@SaCheckPermission("mes:baseProcessInfo:export") + @Log(title = "工序信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ProdBaseProcessInfoBo bo, HttpServletResponse response) { + List list = prodBaseProcessInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "工序信息", ProdBaseProcessInfoVo.class, response); + } + + /** + * 获取工序信息详细信息 + * + * @param processId 主键 + */ + //@SaCheckPermission("mes:baseProcessInfo:query") + @GetMapping("/{processId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long processId) { + return R.ok(prodBaseProcessInfoService.queryById(processId)); + } + + /** + * 新增工序信息 + */ + //@SaCheckPermission("mes:baseProcessInfo:add") + @Log(title = "工序信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ProdBaseProcessInfoBo bo) { + return toAjax(prodBaseProcessInfoService.insertByBo(bo)); + } + + /** + * 修改工序信息 + */ + //@SaCheckPermission("mes:baseProcessInfo:edit") + @Log(title = "工序信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/edit") + public R edit(@Validated(EditGroup.class) @RequestBody ProdBaseProcessInfoBo bo) { + return toAjax(prodBaseProcessInfoService.updateByBo(bo)); + } + + /** + * 修改工序信息 + */ + //@SaCheckPermission("mes:baseProcessInfo:edit") + @Log(title = "工序信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/editUser") + public R editUser(@Validated(EditGroup.class) @RequestBody ProdBaseProcessInfoBo bo) { + return toAjax(prodBaseProcessInfoService.updateByBoUser(bo)); + } + + /** + * 删除工序信息 + * + * @param processIds 主键串 + */ + //@SaCheckPermission("mes:baseProcessInfo:remove") + @Log(title = "工序信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{processIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] processIds) { + return toAjax(prodBaseProcessInfoService.deleteWithValidByIds(List.of(processIds), true)); + } +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/ProdBaseStationInfoController.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/ProdBaseStationInfoController.java new file mode 100644 index 00000000..7c174358 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/ProdBaseStationInfoController.java @@ -0,0 +1,117 @@ +package org.dromara.qms.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.qms.domain.bo.ProdBaseStationInfoBo; +import org.dromara.qms.domain.vo.ProdBaseStationInfoVo; +import org.dromara.qms.service.IProdBaseStationInfoService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 工位信息 + * 前端访问路由地址为:/qms/baseStationInfo + * + * @author Yinq + * @date 2025-01-06 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/baseStationInfo") +public class ProdBaseStationInfoController extends BaseController { + + private final IProdBaseStationInfoService prodBaseStationInfoService; + + /** + * 查询工位信息列表 + */ + //@SaCheckPermission("mes:baseStationInfo:list") + @GetMapping("/list") + public TableDataInfo list(ProdBaseStationInfoBo bo, PageQuery pageQuery) { + return prodBaseStationInfoService.queryPageList(bo, pageQuery); + } + + /** + * 查询工位信息下拉框列表 + */ + @GetMapping("/getStationInfoList") + public R> getStationInfoList(ProdBaseStationInfoBo bo) { + List list = prodBaseStationInfoService.queryList(bo); + return R.ok(list); + } + + /** + * 导出工位信息列表 + */ + //@SaCheckPermission("mes:baseStationInfo:export") + @Log(title = "工位信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ProdBaseStationInfoBo bo, HttpServletResponse response) { + List list = prodBaseStationInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "工位信息", ProdBaseStationInfoVo.class, response); + } + + /** + * 获取工位信息详细信息 + * + * @param stationId 主键 + */ + //@SaCheckPermission("mes:baseStationInfo:query") + @GetMapping("/{stationId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long stationId) { + return R.ok(prodBaseStationInfoService.queryById(stationId)); + } + + /** + * 新增工位信息 + */ + //@SaCheckPermission("mes:baseStationInfo:add") + @Log(title = "工位信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ProdBaseStationInfoBo bo) { + return toAjax(prodBaseStationInfoService.insertByBo(bo)); + } + + /** + * 修改工位信息 + */ + //@SaCheckPermission("mes:baseStationInfo:edit") + @Log(title = "工位信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ProdBaseStationInfoBo bo) { + return toAjax(prodBaseStationInfoService.updateByBo(bo)); + } + + /** + * 删除工位信息 + * + * @param stationIds 主键串 + */ + //@SaCheckPermission("mes:baseStationInfo:remove") + @Log(title = "工位信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{stationIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] stationIds) { + return toAjax(prodBaseStationInfoService.deleteWithValidByIds(List.of(stationIds), true)); + } + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseMaterialInfo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseMaterialInfo.java new file mode 100644 index 00000000..9af2ea59 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseMaterialInfo.java @@ -0,0 +1,293 @@ +package org.dromara.qms.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 物料信息对象 base_material_info + * + * @author zangch + * @date 2025-01-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("base_material_info") +public class BaseMaterialInfo extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @TableId(value = "material_id", type = IdType.AUTO) + private Long materialId; + + /** + * ERP信息 + */ + private String erpId; + + /** + * 物料编码 + */ + private String materialCode; + + /** + * 旧物料编码 + */ + private String oldMaterialCode; + + /** + * 物料名称 + */ + private String materialName; + + /** + * 物料类型ID + */ + private Long materialTypeId; + + /** + * 物料大类(字典改为数据库表) + */ + private String materialCategoryId; + + /** + * 物料小类 + */ + private String materialSubclass; + + /** + * 批次标识(0否 1是) + */ + private String batchFlag; + + /** + * 小批次数量 + */ + private Long batchAmount; + + /** + * 计量单位ID + */ + private Long materialUnitId; + + /** + * 计量单位名称 + */ + private String materialUnit; + + /** + * 物料组 + */ + private String materialMatkl; + + /** + * 物料规格 + */ + private String materialSpec; + + /** + * 净重 + */ + private BigDecimal netWeight; + + /** + * 毛重 + */ + private BigDecimal grossWeight; + + /** + * 绑定标识(1是 0否) + */ + private String alwaysFlag; + + /** + * 所属工厂 + */ + private Long factoryId; + + /** + * 创建组织 + */ + private Long createOrgId; + + /** + * 使用组织 + */ + private Long useOrgId; + + /** + * 所属产线 + */ + private Long prodLineId; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 删除标识(0否 1是) + */ + private String deletedFlag; + + /** + * 采购计价单位 + */ + private Long purchasePriceUnitId; + + /** + * 审核日期 + */ + private Date approveDate; + + /** + * erp最后更新日期 + */ + private Date erpModifyDate; + + /** + * 最大库存数量 + */ + private Long maxStockAmount; + + /** + * 最小库存数量 + */ + private Long minStockAmount; + + /** + * 安全库存数量 + */ + private Long safeStockAmount; + + /** + * 申请标识(1是 0否) + */ + private String applyFlag; + + /** + * 物料分类(1ERP同步 2虚拟物料 3MES物料) + */ + private String materialClassfication; + + /** + * 自动出库标识(1是 0否) + */ + private String autoOutstockFlag; + + /** + * 辅料标识(1是 0否) + */ + private String accessoriesFlag; + + /** + * 低值易耗品标识(1是 0否) + */ + private String lowValueConsumableFlag; + + /** + * 品牌 + */ + private String brand; + + /** + * 层级 + */ + private String plyrating; + + /** + * 花纹 + */ + private String pattern; + + /** + * 速度级别 + */ + private String speedLevel; + + /** + * 负荷载重 + */ + private String load; + + /** + * 轮胎标记(1全钢胎 2半钢胎 3工程胎) + */ + private String tireMarkings; + + /** + * 最小停放时间(秒) + */ + private Long minParkingTime; + + /** + * 最大停放时间(秒) + */ + private Long maxParkingTime; + + /** + * 标准重量 + */ + private BigDecimal standardWeight; + + /** + * 标准重量上限 + */ + private BigDecimal weightUpperLimit; + + /** + * 标准重量下限 + */ + private BigDecimal weightLowerLimit; + + /** + * 内胎标记(0无 1有) + */ + private String innerTubeFlag; + + /** + * 销售类型(0内销 1外销) + */ + private String saleType; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + + /** + * 所属工厂名称 + */ + @TableField(exist = false) + private String factoryName; //映射字段 + + /** + * 物料类型名称 + */ + @TableField(exist = false) + private String matrialTypeName;//映射字段 + + + /** + * 物料大类名称 + */ + @TableField(exist = false) + private String materialCategoryName;//映射字段 + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseMaterialType.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseMaterialType.java new file mode 100644 index 00000000..ceb1a666 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseMaterialType.java @@ -0,0 +1,100 @@ +package org.dromara.qms.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; + +/** + * 物料类型信息对象 base_material_type + * + * @author zangch + * @date 2025-01-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("base_material_type") +public class BaseMaterialType extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 物料类型ID + */ + @TableId(value = "matrial_type_id", type = IdType.AUTO) + private Long matrialTypeId; + + /** + * 父级标识 + */ + private Long parentId; + + /** + * 物料类型编号 + */ + private String matrialTypeCode; + + /** + * 物料类型名称 + */ + private String matrialTypeName; + + /** + * 祖级列表 + */ + private String ancestors; + + /** + * 物料大类ID + */ +// private String materialCategories; + private Long materialCategoryId; + + /** + * 物料小类 + */ + private String materialSubclass; + + /** + * 工序ID + */ + private Long processId; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + + /** + * 工序名称 + */ + @TableField(exist = false) + private String processName;//映射字段 + + /** + * 大类编号 + */ +/* @TableField(exist = false) + private String materialCategoryCode;//映射字段*/ + + /** + * 大类名称 + */ + @TableField(exist = false) + private String materialCategoryName;//映射字段 +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseSupplierInfo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseSupplierInfo.java new file mode 100644 index 00000000..51473816 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/BaseSupplierInfo.java @@ -0,0 +1,74 @@ +package org.dromara.qms.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; +import java.util.Date; + +/** + * 供应商信息对象 base_supplier_info + * + * @author ZangCH + * @date 2025-01-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("base_supplier_info") +public class BaseSupplierInfo extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @TableId(value = "supplier_id", type = IdType.AUTO) + private Long supplierId; + + /** + * 供应商编号 + */ + private String supplierCode; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * erp的主键 + */ + private Long erpId; + + /** + * 激活状态(1启用 0停用) + */ + private String supplierStatus; + + /** + * 审核日期 + */ + private Date auditDate; + + /** + * erp最后更新时间 + */ + private Date erpModifyDate; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/ProdBaseProcessInfo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/ProdBaseProcessInfo.java new file mode 100644 index 00000000..8f05f809 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/ProdBaseProcessInfo.java @@ -0,0 +1,161 @@ +package org.dromara.qms.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; +import java.util.List; + +/** + * 工序信息对象 prod_base_process_info + * + * @author Yinq + * @date 2025-05-29 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("prod_base_process_info") +public class ProdBaseProcessInfo extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @TableId(value = "process_id", type = IdType.AUTO) + private Long processId; + + /** + * 工序编号 + */ + private String processCode; + + /** + * 工序名称 + */ + private String processName; + + /** + * 工序类别(1生产工序 2质检工序) + */ + private String processType; + + /** + * 工序顺序(弃用) + */ + private Long processQueue; + + /** + * 单位生产时间(秒);页面显示小时和分钟,就是标准工时,完成一个产品的制造所需的时间 + */ + private Long productionTime; + + /** + * 车间ID + */ + private Long workshopId; + + /** + * 委外标识(1自制 2委外) + */ + private String outsourcingFlag; + + /** + * 工序生产类型(1投料 2加工 3装配) + */ + private String processProductionType; + + /** + * 默认产出率(%),公式:合格数/投入数 + */ + private Long defaultYieldRate; + + /** + * 损耗率(%),公式:废品/不可修复不良品占比 + */ + private Long lossRate; + + /** + * 返修率(%),公式:返修品/投入数 + */ + private Long reworkRate; + + /** + * 领料方式(1领料单 2申请领料 3生产叫料) + */ + private String materialMethod; + + /** + * 委外提前期(秒) + */ + private Long leadTime; + + /** + * 准备时间(秒) + */ + private Long setupTime; + + /** + * 加工时间(秒) + */ + private Long processingTime; + + /** + * 拆卸时间(秒) + */ + private Long disassemblyTime; + + /** + * 理论生产节拍(秒/件) + */ + private Long theoreticalCycleTime; + + /** + * 质检方式(1免检 2自检 3质量检验) + */ + private String inspectionMethod; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 备注 + */ + private String remark; + +// /** +// * 工序关联产线信息 +// */ +// @TableField(exist = false) +// private List prodBaseProcessProdlineList;//工序关联产线信息,映射字段 +// +// /** 工序关联人员信息 */ +// @TableField(exist = false) +// private List prodBaseProcessUserList;//工序关联人员信息,映射字段 + + @TableField(exist = false) + private String processPercentage;//映射字段 + + /** + * 车间名称 + */ + @TableField(exist = false) + private String workshopName; + +// /** +// * 工序资源List +// */ +// @TableField(exist = false) +// List prodBaseProcessResourceList; +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/ProdBaseStationInfo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/ProdBaseStationInfo.java new file mode 100644 index 00000000..8156e5ee --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/ProdBaseStationInfo.java @@ -0,0 +1,91 @@ +package org.dromara.qms.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; + +/** + * 工位信息对象 prod_base_station_info + * + * @author Yinq + * @date 2025-01-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("prod_base_station_info") +public class ProdBaseStationInfo extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @TableId(value = "station_id", type = IdType.AUTO) + private Long stationId; + + /** + * 工位编号 + */ + private String stationCode; + + /** + * 工位名称 + */ + private String stationName; + + /** + * 工位类型(1生产工位 2质检工位) + */ + private String stationType; + + /** + * 所属工序 + */ + private Long processId; + + /** + * 单位生产时间(秒) + */ + private Long productionTime; + + /** + * AGV编号 + */ + private String agvCode; + + /** + * IP地址 + */ + private String ipAddress; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + /** + * 机台ID + */ + private Long machineId; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + @TableField(exist = false) + private String processName;//字段映射 + + @TableField(exist = false) + private String machineName;//字段映射 +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/BaseMaterialInfoBo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/BaseMaterialInfoBo.java new file mode 100644 index 00000000..6650a404 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/BaseMaterialInfoBo.java @@ -0,0 +1,270 @@ +package org.dromara.qms.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.qms.domain.BaseMaterialInfo; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 物料信息业务对象 base_material_info + * + * @author zangch + * @date 2025-01-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BaseMaterialInfo.class, reverseConvertGenerate = false) +public class BaseMaterialInfoBo extends BaseEntity { + + /** + * 主键标识 + */ + private Long materialId; + + /** + * ERP信息 + */ +/* @NotBlank(message = "ERP信息不能为空", groups = { AddGroup.class, EditGroup.class })*/ + private String erpId; + + /** + * 物料编码 + */ + @NotBlank(message = "物料编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String materialCode; + + /** + * 旧物料编码 + */ + private String oldMaterialCode; + + /** + * 物料名称 + */ + @NotBlank(message = "物料名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String materialName; + + /** + * 物料类型ID + */ + private Long materialTypeId; + + /** + * 物料大类(字典改为数据库表) + */ + private String materialCategoryId; + + /** + * 物料小类 + */ + private String materialSubclass; + + /** + * 批次标识(0否 1是) + */ + private String batchFlag; + + /** + * 小批次数量 + */ + private Long batchAmount; + + /** + * 计量单位ID + */ + private Long materialUnitId; + + /** + * 计量单位名称 + */ + private String materialUnit; + + /** + * 物料组 + */ + private String materialMatkl; + + /** + * 物料规格 + */ + private String materialSpec; + + /** + * 净重 + */ + private BigDecimal netWeight; + + /** + * 毛重 + */ + private BigDecimal grossWeight; + + /** + * 绑定标识(1是 0否) + */ + private String alwaysFlag; + + /** + * 所属工厂 + */ + private Long factoryId; + + /** + * 创建组织 + */ + private Long createOrgId; + + /** + * 使用组织 + */ + private Long useOrgId; + + /** + * 所属产线 + */ + private Long prodLineId; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 删除标识(0否 1是) + */ + private String deletedFlag; + + /** + * 采购计价单位 + */ + private Long purchasePriceUnitId; + + /** + * 审核日期 + */ + private Date approveDate; + + /** + * erp最后更新日期 + */ + private Date erpModifyDate; + + /** + * 最大库存数量 + */ + private Long maxStockAmount; + + /** + * 最小库存数量 + */ + private Long minStockAmount; + + /** + * 安全库存数量 + */ + private Long safeStockAmount; + + /** + * 申请标识(1是 0否) + */ + private String applyFlag; + + /** + * 物料分类(1ERP同步 2虚拟物料 3MES物料) + */ + private String materialClassfication; + + /** + * 自动出库标识(1是 0否) + */ + private String autoOutstockFlag; + + /** + * 辅料标识(1是 0否) + */ + private String accessoriesFlag; + + /** + * 低值易耗品标识(1是 0否) + */ + private String lowValueConsumableFlag; + + /** + * 品牌 + */ + private String brand; + + /** + * 层级 + */ + private String plyrating; + + /** + * 花纹 + */ + private String pattern; + + /** + * 速度级别 + */ + private String speedLevel; + + /** + * 负荷载重 + */ + private String load; + + /** + * 轮胎标记(1全钢胎 2半钢胎 3工程胎) + */ + private String tireMarkings; + + /** + * 最小停放时间(秒) + */ + private Long minParkingTime; + + /** + * 最大停放时间(秒) + */ + private Long maxParkingTime; + + /** + * 标准重量 + */ + private BigDecimal standardWeight; + + /** + * 标准重量上限 + */ + private BigDecimal weightUpperLimit; + + /** + * 标准重量下限 + */ + private BigDecimal weightLowerLimit; + + /** + * 内胎标记(0无 1有) + */ + private String innerTubeFlag; + + /** + * 销售类型(0内销 1外销) + */ + private String saleType; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/BaseSupplierInfoBo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/BaseSupplierInfoBo.java new file mode 100644 index 00000000..335e3508 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/BaseSupplierInfoBo.java @@ -0,0 +1,68 @@ +package org.dromara.qms.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.qms.domain.BaseSupplierInfo; + +import java.util.Date; + +/** + * 供应商信息业务对象 base_supplier_info + * + * @author ZangCH + * @date 2025-01-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BaseSupplierInfo.class, reverseConvertGenerate = false) +public class BaseSupplierInfoBo extends BaseEntity { + + /** + * 主键标识 + */ + private Long supplierId; + + /** + * 供应商编号 + */ + @NotBlank(message = "供应商编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplierCode; + + /** + * 供应商名称 + */ + @NotBlank(message = "供应商名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplierName; + + /** + * erp的主键 + */ + private Long erpId; + + /** + * 激活状态(1启用 0停用) + */ + private String supplierStatus; + + /** + * 审核日期 + */ + private Date auditDate; + + /** + * erp最后更新时间 + */ + private Date erpModifyDate; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/ProdBaseProcessInfoBo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/ProdBaseProcessInfoBo.java new file mode 100644 index 00000000..8d84e046 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/ProdBaseProcessInfoBo.java @@ -0,0 +1,149 @@ +package org.dromara.qms.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.qms.domain.ProdBaseProcessInfo; + + +import java.util.List; + +/** + * 工序信息业务对象 prod_base_process_info + * + * @author Yinq + * @date 2025-05-29 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ProdBaseProcessInfo.class, reverseConvertGenerate = false) +public class ProdBaseProcessInfoBo extends BaseEntity { + + /** + * 主键标识 + */ + private Long processId; + + /** + * 工序编号 + */ + @NotBlank(message = "工序编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String processCode; + + /** + * 工序名称 + */ + @NotBlank(message = "工序名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String processName; + + /** + * 工序类别(1生产工序 2质检工序) + */ + @NotBlank(message = "工序类别(1生产工序 2质检工序)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String processType; + + /** + * 工序顺序(弃用) + */ + private Long processQueue; + + /** + * 单位生产时间(秒);页面显示小时和分钟,就是标准工时,完成一个产品的制造所需的时间 + */ + private Long productionTime; + + /** + * 车间ID + */ + private Long workshopId; + + /** + * 委外标识(1自制 2委外) + */ + private String outsourcingFlag; + + /** + * 工序生产类型(1投料 2加工 3装配) + */ + private String processProductionType; + + /** + * 默认产出率(%),公式:合格数/投入数 + */ + private Long defaultYieldRate; + + /** + * 损耗率(%),公式:废品/不可修复不良品占比 + */ + private Long lossRate; + + /** + * 返修率(%),公式:返修品/投入数 + */ + private Long reworkRate; + + /** + * 领料方式(1领料单 2申请领料 3生产叫料) + */ + private String materialMethod; + + /** + * 委外提前期(秒) + */ + private Long leadTime; + + /** + * 准备时间(秒) + */ + private Long setupTime; + + /** + * 加工时间(秒) + */ + private Long processingTime; + + /** + * 拆卸时间(秒) + */ + private Long disassemblyTime; + + /** + * 理论生产节拍(秒/件) + */ + private Long theoreticalCycleTime; + + /** + * 质检方式(1免检 2自检 3质量检验) + */ + private String inspectionMethod; + + /** + * 激活标识(1是 0否) + */ + @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String activeFlag; + + /** + * 备注 + */ + private String remark; + +// /** +// * 工序关联产线信息 +// */ +// private List prodBaseProcessProdlineBoList;//工序关联产线信息,映射字段 +// +// /** 工序关联人员信息 */ +// private List prodBaseProcessUserBoList;//工序关联人员信息,映射字段 + + private String processPercentageBo;//映射字段 + +// /** +// * 工序资源List +// */ +// List prodBaseProcessResourceList; +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/ProdBaseStationInfoBo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/ProdBaseStationInfoBo.java new file mode 100644 index 00000000..a21014c2 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/ProdBaseStationInfoBo.java @@ -0,0 +1,83 @@ +package org.dromara.qms.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.qms.domain.ProdBaseStationInfo; + +import java.util.List; + +/** + * 工位信息业务对象 prod_base_station_info + * + * @author Yinq + * @date 2025-01-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ProdBaseStationInfo.class, reverseConvertGenerate = false) +public class ProdBaseStationInfoBo extends BaseEntity { + + /** + * 主键标识 + */ + private Long stationId; + + /** + * 工位编号 + */ + @NotBlank(message = "工位编号不能为空", groups = {AddGroup.class, EditGroup.class}) + private String stationCode; + + /** + * 工位名称 + */ + @NotBlank(message = "工位名称不能为空", groups = {AddGroup.class, EditGroup.class}) + private String stationName; + + /** + * 工位类型 + */ + @NotBlank(message = "工位类型不能为空", groups = {AddGroup.class, EditGroup.class}) + private String stationType; + + /** + * 所属工序 + */ + @NotNull(message = "所属工序不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long processId; + + /** + * 单位生产时间(秒) + */ + private Long productionTime; + + /** + * AGV编号 + */ + private String agvCode; + + /** + * IP地址 + */ + private String ipAddress; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + private Long machineId; + +// private List prodBaseStationMaterialtypeList; +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseMaterialInfoVo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseMaterialInfoVo.java new file mode 100644 index 00000000..04aef5fc --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseMaterialInfoVo.java @@ -0,0 +1,386 @@ +package org.dromara.qms.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.qms.domain.BaseMaterialInfo; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 物料信息视图对象 base_material_info + * + * @author zangch + * @date 2025-01-07 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BaseMaterialInfo.class) +public class BaseMaterialInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long materialId; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * ERP信息 + */ + @ExcelProperty(value = "ERP信息") + private String erpId; + + /** + * 物料编码 + */ + @ExcelProperty(value = "物料编码") + private String materialCode; + + /** + * 旧物料编码 + */ + @ExcelProperty(value = "旧物料编码") + private String oldMaterialCode; + + /** + * 物料名称 + */ + @ExcelProperty(value = "物料名称") + private String materialName; + + /** + * 物料类型ID + */ + @ExcelProperty(value = "物料类型ID") + private Long materialTypeId; + + /** + * 物料大类(字典改为数据库表) + */ + private String materialCategoryId; + + /** + * 物料小类 + */ + @ExcelProperty(value = "物料小类") + private String materialSubclass; + + /** + * 批次标识(0否 1是) + */ + @ExcelProperty(value = "批次标识(0否 1是)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_batch_flag") + private String batchFlag; + + /** + * 小批次数量 + */ + @ExcelProperty(value = "小批次数量") + private Long batchAmount; + + /** + * 计量单位ID + */ + @ExcelProperty(value = "计量单位ID") + private Long materialUnitId; + + /** + * 计量单位名称 + */ + @ExcelProperty(value = "计量单位名称") + private String materialUnit; + + /** + * 物料组 + */ + @ExcelProperty(value = "物料组") + private String materialMatkl; + + /** + * 物料规格 + */ + @ExcelProperty(value = "物料规格") + private String materialSpec; + + /** + * 净重 + */ + @ExcelProperty(value = "净重") + private BigDecimal netWeight; + + /** + * 毛重 + */ + @ExcelProperty(value = "毛重") + private BigDecimal grossWeight; + + /** + * 绑定标识(1是 0否) + */ + @ExcelProperty(value = "绑定标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "always_flag") + private String alwaysFlag; + + /** + * 所属工厂 + */ + @ExcelProperty(value = "所属工厂") + private Long factoryId; + + /** + * 创建组织 + */ + @ExcelProperty(value = "创建组织") + private Long createOrgId; + + /** + * 使用组织 + */ + @ExcelProperty(value = "使用组织") + private Long useOrgId; + + /** + * 所属产线 + */ + @ExcelProperty(value = "所属产线") + private Long prodLineId; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + /** + * 删除标识(0否 1是) + */ + @ExcelProperty(value = "删除标识(0否 1是)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "deleted_flag") + private String deletedFlag; + + /** + * 采购计价单位 + */ + @ExcelProperty(value = "采购计价单位") + private Long purchasePriceUnitId; + + /** + * 审核日期 + */ + @ExcelProperty(value = "审核日期") + private Date approveDate; + + /** + * erp最后更新日期 + */ + @ExcelProperty(value = "erp最后更新日期") + private Date erpModifyDate; + + /** + * 最大库存数量 + */ + @ExcelProperty(value = "最大库存数量") + private Long maxStockAmount; + + /** + * 最小库存数量 + */ + @ExcelProperty(value = "最小库存数量") + private Long minStockAmount; + + /** + * 安全库存数量 + */ + @ExcelProperty(value = "安全库存数量") + private Long safeStockAmount; + + /** + * 申请标识(1是 0否) + */ + @ExcelProperty(value = "申请标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "apply_flag") + private String applyFlag; + + /** + * 物料分类(1ERP同步 2虚拟物料 3MES物料) + */ + @ExcelProperty(value = "物料分类", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "material_classfication") + private String materialClassfication; + + /** + * 自动出库标识(1是 0否) + */ + @ExcelProperty(value = "自动出库标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "auto_outstock_flag") + private String autoOutstockFlag; + + /** + * 辅料标识(1是 0否) + */ + @ExcelProperty(value = "辅料标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_accessories_flag") + private String accessoriesFlag; + + /** + * 低值易耗品标识(1是 0否) + */ + @ExcelProperty(value = "低值易耗品标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_low_value_consumable_flag") + private String lowValueConsumableFlag; + + /** + * 品牌 + */ + @ExcelProperty(value = "品牌") + private String brand; + + /** + * 层级 + */ + @ExcelProperty(value = "层级") + private String plyrating; + + /** + * 花纹 + */ + @ExcelProperty(value = "花纹") + private String pattern; + + /** + * 速度级别 + */ + @ExcelProperty(value = "速度级别") + private String speedLevel; + + /** + * 负荷载重 + */ + @ExcelProperty(value = "负荷载重") + private String load; + + /** + * 轮胎标记(1全钢胎 2半钢胎 3工程胎) + */ + @ExcelProperty(value = "轮胎标记", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "tire_markings") + private String tireMarkings; + + /** + * 最小停放时间(秒) + */ + @ExcelProperty(value = "最小停放时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "秒=") + private Long minParkingTime; + + /** + * 最大停放时间(秒) + */ + @ExcelProperty(value = "最大停放时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "秒=") + private Long maxParkingTime; + + /** + * 标准重量 + */ + @ExcelProperty(value = "标准重量") + private BigDecimal standardWeight; + + /** + * 标准重量上限 + */ + @ExcelProperty(value = "标准重量上限") + private BigDecimal weightUpperLimit; + + /** + * 标准重量下限 + */ + @ExcelProperty(value = "标准重量下限") + private BigDecimal weightLowerLimit; + + /** + * 内胎标记(0无 1有) + */ + @ExcelProperty(value = "内胎标记(0无 1有)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "inner_tube_flag") + private String innerTubeFlag; + + /** + * 销售类型(0内销 1外销) + */ + @ExcelProperty(value = "销售类型(0内销 1外销)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sale_type") + private String saleType; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + @ExcelProperty(value = "创建部门") + private Long createDept; + + /** + * 创建人 + */ + @ExcelProperty(value = "创建人") + private Long createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新人 + */ + @ExcelProperty(value = "更新人") + private Long updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + /** + * 所属工厂 + */ + @ExcelProperty(value = "所属工厂") + private String factoryName;//映射字段 + + /** + * 物料类型名称 + */ + @ExcelProperty(value = "物料类型名称") + private String matrialTypeName;//映射字段 + + /** + * 物料大类名称 + */ + @ExcelProperty(value = "物料大类名称") + private String materialCategoryName;//映射字段 + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseMaterialTypeVo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseMaterialTypeVo.java new file mode 100644 index 00000000..c86acf6f --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseMaterialTypeVo.java @@ -0,0 +1,141 @@ +package org.dromara.qms.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.qms.domain.BaseMaterialType; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 物料类型信息视图对象 base_material_type + * + * @author zangch + * @date 2025-01-07 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BaseMaterialType.class) +public class BaseMaterialTypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 物料类型ID + */ + @ExcelProperty(value = "物料类型ID") + private Long matrialTypeId; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 父级标识 + */ + @ExcelProperty(value = "父级标识") + private Long parentId; + + /** + * 物料类型编号 + */ + @ExcelProperty(value = "物料类型编号") + private String matrialTypeCode; + + /** + * 物料类型名称 + */ + @ExcelProperty(value = "物料类型名称") + private String matrialTypeName; + + /** + * 祖级列表 + */ + @ExcelProperty(value = "祖级列表") + private String ancestors; + + /** + * 物料大类ID + */ +// @ExcelProperty(value = "物料大类(1原材料 2半成品 3成品)", converter = ExcelDictConvert.class) +// @ExcelDictFormat(dictType = "mes_material_categories") + private Long materialCategoryId; +// private String materialCategories; + + /** + * 物料小类 + */ + @ExcelProperty(value = "物料小类") + private String materialSubclass; + + /** + * 工序ID + */ + @ExcelProperty(value = "工序ID") + private Long processId; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + @ExcelProperty(value = "创建部门") + private Long createDept; + + /** + * 创建人 + */ + @ExcelProperty(value = "创建人") + private Long createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新人 + */ + @ExcelProperty(value = "更新人") + private Long updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + + /** + * 工序名称 + */ +// @ExcelProperty(value = "工序名称") +// private String processName;//工序名称 + + /** + * 大类名称 + */ + @ExcelProperty(value = "工序名称") + private String materialCategoryName;//映射字段 +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseSupplierInfoVo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseSupplierInfoVo.java new file mode 100644 index 00000000..7f452c18 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/BaseSupplierInfoVo.java @@ -0,0 +1,116 @@ +package org.dromara.qms.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.qms.domain.BaseSupplierInfo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 供应商信息视图对象 base_supplier_info + * + * @author ZangCH + * @date 2025-01-07 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BaseSupplierInfo.class) +public class BaseSupplierInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long supplierId; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 供应商编号 + */ + @ExcelProperty(value = "供应商编号") + private String supplierCode; + + /** + * 供应商名称 + */ + @ExcelProperty(value = "供应商名称") + private String supplierName; + + /** + * erp的主键 + */ + @ExcelProperty(value = "erp的主键") + private Long erpId; + + /** + * 激活状态(1启用 0停用) + */ + @ExcelProperty(value = "激活状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String supplierStatus; + + /** + * 审核日期 + */ + @ExcelProperty(value = "审核日期") + private Date auditDate; + + /** + * erp最后更新时间 + */ + @ExcelProperty(value = "erp最后更新时间") + private Date erpModifyDate; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + @ExcelProperty(value = "创建部门") + private Long createDept; + + /** + * 创建人 + */ + @ExcelProperty(value = "创建人") + private Long createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新人 + */ + @ExcelProperty(value = "更新人") + private Long updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/ProdBaseProcessInfoVo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/ProdBaseProcessInfoVo.java new file mode 100644 index 00000000..38a7845e --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/ProdBaseProcessInfoVo.java @@ -0,0 +1,196 @@ +package org.dromara.qms.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.qms.domain.ProdBaseProcessInfo; + + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + + +/** + * 工序信息视图对象 prod_base_process_info + * + * @author Yinq + * @date 2025-05-29 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ProdBaseProcessInfo.class) +public class ProdBaseProcessInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long processId; + + /** + * 工序编号 + */ + @ExcelProperty(value = "工序编号") + private String processCode; + + /** + * 工序名称 + */ + @ExcelProperty(value = "工序名称") + private String processName; + + /** + * 工序类别(1生产工序 2质检工序) + */ + @ExcelProperty(value = "工序类别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "process_type") + private String processType; + + /** + * 工序顺序(弃用) + */ + @ExcelProperty(value = "工序顺序", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "弃=用") + private Long processQueue; + + /** + * 单位生产时间(秒);页面显示小时和分钟,就是标准工时,完成一个产品的制造所需的时间 + */ + @ExcelProperty(value = "单位生产时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "秒=") + private Long productionTime; + + /** + * 车间ID + */ + @ExcelProperty(value = "车间ID") + private Long workshopId; + + /** + * 委外标识(1自制 2委外) + */ + @ExcelProperty(value = "委外标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_outsourcing_flag") + private String outsourcingFlag; + + /** + * 工序生产类型(1投料 2加工 3装配) + */ + @ExcelProperty(value = "工序生产类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_process_production_type") + private String processProductionType; + + /** + * 默认产出率(%),公式:合格数/投入数 + */ + @ExcelProperty(value = "默认产出率", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private Long defaultYieldRate; + + /** + * 损耗率(%),公式:废品/不可修复不良品占比 + */ + @ExcelProperty(value = "损耗率", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private Long lossRate; + + /** + * 返修率(%),公式:返修品/投入数 + */ + @ExcelProperty(value = "返修率", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private Long reworkRate; + + /** + * 领料方式(1领料单 2申请领料 3生产叫料) + */ + @ExcelProperty(value = "领料方式", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_material_method") + private String materialMethod; + + /** + * 委外提前期(秒) + */ + @ExcelProperty(value = "委外提前期", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "秒=") + private Long leadTime; + + /** + * 准备时间(秒) + */ + @ExcelProperty(value = "准备时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "秒=") + private Long setupTime; + + /** + * 加工时间(秒) + */ + @ExcelProperty(value = "加工时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "秒=") + private Long processingTime; + + /** + * 拆卸时间(秒) + */ + @ExcelProperty(value = "拆卸时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "秒=") + private Long disassemblyTime; + + /** + * 理论生产节拍(秒/件) + */ + @ExcelProperty(value = "理论生产节拍", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "秒=/件") + private Long theoreticalCycleTime; + + /** + * 质检方式(1免检 2自检 3质量检验) + */ + @ExcelProperty(value = "质检方式", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_inspection_method") + private String inspectionMethod; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + +// /** +// * 工序关联产线信息 +// */ +// @ExcelIgnore +// private List prodBaseProcessProdlineVoList;//工序关联产线信息,映射字段 +// +// /** 工序关联人员信息 */ +// @ExcelIgnore +// private List prodBaseProcessUserVoList;//工序关联人员信息,映射字段 + + @ExcelIgnore + private String processPercentageVo;//映射字段 + + /** + * 车间名称 + */ + private String workshopName; + + /** + * 工序资源List + */ +// List prodBaseProcessResourceList; +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/ProdBaseStationInfoVo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/ProdBaseStationInfoVo.java new file mode 100644 index 00000000..2283b119 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/ProdBaseStationInfoVo.java @@ -0,0 +1,144 @@ +package org.dromara.qms.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.qms.domain.ProdBaseStationInfo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 工位信息视图对象 prod_base_station_info + * + * @author Yinq + * @date 2025-01-06 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ProdBaseStationInfo.class) +public class ProdBaseStationInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long stationId; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 工位编号 + */ + @ExcelProperty(value = "工位编号") + private String stationCode; + + /** + * 工位名称 + */ + @ExcelProperty(value = "工位名称") + private String stationName; + + /** + * 工位类型(1生产工位 2质检工位) + */ + @ExcelProperty(value = "工位类型(1生产工位 2质检工位)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "station_type") + private String stationType; + + /** + * 所属工序 + */ + @ExcelProperty(value = "所属工序") + private Long processId; + + /** + * 所属工序名称 + */ + @ExcelProperty(value = "所属工序名称") + private String processName; + + /** + * 单位生产时间(秒) + */ + @ExcelProperty(value = "单位生产时间(秒)", converter = ExcelDictConvert.class) + private Long productionTime; + + /** + * AGV编号 + */ + @ExcelProperty(value = "AGV编号") + private String agvCode; + + /** + * IP地址 + */ + @ExcelProperty(value = "IP地址") + private String ipAddress; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "station_type") + private String activeFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + @ExcelProperty(value = "创建部门") + private Long createDept; + + /** + * 创建人 + */ + @ExcelProperty(value = "创建人") + private Long createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新人 + */ + @ExcelProperty(value = "更新人") + private Long updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + private Long machineId; + + /** + * 机台名称 + */ + @ExcelProperty(value = "机台名称") + private String machineName; + +// private List prodBaseStationMaterialtypeList; +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseMaterialInfoMapper.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseMaterialInfoMapper.java new file mode 100644 index 00000000..748d9703 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseMaterialInfoMapper.java @@ -0,0 +1,27 @@ +package org.dromara.qms.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.qms.domain.BaseMaterialInfo; +import org.dromara.qms.domain.bo.BaseMaterialInfoBo; +import org.dromara.qms.domain.vo.BaseMaterialInfoVo; +import org.dromara.pda.api.model.BaseMaterial; + +import java.util.List; + +/** + * 物料信息Mapper接口 + * + * @author zangch + * @date 2025-01-07 + */ +public interface BaseMaterialInfoMapper extends BaseMapperPlus { + + BaseMaterial queryByMaterialCode(String materialCode); + + /** + * 查询物料信息列表,join material_type + * @param baseMaterialInfoBo + * @return + */ + List selectMaterialJoinList(BaseMaterialInfoBo baseMaterialInfoBo); +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseMaterialTypeMapper.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseMaterialTypeMapper.java new file mode 100644 index 00000000..8df0adbe --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseMaterialTypeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.qms.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.qms.domain.BaseMaterialType; +import org.dromara.qms.domain.vo.BaseMaterialTypeVo; + +/** + * 物料类型信息Mapper接口 + * + * @author zangch + * @date 2025-01-07 + */ +public interface BaseMaterialTypeMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseSupplierInfoMapper.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseSupplierInfoMapper.java new file mode 100644 index 00000000..ef4437a8 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/BaseSupplierInfoMapper.java @@ -0,0 +1,15 @@ +package org.dromara.qms.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.qms.domain.BaseSupplierInfo; +import org.dromara.qms.domain.vo.BaseSupplierInfoVo; + +/** + * 供应商信息Mapper接口 + * + * @author ZangCH + * @date 2025-01-07 + */ +public interface BaseSupplierInfoMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/ProdBaseProcessInfoMapper.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/ProdBaseProcessInfoMapper.java new file mode 100644 index 00000000..2c2c515e --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/ProdBaseProcessInfoMapper.java @@ -0,0 +1,99 @@ +package org.dromara.qms.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.qms.domain.ProdBaseProcessInfo; +import org.dromara.qms.domain.bo.ProdBaseProcessInfoBo; + +import org.dromara.qms.domain.vo.ProdBaseProcessInfoVo; + +import java.util.List; + +/** + * 工序信息Mapper接口 + * + * @author Yinq + * @date 2025-01-06 + */ +public interface ProdBaseProcessInfoMapper extends BaseMapperPlus { + + /** + * 查询工序信息 + * + * @param processId 工序信息主键 + * @return 工序信息 + */ + public ProdBaseProcessInfo selectProdBaseProcessInfoByProcessId(Long processId); + + /** + * 获取工序用户信息详细信息 + * @param processId 工序信息主键 + * @return 工序信息 + */ + public ProdBaseProcessInfo selectProdBaseProcessInfoUserByProcessId(Long processId); + + /** + * 查询工序信息列表 + * + * @param prodBaseProcessInfo 工序信息 + * @return 工序信息集合 + */ + public List selectProdBaseProcessInfoList(ProdBaseProcessInfoBo prodBaseProcessInfo); + + /** + * 新增工序信息 + * + * @param prodBaseProcessInfo 工序信息 + * @return 结果 + */ + public int insertProdBaseProcessInfo(ProdBaseProcessInfoBo prodBaseProcessInfo); + + /** + * 修改工序信息 + * + * @param prodBaseProcessInfo 工序信息 + * @return 结果 + */ + public int updateProdBaseProcessInfo(ProdBaseProcessInfoBo prodBaseProcessInfo); + + /** + * 删除工序信息 + * + * @param processId 工序信息主键 + * @return 结果 + */ + public int deleteProdBaseProcessInfoByProcessId(Long processId); + + /** + * 批量删除工序信息 + * + * @param processIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProdBaseProcessInfoByProcessIds(Long[] processIds); + + /** + * 批量删除工序关联产线 + * + * @param processIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProdBaseProcessProdlineByProcessIds(Long[] processIds); + + /** + * 批量新增工序关联产线 + * + * @param prodBaseProcessProdlineList 工序关联产线列表 + * @return 结果 + */ +// public int batchProdBaseProcessProdline(List prodBaseProcessProdlineList); + + + /** + * 通过工序信息主键删除工序关联产线信息 + * + * @param processId 工序信息ID + * @return 结果 + */ + public int deleteProdBaseProcessProdlineByProcessId(Long processId); + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/ProdBaseStationInfoMapper.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/ProdBaseStationInfoMapper.java new file mode 100644 index 00000000..32d86062 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/ProdBaseStationInfoMapper.java @@ -0,0 +1,15 @@ +package org.dromara.qms.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.qms.domain.ProdBaseStationInfo; +import org.dromara.qms.domain.vo.ProdBaseStationInfoVo; + +/** + * 工位信息Mapper接口 + * + * @author Yinq + * @date 2025-01-06 + */ +public interface ProdBaseStationInfoMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IBaseMaterialInfoService.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IBaseMaterialInfoService.java new file mode 100644 index 00000000..ee835674 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IBaseMaterialInfoService.java @@ -0,0 +1,68 @@ +package org.dromara.qms.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.qms.domain.bo.BaseMaterialInfoBo; +import org.dromara.qms.domain.vo.BaseMaterialInfoVo; + +import java.util.Collection; +import java.util.List; + +/** + * 物料信息Service接口 + * + * @author zangch + * @date 2025-01-07 + */ +public interface IBaseMaterialInfoService { + + /** + * 查询物料信息 + * + * @param materialId 主键 + * @return 物料信息 + */ + BaseMaterialInfoVo queryById(Long materialId); + + /** + * 分页查询物料信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物料信息分页列表 + */ + TableDataInfo queryPageList(BaseMaterialInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的物料信息列表 + * + * @param bo 查询条件 + * @return 物料信息列表 + */ + List queryList(BaseMaterialInfoBo bo); + + /** + * 新增物料信息 + * + * @param bo 物料信息 + * @return 是否新增成功 + */ + Boolean insertByBo(BaseMaterialInfoBo bo); + + /** + * 修改物料信息 + * + * @param bo 物料信息 + * @return 是否修改成功 + */ + Boolean updateByBo(BaseMaterialInfoBo bo); + + /** + * 校验并批量删除物料信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IBaseSupplierInfoService.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IBaseSupplierInfoService.java new file mode 100644 index 00000000..e0372ee9 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IBaseSupplierInfoService.java @@ -0,0 +1,68 @@ +package org.dromara.qms.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.qms.domain.bo.BaseSupplierInfoBo; +import org.dromara.qms.domain.vo.BaseSupplierInfoVo; + +import java.util.Collection; +import java.util.List; + +/** + * 供应商信息Service接口 + * + * @author ZangCH + * @date 2025-01-07 + */ +public interface IBaseSupplierInfoService { + + /** + * 查询供应商信息 + * + * @param supplierId 主键 + * @return 供应商信息 + */ + BaseSupplierInfoVo queryById(Long supplierId); + + /** + * 分页查询供应商信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 供应商信息分页列表 + */ + TableDataInfo queryPageList(BaseSupplierInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的供应商信息列表 + * + * @param bo 查询条件 + * @return 供应商信息列表 + */ + List queryList(BaseSupplierInfoBo bo); + + /** + * 新增供应商信息 + * + * @param bo 供应商信息 + * @return 是否新增成功 + */ + Boolean insertByBo(BaseSupplierInfoBo bo); + + /** + * 修改供应商信息 + * + * @param bo 供应商信息 + * @return 是否修改成功 + */ + Boolean updateByBo(BaseSupplierInfoBo bo); + + /** + * 校验并批量删除供应商信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IProdBaseProcessInfoService.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IProdBaseProcessInfoService.java new file mode 100644 index 00000000..830a77a3 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IProdBaseProcessInfoService.java @@ -0,0 +1,76 @@ +package org.dromara.qms.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.qms.domain.bo.ProdBaseProcessInfoBo; +import org.dromara.qms.domain.vo.ProdBaseProcessInfoVo; + +import java.util.Collection; +import java.util.List; + +/** + * 工序信息Service接口 + * + * @author Yinq + * @date 2025-01-06 + */ +public interface IProdBaseProcessInfoService { + + /** + * 查询工序信息 + * + * @param processId 主键 + * @return 工序信息 + */ + ProdBaseProcessInfoVo queryById(Long processId); + + /** + * 分页查询工序信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工序信息分页列表 + */ + TableDataInfo queryPageList(ProdBaseProcessInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的工序信息列表 + * + * @param bo 查询条件 + * @return 工序信息列表 + */ + List queryList(ProdBaseProcessInfoBo bo); + + /** + * 新增工序信息 + * + * @param bo 工序信息 + * @return 是否新增成功 + */ + Boolean insertByBo(ProdBaseProcessInfoBo bo); + + /** + * 修改工序信息 + * + * @param bo 工序信息 + * @return 是否修改成功 + */ + Boolean updateByBo(ProdBaseProcessInfoBo bo); + + /** + * 修改工序信息关联用户 + * + * @param bo 工序信息 + * @return 是否修改成功 + */ + Boolean updateByBoUser(ProdBaseProcessInfoBo bo); + + /** + * 校验并批量删除工序信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IProdBaseStationInfoService.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IProdBaseStationInfoService.java new file mode 100644 index 00000000..d96fa35f --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IProdBaseStationInfoService.java @@ -0,0 +1,68 @@ +package org.dromara.qms.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.qms.domain.bo.ProdBaseStationInfoBo; +import org.dromara.qms.domain.vo.ProdBaseStationInfoVo; + +import java.util.Collection; +import java.util.List; + +/** + * 工位信息Service接口 + * + * @author Yinq + * @date 2025-01-06 + */ +public interface IProdBaseStationInfoService { + + /** + * 查询工位信息 + * + * @param stationId 主键 + * @return 工位信息 + */ + ProdBaseStationInfoVo queryById(Long stationId); + + /** + * 分页查询工位信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工位信息分页列表 + */ + TableDataInfo queryPageList(ProdBaseStationInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的工位信息列表 + * + * @param bo 查询条件 + * @return 工位信息列表 + */ + List queryList(ProdBaseStationInfoBo bo); + + /** + * 新增工位信息 + * + * @param bo 工位信息 + * @return 是否新增成功 + */ + Boolean insertByBo(ProdBaseStationInfoBo bo); + + /** + * 修改工位信息 + * + * @param bo 工位信息 + * @return 是否修改成功 + */ + Boolean updateByBo(ProdBaseStationInfoBo bo); + + /** + * 校验并批量删除工位信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/BaseMaterialInfoServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/BaseMaterialInfoServiceImpl.java new file mode 100644 index 00000000..806f6990 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/BaseMaterialInfoServiceImpl.java @@ -0,0 +1,244 @@ +package org.dromara.qms.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.qms.domain.BaseMaterialType; +import org.dromara.qms.domain.bo.BaseMaterialInfoBo; +import org.dromara.qms.domain.vo.BaseMaterialInfoVo; +import org.dromara.qms.mapper.BaseMaterialInfoMapper; +import org.dromara.qms.service.IBaseMaterialInfoService; +import org.dromara.qms.domain.BaseMaterialInfo; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 物料信息Service业务层处理 + * + * @author zangch + * @date 2025-01-07 + */ +@RequiredArgsConstructor +@Service +public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService { + + private final BaseMaterialInfoMapper baseMapper; + + + /** + * 查询物料信息 + * + * @param materialId 主键 + * @return 物料信息 + */ + @Override + public BaseMaterialInfoVo queryById(Long materialId){ + return baseMapper.selectVoById(materialId); + } + + /** + * 分页查询物料信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物料信息分页列表 + */ + @Override + public TableDataInfo queryPageList(BaseMaterialInfoBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的物料信息列表 + * + * @param bo 查询条件 + * @return 物料信息列表 + */ + @Override + public List queryList(BaseMaterialInfoBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(BaseMaterialInfoBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseMaterialInfo.class) + .selectAll(BaseMaterialInfo.class) + +// // 关联查询工厂信息 +// .select(ProdBaseFactoryInfo::getFactoryName) +// .leftJoin(ProdBaseFactoryInfo.class, ProdBaseFactoryInfo::getFactoryId, BaseMaterialInfo::getFactoryId) +// + //关联查询物料类型名称 + .select(BaseMaterialType::getMatrialTypeName) + //注意"e":BaseMaterialType实体类中为matrialTypeId,BaseMaterialInfo实体类中为materialTypeId + .leftJoin(BaseMaterialType.class, BaseMaterialType::getMatrialTypeId, BaseMaterialInfo::getMaterialTypeId) +// +///* //关联计量单位信息 +// .select(BaseMeasurementUnitInfo::getUnitName) +// .leftJoin(BaseMeasurementUnitInfo.class, BaseMeasurementUnitInfo::getUnitId, BaseMaterialInfo::getMaterialUnitId)*/ +// +// //关联物料大类信息(物料大类从字典改为了数据库表) +// .select(BaseMaterialCategory::getMaterialCategoryName) +// .leftJoin(BaseMaterialCategory.class, BaseMaterialCategory::getMaterialCategoryId, BaseMaterialInfo::getMaterialCategoryId) + + + .eq(bo.getMaterialId() != null, BaseMaterialInfo::getMaterialId, bo.getMaterialId()) + .eq(StringUtils.isNotBlank(bo.getErpId()), BaseMaterialInfo::getErpId, bo.getErpId()) + .like(StringUtils.isNotBlank(bo.getMaterialCode()), BaseMaterialInfo::getMaterialCode, bo.getMaterialCode()) + .eq(StringUtils.isNotBlank(bo.getOldMaterialCode()), BaseMaterialInfo::getOldMaterialCode, bo.getOldMaterialCode()) + .like(StringUtils.isNotBlank(bo.getMaterialName()), BaseMaterialInfo::getMaterialName, bo.getMaterialName()) + .eq(bo.getMaterialTypeId() != null, BaseMaterialInfo::getMaterialTypeId, bo.getMaterialTypeId()) + .eq(StringUtils.isNotBlank(bo.getMaterialCategoryId()), BaseMaterialInfo::getMaterialCategoryId, bo.getMaterialCategoryId()) + .eq(StringUtils.isNotBlank(bo.getMaterialSubclass()), BaseMaterialInfo::getMaterialSubclass, bo.getMaterialSubclass()) + .eq(StringUtils.isNotBlank(bo.getBatchFlag()), BaseMaterialInfo::getBatchFlag, bo.getBatchFlag()) + .eq(bo.getBatchAmount() != null, BaseMaterialInfo::getBatchAmount, bo.getBatchAmount()) + .eq(bo.getMaterialUnitId() != null, BaseMaterialInfo::getMaterialUnitId, bo.getMaterialUnitId()) + .eq(StringUtils.isNotBlank(bo.getMaterialUnit()), BaseMaterialInfo::getMaterialUnit, bo.getMaterialUnit()) + .eq(StringUtils.isNotBlank(bo.getMaterialMatkl()), BaseMaterialInfo::getMaterialMatkl, bo.getMaterialMatkl()) + .eq(StringUtils.isNotBlank(bo.getMaterialSpec()), BaseMaterialInfo::getMaterialSpec, bo.getMaterialSpec()) + .eq(bo.getNetWeight() != null, BaseMaterialInfo::getNetWeight, bo.getNetWeight()) + .eq(bo.getGrossWeight() != null, BaseMaterialInfo::getGrossWeight, bo.getGrossWeight()) + .eq(StringUtils.isNotBlank(bo.getAlwaysFlag()), BaseMaterialInfo::getAlwaysFlag, bo.getAlwaysFlag()) + .eq(bo.getFactoryId() != null, BaseMaterialInfo::getFactoryId, bo.getFactoryId()) + .eq(bo.getCreateOrgId() != null, BaseMaterialInfo::getCreateOrgId, bo.getCreateOrgId()) + .eq(bo.getUseOrgId() != null, BaseMaterialInfo::getUseOrgId, bo.getUseOrgId()) + .eq(bo.getProdLineId() != null, BaseMaterialInfo::getProdLineId, bo.getProdLineId()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseMaterialInfo::getActiveFlag, bo.getActiveFlag()) + .eq(StringUtils.isNotBlank(bo.getDeletedFlag()), BaseMaterialInfo::getDeletedFlag, bo.getDeletedFlag()) + .eq(bo.getPurchasePriceUnitId() != null, BaseMaterialInfo::getPurchasePriceUnitId, bo.getPurchasePriceUnitId()) + .between(params.get("beginApproveDate") != null && params.get("endApproveDate") != null, + BaseMaterialInfo::getApproveDate ,params.get("beginApproveDate"), params.get("endApproveDate")) + .eq(bo.getErpModifyDate() != null, BaseMaterialInfo::getErpModifyDate, bo.getErpModifyDate()) + .eq(bo.getMaxStockAmount() != null, BaseMaterialInfo::getMaxStockAmount, bo.getMaxStockAmount()) + .eq(bo.getMinStockAmount() != null, BaseMaterialInfo::getMinStockAmount, bo.getMinStockAmount()) + .eq(bo.getSafeStockAmount() != null, BaseMaterialInfo::getSafeStockAmount, bo.getSafeStockAmount()) + .eq(StringUtils.isNotBlank(bo.getApplyFlag()), BaseMaterialInfo::getApplyFlag, bo.getApplyFlag()) + .eq(StringUtils.isNotBlank(bo.getMaterialClassfication()), BaseMaterialInfo::getMaterialClassfication, bo.getMaterialClassfication()) + .eq(StringUtils.isNotBlank(bo.getAutoOutstockFlag()), BaseMaterialInfo::getAutoOutstockFlag, bo.getAutoOutstockFlag()) + .eq(StringUtils.isNotBlank(bo.getAccessoriesFlag()), BaseMaterialInfo::getAccessoriesFlag, bo.getAccessoriesFlag()) + .eq(StringUtils.isNotBlank(bo.getLowValueConsumableFlag()), BaseMaterialInfo::getLowValueConsumableFlag, bo.getLowValueConsumableFlag()) + .eq(StringUtils.isNotBlank(bo.getBrand()), BaseMaterialInfo::getBrand, bo.getBrand()) + .eq(StringUtils.isNotBlank(bo.getPlyrating()), BaseMaterialInfo::getPlyrating, bo.getPlyrating()) + .eq(StringUtils.isNotBlank(bo.getPattern()), BaseMaterialInfo::getPattern, bo.getPattern()) + .eq(StringUtils.isNotBlank(bo.getSpeedLevel()), BaseMaterialInfo::getSpeedLevel, bo.getSpeedLevel()) + .eq(StringUtils.isNotBlank(bo.getLoad()), BaseMaterialInfo::getLoad, bo.getLoad()) + .eq(StringUtils.isNotBlank(bo.getTireMarkings()), BaseMaterialInfo::getTireMarkings, bo.getTireMarkings()) + .eq(bo.getMinParkingTime() != null, BaseMaterialInfo::getMinParkingTime, bo.getMinParkingTime()) + .eq(bo.getMaxParkingTime() != null, BaseMaterialInfo::getMaxParkingTime, bo.getMaxParkingTime()) + .eq(bo.getStandardWeight() != null, BaseMaterialInfo::getStandardWeight, bo.getStandardWeight()) + .eq(bo.getWeightUpperLimit() != null, BaseMaterialInfo::getWeightUpperLimit, bo.getWeightUpperLimit()) + .eq(bo.getWeightLowerLimit() != null, BaseMaterialInfo::getWeightLowerLimit, bo.getWeightLowerLimit()) + .eq(StringUtils.isNotBlank(bo.getInnerTubeFlag()), BaseMaterialInfo::getInnerTubeFlag, bo.getInnerTubeFlag()) + .eq(StringUtils.isNotBlank(bo.getSaleType()), BaseMaterialInfo::getSaleType, bo.getSaleType()) + .orderByDesc(BaseMaterialInfo::getCreateTime); + return lqw; + } + + /** + * 新增物料信息 + * + * @param bo 物料信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BaseMaterialInfoBo bo) { + BaseMaterialInfo add = MapstructUtils.convert(bo, BaseMaterialInfo.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setMaterialId(add.getMaterialId()); + } + return flag; + } + + /** + * 修改物料信息 + * + * @param bo 物料信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BaseMaterialInfoBo bo) { + BaseMaterialInfo update = MapstructUtils.convert(bo, BaseMaterialInfo.class); + validEntityBeforeSave(update); + + //物料上的物料类型修改时 校验原类型是否关联的BOM + Long materialTypeId = bo.getMaterialTypeId();//修改后的物料类型id + //要修改的物料 + Long materialId = bo.getMaterialId(); + BaseMaterialInfoVo baseMaterialInfoVo = baseMapper.selectVoById(materialId); + //物料绑定的BOM +// MPJLambdaWrapper bom = new MPJLambdaWrapper<>(); +// bom.eq(ProdMaterialBom::getMaterialId, materialId); +// List boms = prodMaterialBomMapper.selectList(bom); +// if ( !materialTypeId.equals(baseMaterialInfoVo.getMaterialTypeId()) +// && !ObjectUtils.isEmpty(boms)) { +// throw new ServiceException("已绑定物料BOM,请勿更改物料类型"); +// } + + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BaseMaterialInfo entity){ + //TODO 做一些数据校验,如唯一约束 + + //编码校验 + if (StringUtils.isNotBlank(entity.getMaterialCode())) { + BaseMaterialInfoBo query = new BaseMaterialInfoBo(); + query.setMaterialCode(entity.getMaterialCode()); + MPJLambdaWrapper lqw = buildQueryWrapper(query); + BaseMaterialInfo baseMaterialInfo = baseMapper.selectOne(lqw); + if (!ObjectUtils.isEmpty(baseMaterialInfo) + && !baseMaterialInfo.getMaterialId().equals(entity.getMaterialId())) { + throw new ServiceException("编码已存在"); + } + } + + //名称校验 + if (StringUtils.isNotBlank(entity.getMaterialName())) { + BaseMaterialInfoBo query = new BaseMaterialInfoBo(); + query.setMaterialName(entity.getMaterialName()); + MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseMaterialInfo.class) + .selectAll(BaseMaterialInfo.class) + //buildQueryWrapper中getMaterialName是like,相似搜索 + .eq(StringUtils.isNotBlank(query.getMaterialName()), BaseMaterialInfo::getMaterialName, query.getMaterialName()); + BaseMaterialInfo baseMaterialInfo = baseMapper.selectOne(lqw); + if ( !ObjectUtils.isEmpty(baseMaterialInfo) + && !baseMaterialInfo.getMaterialId().equals(entity.getMaterialId())) { + throw new ServiceException("名称已存在"); + } + } + + } + + /** + * 校验并批量删除物料信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/BaseSupplierInfoServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/BaseSupplierInfoServiceImpl.java new file mode 100644 index 00000000..c8aa972e --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/BaseSupplierInfoServiceImpl.java @@ -0,0 +1,150 @@ +package org.dromara.qms.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.qms.domain.BaseSupplierInfo; +import org.dromara.qms.domain.bo.BaseSupplierInfoBo; +import org.dromara.qms.domain.vo.BaseSupplierInfoVo; +import org.dromara.qms.mapper.BaseSupplierInfoMapper; +import org.dromara.qms.service.IBaseSupplierInfoService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 供应商信息Service业务层处理 + * + * @author ZangCH + * @date 2025-01-07 + */ +@RequiredArgsConstructor +@Service +public class BaseSupplierInfoServiceImpl implements IBaseSupplierInfoService { + + private final BaseSupplierInfoMapper baseMapper; + + /** + * 查询供应商信息 + * + * @param supplierId 主键 + * @return 供应商信息 + */ + @Override + public BaseSupplierInfoVo queryById(Long supplierId){ + return baseMapper.selectVoById(supplierId); + } + + /** + * 分页查询供应商信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 供应商信息分页列表 + */ + @Override + public TableDataInfo queryPageList(BaseSupplierInfoBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的供应商信息列表 + * + * @param bo 查询条件 + * @return 供应商信息列表 + */ + @Override + public List queryList(BaseSupplierInfoBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(BaseSupplierInfoBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseSupplierInfo.class) + .selectAll(BaseSupplierInfo.class) + .eq(bo.getSupplierId() != null, BaseSupplierInfo::getSupplierId, bo.getSupplierId()) + .eq(StringUtils.isNotBlank(bo.getSupplierCode()), BaseSupplierInfo::getSupplierCode, bo.getSupplierCode()) + .like(StringUtils.isNotBlank(bo.getSupplierName()), BaseSupplierInfo::getSupplierName, bo.getSupplierName()) + .eq(bo.getErpId() != null, BaseSupplierInfo::getErpId, bo.getErpId()) + .eq(StringUtils.isNotBlank(bo.getSupplierStatus()), BaseSupplierInfo::getSupplierStatus, bo.getSupplierStatus()) + .between(params.get("beginAuditDate") != null && params.get("endAuditDate") != null, + BaseSupplierInfo::getAuditDate ,params.get("beginAuditDate"), params.get("endAuditDate")) + .between(params.get("beginErpModifyDate") != null && params.get("endErpModifyDate") != null, + BaseSupplierInfo::getErpModifyDate ,params.get("beginErpModifyDate"), params.get("endErpModifyDate")) + .orderByDesc(BaseSupplierInfo::getCreateTime); + return lqw; + } + + /** + * 新增供应商信息 + * + * @param bo 供应商信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BaseSupplierInfoBo bo) { + BaseSupplierInfo add = MapstructUtils.convert(bo, BaseSupplierInfo.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setSupplierId(add.getSupplierId()); + } + return flag; + } + + /** + * 修改供应商信息 + * + * @param bo 供应商信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BaseSupplierInfoBo bo) { + BaseSupplierInfo update = MapstructUtils.convert(bo, BaseSupplierInfo.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BaseSupplierInfo entity){ + //TODO 做一些数据校验,如唯一约束 + //校验编码是否重复 + if (StringUtils.isNotBlank(entity.getSupplierCode())) { + BaseSupplierInfoBo query = new BaseSupplierInfoBo(); + query.setSupplierCode(entity.getSupplierCode()); + MPJLambdaWrapper lqw = buildQueryWrapper(query); + BaseSupplierInfo baseSupplierInfo = baseMapper.selectOne(lqw); + if (baseSupplierInfo != null && !baseSupplierInfo.getSupplierId().equals(entity.getSupplierId())) { + throw new ServiceException("编码已存在"); + } + } + } + + /** + * 校验并批量删除供应商信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/ProdBaseProcessInfoServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/ProdBaseProcessInfoServiceImpl.java new file mode 100644 index 00000000..347f28f0 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/ProdBaseProcessInfoServiceImpl.java @@ -0,0 +1,330 @@ +package org.dromara.qms.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.qms.domain.bo.ProdBaseProcessInfoBo; + +import org.dromara.qms.domain.vo.ProdBaseProcessInfoVo; + + +import org.dromara.qms.mapper.ProdBaseProcessInfoMapper; + +import org.dromara.qms.service.IProdBaseProcessInfoService; +import org.dromara.qms.domain.ProdBaseProcessInfo; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 工序信息Service业务层处理 + * + * @author Yinq + * @date 2025-01-06 + */ +@RequiredArgsConstructor +@Service +public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoService { + + private final ProdBaseProcessInfoMapper baseMapper; + +// private final ProdBaseProcessUserServiceImpl prodBaseProcessUserService; +// +// private final ProdBaseProcessProdLineServiceImpl prodBaseProcessProdlineService; +// +// private final ProdBaseProcessUserMapper prodBaseProcessUserMapper; +// private final ProdBaseProcessProdLineMapper prodBaseProcessProdlineMapper; +// +// private final ProdBaseProcessResourceMapper processResourceMapper; + + + /** + * 查询工序信息 + * + * @param processId 主键 + * @return 工序信息 + */ + @Override + public ProdBaseProcessInfoVo queryById(Long processId) { + ProdBaseProcessInfoVo prodBaseProcessInfoVo = baseMapper.selectVoById(processId); +// if (ObjectUtil.isNotEmpty(prodBaseProcessInfoVo)) { +// // 关联人员 +// ProdBaseProcessUserBo prodBaseProcessUserBo = new ProdBaseProcessUserBo(); +// prodBaseProcessUserBo.setProcessId(processId); +// List prodBaseProcessUserVoList = prodBaseProcessUserService.queryList(prodBaseProcessUserBo); +// // 关联人员若有数据,则赋值给prodBaseProcessInfoVo +// if (ObjectUtil.isNotEmpty(prodBaseProcessUserVoList)) +// prodBaseProcessInfoVo.setProdBaseProcessUserVoList(prodBaseProcessUserVoList); +// +// // 关联产线 +// ProdBaseProcessProdLineBo prodBaseProcessProdlineBo = new ProdBaseProcessProdLineBo(); +// prodBaseProcessProdlineBo.setProcessId(processId); +// List prodBaseProcessProdlineVoList = prodBaseProcessProdlineService.queryList(prodBaseProcessProdlineBo); +// // 关联产线若有数据,则赋值给prodBaseProcessInfoVo +// if (ObjectUtil.isNotEmpty(prodBaseProcessProdlineVoList)) +// prodBaseProcessInfoVo.setProdBaseProcessProdlineVoList(prodBaseProcessProdlineVoList); +// // 关联工序资源 +// MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseProcessResource.class); +// lqw.eq(ProdBaseProcessResource::getProcessId, processId); +// List prodBaseProcessResourceList = processResourceMapper.selectList(lqw); +// prodBaseProcessInfoVo.setProdBaseProcessResourceList(prodBaseProcessResourceList); +// } + return prodBaseProcessInfoVo; + } + + /** + * 分页查询工序信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工序信息分页列表 + */ + @Override + public TableDataInfo queryPageList(ProdBaseProcessInfoBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的工序信息列表 + * + * @param bo 查询条件 + * @return 工序信息列表 + */ + @Override + public List queryList(ProdBaseProcessInfoBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ProdBaseProcessInfoBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseProcessInfo.class) + .selectAll(ProdBaseProcessInfo.class) +// .select(ProdBaseWorkshopInfo::getWorkshopName) +// .leftJoin(ProdBaseWorkshopInfo.class, ProdBaseWorkshopInfo::getWorkshopId, ProdBaseProcessInfo::getWorkshopId) +/* // 关联人员 + .select(ProdBaseProcessUser::getUserId) + .select(ProdBaseProcessUser::getUserName) + .leftJoin(ProdBaseProcessUser.class, ProdBaseProcessUser::getProcessId, ProdBaseProcessInfo::getProcessId) + // 关联产线 + .select(ProdBaseProcessProdLine::getProdLineId) + .leftJoin(ProdBaseProcessProdLine.class, ProdBaseProcessProdLine::getProcessId, ProdBaseProcessInfo::getProcessId)*/ + .eq(bo.getProcessId() != null, ProdBaseProcessInfo::getProcessId, bo.getProcessId()) + .eq(StringUtils.isNotBlank(bo.getProcessCode()), ProdBaseProcessInfo::getProcessCode, bo.getProcessCode()) + .like(StringUtils.isNotBlank(bo.getProcessName()), ProdBaseProcessInfo::getProcessName, bo.getProcessName()) + .eq(StringUtils.isNotBlank(bo.getProcessType()), ProdBaseProcessInfo::getProcessType, bo.getProcessType()) + .eq(bo.getProcessQueue() != null, ProdBaseProcessInfo::getProcessQueue, bo.getProcessQueue()) + .eq(bo.getProductionTime() != null, ProdBaseProcessInfo::getProductionTime, bo.getProductionTime()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseProcessInfo::getActiveFlag, bo.getActiveFlag()) + .orderByAsc(ProdBaseProcessInfo::getProcessQueue); + return lqw; + } + + /** + * 新增工序信息 + * + * @param bo 工序信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ProdBaseProcessInfoBo bo) { + ProdBaseProcessInfo add = MapstructUtils.convert(bo, ProdBaseProcessInfo.class); +// List processResourceList = bo.getProdBaseProcessResourceList(); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setProcessId(add.getProcessId()); +// if (!processResourceList.isEmpty()) { +// for (ProdBaseProcessResource processResource : processResourceList) { +// processResource.setProcessId(add.getProcessId()); +// processResourceMapper.insert(processResource); +// } +// } + } + return flag; + } + + /** + * 修改工序信息 + * + * @param bo 工序信息 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(ProdBaseProcessInfoBo bo) { + ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class); +// String tenantId = LoginHelper.getTenantId(); +// Long deptId = LoginHelper.getDeptId(); +// Long userId = LoginHelper.getUserId(); +// if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId); +// if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId); +// if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId); +// update.setCreateTime(DateUtils.getNowDate()); + validEntityBeforeSave(update); +// List prodBaseProcessProdlineBoList = bo.getProdBaseProcessProdlineBoList(); +// if (ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)) { +// List prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class); +// update.setProdBaseProcessProdlineList(prodBaseProcessProdlineList); +// } + baseMapper.deleteProdBaseProcessProdlineByProcessId(update.getProcessId()); +// try { +// insertProdBaseProcessProdline(update); +// } catch (Exception e) { +// throw new ServiceException("该工序已关联产线!"); +// } + + //更新工序关联资源 +// List processResourceList = bo.getProdBaseProcessResourceList(); +// MPJLambdaWrapper lqwRecord = JoinWrappers.lambda(ProdBaseProcessResource.class); +// lqwRecord.eq(ProdBaseProcessResource::getProcessId, bo.getProcessId()); +// List dataFieldList = processResourceMapper.selectList(lqwRecord); +// if (!processResourceList.isEmpty()) { +// for (ProdBaseProcessResource dataField : processResourceList) { +// processResourceMapper.insertOrUpdate(dataField); +// } +// Set existingIds = processResourceList.stream() +// .map(ProdBaseProcessResource::getProcessResourceId) +// .collect(Collectors.toSet()); +// List filteredIds = dataFieldList.stream() +// .filter(field -> !existingIds.contains(field.getProcessResourceId())) +// .toList(); +// for (ProdBaseProcessResource dataField : filteredIds) { +// processResourceMapper.deleteById(dataField.getProcessResourceId()); +// } +// } + return baseMapper.updateById(update) > 0; + } + + /** + * 修改工序信息关联人员 + * + * @param bo 工序信息 + * @return 是否修改成功 + */ + @Transactional + @Override + public Boolean updateByBoUser(ProdBaseProcessInfoBo bo) { + ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class); + + String tenantId = LoginHelper.getTenantId();// 获取当前租户ID + Long deptId = LoginHelper.getDeptId();// 获取当前部门ID + Long userId = LoginHelper.getUserId();// 获取当前用户ID + if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId);// 设置当前租户ID + if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId);// 设置当前部门ID + if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);// 设置当前用户ID + update.setCreateTime(DateUtils.getNowDate());// 设置当前时间 + + validEntityBeforeSave(update); + +// List prodBaseProcessUserList = new ArrayList<>(); +// List prodBaseProcessUserBoList = bo.getProdBaseProcessUserBoList(); +// if (ObjectUtil.isNotEmpty(prodBaseProcessUserBoList)) { +// prodBaseProcessUserList = MapstructUtils.convert(prodBaseProcessUserBoList, ProdBaseProcessUser.class); +// } +// baseMapper.deleteProdBaseProcessUserByProcessId(update.getProcessId()); +// update.setProdBaseProcessUserList(prodBaseProcessUserList); +// try { +// insertProdBaseProcessUser(update); +// } catch (Exception e) { +// System.out.println(e.getMessage()); +// throw new ServiceException("该工序已关联用户!"); +// } + return baseMapper.updateById(update) > 0; + } + + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ProdBaseProcessInfo entity) { + //TODO 做一些数据校验,如唯一约束 + // 判断编码是否重复 + if (StringUtils.isNotBlank(entity.getProcessCode())) { + ProdBaseProcessInfoBo query = new ProdBaseProcessInfoBo(); + query.setProcessCode(entity.getProcessCode()); + MPJLambdaWrapper lqw = buildQueryWrapper(query); + ProdBaseProcessInfo prodBaseProcessInfo = baseMapper.selectOne(lqw); + if (prodBaseProcessInfo != null && !prodBaseProcessInfo.getProcessId().equals(entity.getProcessId())) { + throw new ServiceException("编码已存在"); + } + } + } + + /** + * 校验并批量删除工序信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + +// /** +// * 新增工序关联产线信息 +// * +// * @param prodBaseProcessInfo 工序信息对象 +// */ +// public void insertProdBaseProcessProdline(ProdBaseProcessInfo prodBaseProcessInfo) { +// List prodBaseProcessProdlineList = prodBaseProcessInfo.getProdBaseProcessProdlineList(); +// Long processId = prodBaseProcessInfo.getProcessId(); +// if (ObjectUtil.isNotNull(prodBaseProcessProdlineList)) { +// List list = new ArrayList(); +// for (ProdBaseProcessProdLine prodBaseProcessProdline : prodBaseProcessProdlineList) { +// prodBaseProcessProdline.setCreateBy(prodBaseProcessInfo.getCreateBy()); +// prodBaseProcessProdline.setCreateTime(prodBaseProcessInfo.getCreateTime()); +// prodBaseProcessProdline.setCreateDept(prodBaseProcessInfo.getCreateDept()); +// prodBaseProcessProdline.setTenantId(prodBaseProcessInfo.getTenantId()); +// list.add(prodBaseProcessProdline); +// } +// if (!list.isEmpty()) { +// prodBaseProcessProdlineMapper.insertBatch(list); +// } +// } +// } +// +// /** +// * 新增工序关联用户信息 +// * +// * @param prodBaseProcessInfo 工序信息对象 +// */ +// public void insertProdBaseProcessUser(ProdBaseProcessInfo prodBaseProcessInfo) { +// List prodBaseProcessUserList = prodBaseProcessInfo.getProdBaseProcessUserList(); +// Long processId = prodBaseProcessInfo.getProcessId(); +// if (ObjectUtil.isNotNull(prodBaseProcessUserList)) { +// List list = new ArrayList(); +// for (ProdBaseProcessUser prodBaseProcessUser : prodBaseProcessUserList) { +// prodBaseProcessUser.setCreateBy(prodBaseProcessInfo.getCreateBy()); +// prodBaseProcessUser.setCreateTime(prodBaseProcessInfo.getCreateTime()); +// prodBaseProcessUser.setCreateDept(prodBaseProcessInfo.getCreateDept()); +// prodBaseProcessUser.setTenantId(prodBaseProcessInfo.getTenantId()); +// +// list.add(prodBaseProcessUser); +// } +// if (!list.isEmpty()) { +// prodBaseProcessUserMapper.insertBatch(list); +// } +// } +// } + + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/ProdBaseStationInfoServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/ProdBaseStationInfoServiceImpl.java new file mode 100644 index 00000000..f2347e2c --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/ProdBaseStationInfoServiceImpl.java @@ -0,0 +1,169 @@ +package org.dromara.qms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.qms.domain.bo.ProdBaseStationInfoBo; +import org.dromara.qms.domain.vo.ProdBaseStationInfoVo; +import org.dromara.qms.mapper.ProdBaseStationInfoMapper; +import org.dromara.qms.service.IProdBaseStationInfoService; +import org.dromara.qms.domain.ProdBaseProcessInfo; +import org.dromara.qms.domain.ProdBaseStationInfo; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 工位信息Service业务层处理 + * + * @author Yinq + * @date 2025-01-06 + */ +@RequiredArgsConstructor +@Service +public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoService { + + private final ProdBaseStationInfoMapper baseMapper; + +// private final ProdBaseStationMaterialtypeMapper stationMaterialtypeMapper; + + + /** + * 查询工位信息 + * + * @param stationId 主键 + * @return 工位信息 + */ + @Override + public ProdBaseStationInfoVo queryById(Long stationId) { + ProdBaseStationInfoBo bo = new ProdBaseStationInfoBo(); + bo.setStationId(stationId); + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + ProdBaseStationInfoVo prodBaseStationInfoVo = baseMapper.selectVoOne(lqw); + //机台关联工序 +// MPJLambdaWrapper lqwRelation = JoinWrappers.lambda(ProdBaseStationMaterialtype.class) +// .selectAll(ProdBaseStationMaterialtype.class) +// .eq(bo.getStationId() != null, ProdBaseStationMaterialtype::getStationId, bo.getStationId()) +// .orderByAsc(ProdBaseStationMaterialtype::getCreateTime); +// List prodBaseStationMaterialtypeList = stationMaterialtypeMapper.selectList(lqwRelation); +// prodBaseStationInfoVo.setProdBaseStationMaterialtypeList(prodBaseStationMaterialtypeList); + return prodBaseStationInfoVo; + } + + /** + * 分页查询工位信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工位信息分页列表 + */ + @Override + public TableDataInfo queryPageList(ProdBaseStationInfoBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的工位信息列表 + * + * @param bo 查询条件 + * @return 工位信息列表 + */ + @Override + public List queryList(ProdBaseStationInfoBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ProdBaseStationInfoBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseStationInfo.class) + .selectAll(ProdBaseStationInfo.class) + .select(ProdBaseProcessInfo::getProcessName) +// .select(ProdBaseMachineInfo::getMachineName) + .leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, ProdBaseStationInfo::getProcessId) +// .leftJoin(ProdBaseMachineInfo.class, ProdBaseMachineInfo::getMachineId, ProdBaseStationInfo::getMachineId) + .eq(bo.getStationId() != null, ProdBaseStationInfo::getStationId, bo.getStationId()) + .eq(StringUtils.isNotBlank(bo.getStationCode()), ProdBaseStationInfo::getStationCode, bo.getStationCode()) + .like(StringUtils.isNotBlank(bo.getStationName()), ProdBaseStationInfo::getStationName, bo.getStationName()) + .eq(StringUtils.isNotBlank(bo.getStationType()), ProdBaseStationInfo::getStationType, bo.getStationType()) + .eq(bo.getProcessId() != null, ProdBaseStationInfo::getProcessId, bo.getProcessId()) + .eq(bo.getMachineId() != null, ProdBaseStationInfo::getMachineId, bo.getMachineId()) + .like(StringUtils.isNotBlank(bo.getAgvCode()), ProdBaseStationInfo::getAgvCode, bo.getAgvCode()) + .like(StringUtils.isNotBlank(bo.getIpAddress()), ProdBaseStationInfo::getIpAddress, bo.getIpAddress()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseStationInfo::getActiveFlag, bo.getActiveFlag()) + .orderByAsc(ProdBaseStationInfo::getCreateTime); + return lqw; + } + + /** + * 新增工位信息 + * + * @param bo 工位信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ProdBaseStationInfoBo bo) { + ProdBaseStationInfo add = MapstructUtils.convert(bo, ProdBaseStationInfo.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setStationId(add.getStationId()); + } + return flag; + } + + /** + * 修改工位信息 + * + * @param bo 工位信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ProdBaseStationInfoBo bo) { + ProdBaseStationInfo update = MapstructUtils.convert(bo, ProdBaseStationInfo.class); + validEntityBeforeSave(update); +// List prodBaseStationMaterialtypeList = bo.getProdBaseStationMaterialtypeList(); +// if (!prodBaseStationMaterialtypeList.isEmpty()) { +// LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); +// lqw.eq(StringUtils.isNotNull(bo.getStationId()), ProdBaseStationMaterialtype::getStationId, bo.getStationId()); +// stationMaterialtypeMapper.delete(lqw); +// for (ProdBaseStationMaterialtype stationMaterialType : prodBaseStationMaterialtypeList) { +// stationMaterialtypeMapper.insert(stationMaterialType); +// } +// } + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ProdBaseStationInfo entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除工位信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseMaterialInfoMapper.xml b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseMaterialInfoMapper.xml new file mode 100644 index 00000000..2b006673 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseMaterialInfoMapper.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseMaterialTypeMapper.xml b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseMaterialTypeMapper.xml new file mode 100644 index 00000000..3fc0304e --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseMaterialTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseSupplierInfoMapper.xml b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseSupplierInfoMapper.xml new file mode 100644 index 00000000..90c66674 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/BaseSupplierInfoMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/ProdBaseProcessInfoMapper.xml b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/ProdBaseProcessInfoMapper.xml new file mode 100644 index 00000000..9eea26ab --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/ProdBaseProcessInfoMapper.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select process_id, + process_code, + process_name, + process_type, + process_floor, + production_time, + active_flag, + remark, + create_by, + create_time, + update_by, + update_time, + tenant_id + from prod_base_process_info + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into prod_base_process_info + + process_code, + process_name, + process_type, + process_floor, + production_time, + active_flag, + remark, + create_by, + create_time, + update_by, + update_time, + tenant_id, + + + #{processCode}, + #{processName}, + #{processType}, + #{processFloor}, + #{productionTime}, + #{activeFlag}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{tenantId}, + + + + + update prod_base_process_info + + process_code = #{processCode}, + process_name = #{processName}, + process_type = #{processType}, + process_floor = #{processFloor}, + production_time = #{productionTime}, + active_flag = #{activeFlag}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + tenant_id = #{tenantId}, + + where process_id = #{processId} + + + + delete + from prod_base_process_info + where process_id = #{processId} + + + + delete from prod_base_process_info where process_id in + + #{processId} + + + + + delete from prod_base_process_prod_line where process_id in + + #{processId} + + + + + delete + from prod_base_process_prod_line + where process_id = #{processId} + + + + + diff --git a/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/ProdBaseStationInfoMapper.xml b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/ProdBaseStationInfoMapper.xml new file mode 100644 index 00000000..2901e1a3 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/ProdBaseStationInfoMapper.xml @@ -0,0 +1,7 @@ + + + + +