diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationMaterialtype.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationMaterialtype.java new file mode 100644 index 0000000..e3c178b --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationMaterialtype.java @@ -0,0 +1,46 @@ +package org.dromara.mes.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.util.Date; + +/** + * 工位关联物料类型对象 prod_base_station_materialtype + * + * @author Yinq + * @date 2025-05-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("prod_base_station_materialtype") +public class ProdBaseStationMaterialtype extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工位ID + */ + private Long stationId; + + /** + * 物料类型ID + */ + private Long materialTypeId; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + @TableField(exist = false) + private Long updateBy; + + @TableField(exist = false) + private Date updateTime; + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java index c3c2d40..039ec30 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java @@ -8,6 +8,9 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import org.dromara.mes.domain.ProdBaseStationMaterialtype; + +import java.util.List; /** * 工位信息业务对象 prod_base_station_info @@ -75,4 +78,6 @@ public class ProdBaseStationInfoBo extends BaseEntity { private String remark; private Long machineId; + + private List prodBaseStationMaterialtypeList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationMaterialtypeBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationMaterialtypeBo.java new file mode 100644 index 0000000..c0f3eb2 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationMaterialtypeBo.java @@ -0,0 +1,42 @@ +package org.dromara.mes.domain.bo; + +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 工位关联物料类型业务对象 prod_base_station_materialtype + * + * @author Yinq + * @date 2025-05-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ProdBaseStationMaterialtype.class, reverseConvertGenerate = false) +public class ProdBaseStationMaterialtypeBo extends BaseEntity { + + /** + * 工位ID + */ + @NotNull(message = "工位ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long stationId; + + /** + * 物料类型ID + */ + @NotNull(message = "物料类型ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long materialTypeId; + + /** + * 激活标识(1是 0否) + */ + @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String activeFlag; + + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java index 93ed805..b2d2a0d 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java @@ -7,10 +7,12 @@ import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.mes.domain.ProdBaseStationMaterialtype; import java.io.Serial; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -138,4 +140,6 @@ public class ProdBaseStationInfoVo implements Serializable { */ @ExcelProperty(value = "机台名称") private String machineName; + + private List prodBaseStationMaterialtypeList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationMaterialtypeVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationMaterialtypeVo.java new file mode 100644 index 0000000..bf0e34f --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationMaterialtypeVo.java @@ -0,0 +1,51 @@ +package org.dromara.mes.domain.vo; + +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 工位关联物料类型视图对象 prod_base_station_materialtype + * + * @author Yinq + * @date 2025-05-13 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ProdBaseStationMaterialtype.class) +public class ProdBaseStationMaterialtypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工位ID + */ + @ExcelProperty(value = "工位ID") + private Long stationId; + + /** + * 物料类型ID + */ + @ExcelProperty(value = "物料类型ID") + private Long materialTypeId; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseStationMaterialtypeMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseStationMaterialtypeMapper.java new file mode 100644 index 0000000..dba9cfc --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseStationMaterialtypeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.mes.mapper; + +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import org.dromara.mes.domain.vo.ProdBaseStationMaterialtypeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 工位关联物料类型Mapper接口 + * + * @author Yinq + * @date 2025-05-13 + */ +public interface ProdBaseStationMaterialtypeMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseStationMaterialtypeService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseStationMaterialtypeService.java new file mode 100644 index 0000000..582d40a --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseStationMaterialtypeService.java @@ -0,0 +1,69 @@ +package org.dromara.mes.service; + +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import org.dromara.mes.domain.vo.ProdBaseStationMaterialtypeVo; +import org.dromara.mes.domain.bo.ProdBaseStationMaterialtypeBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 工位关联物料类型Service接口 + * + * @author Yinq + * @date 2025-05-13 + */ +public interface IProdBaseStationMaterialtypeService { + + /** + * 查询工位关联物料类型 + * + * @param stationId 主键 + * @return 工位关联物料类型 + */ + ProdBaseStationMaterialtypeVo queryById(Long stationId); + + /** + * 分页查询工位关联物料类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工位关联物料类型分页列表 + */ + TableDataInfo queryPageList(ProdBaseStationMaterialtypeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的工位关联物料类型列表 + * + * @param bo 查询条件 + * @return 工位关联物料类型列表 + */ + List queryList(ProdBaseStationMaterialtypeBo bo); + + /** + * 新增工位关联物料类型 + * + * @param bo 工位关联物料类型 + * @return 是否新增成功 + */ + Boolean insertByBo(ProdBaseStationMaterialtypeBo bo); + + /** + * 修改工位关联物料类型 + * + * @param bo 工位关联物料类型 + * @return 是否修改成功 + */ + Boolean updateByBo(ProdBaseStationMaterialtypeBo bo); + + /** + * 校验并批量删除工位关联物料类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java index 6ff215c..6b12305 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.mes.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,12 +10,11 @@ import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; -import org.dromara.mes.domain.ProdBaseMachineInfo; -import org.dromara.mes.domain.ProdBaseProcessInfo; +import org.dromara.mes.domain.*; +import org.dromara.mes.mapper.ProdBaseStationMaterialtypeMapper; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdBaseStationInfoBo; import org.dromara.mes.domain.vo.ProdBaseStationInfoVo; -import org.dromara.mes.domain.ProdBaseStationInfo; import org.dromara.mes.mapper.ProdBaseStationInfoMapper; import org.dromara.mes.service.IProdBaseStationInfoService; @@ -34,6 +34,9 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi private final ProdBaseStationInfoMapper baseMapper; + private final ProdBaseStationMaterialtypeMapper stationMaterialtypeMapper; + + /** * 查询工位信息 * @@ -42,7 +45,18 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi */ @Override public ProdBaseStationInfoVo queryById(Long stationId) { - return baseMapper.selectVoById(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; } /** @@ -119,6 +133,15 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi 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; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationMaterialtypeServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationMaterialtypeServiceImpl.java new file mode 100644 index 0000000..15c5fe1 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationMaterialtypeServiceImpl.java @@ -0,0 +1,134 @@ +package org.dromara.mes.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.mes.domain.bo.ProdBaseStationMaterialtypeBo; +import org.dromara.mes.domain.vo.ProdBaseStationMaterialtypeVo; +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import org.dromara.mes.mapper.ProdBaseStationMaterialtypeMapper; +import org.dromara.mes.service.IProdBaseStationMaterialtypeService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 工位关联物料类型Service业务层处理 + * + * @author Yinq + * @date 2025-05-13 + */ +@RequiredArgsConstructor +@Service +public class ProdBaseStationMaterialtypeServiceImpl implements IProdBaseStationMaterialtypeService { + + private final ProdBaseStationMaterialtypeMapper baseMapper; + + /** + * 查询工位关联物料类型 + * + * @param stationId 主键 + * @return 工位关联物料类型 + */ + @Override + public ProdBaseStationMaterialtypeVo queryById(Long stationId){ + return baseMapper.selectVoById(stationId); + } + + /** + * 分页查询工位关联物料类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工位关联物料类型分页列表 + */ + @Override + public TableDataInfo queryPageList(ProdBaseStationMaterialtypeBo 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(ProdBaseStationMaterialtypeBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ProdBaseStationMaterialtypeBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseStationMaterialtype.class) + .selectAll(ProdBaseStationMaterialtype.class) + .eq(bo.getStationId() != null, ProdBaseStationMaterialtype::getStationId, bo.getStationId()) + .eq(bo.getMaterialTypeId() != null, ProdBaseStationMaterialtype::getMaterialTypeId, bo.getMaterialTypeId()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseStationMaterialtype::getActiveFlag, bo.getActiveFlag()) + .orderByDesc(ProdBaseStationMaterialtype::getCreateTime); + return lqw; + } + + /** + * 新增工位关联物料类型 + * + * @param bo 工位关联物料类型 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ProdBaseStationMaterialtypeBo bo) { + ProdBaseStationMaterialtype add = MapstructUtils.convert(bo, ProdBaseStationMaterialtype.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setStationId(add.getStationId()); + } + return flag; + } + + /** + * 修改工位关联物料类型 + * + * @param bo 工位关联物料类型 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ProdBaseStationMaterialtypeBo bo) { + ProdBaseStationMaterialtype update = MapstructUtils.convert(bo, ProdBaseStationMaterialtype.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ProdBaseStationMaterialtype 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-mes/src/main/resources/mapper/mes/ProdBaseStationMaterialtypeMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseStationMaterialtypeMapper.xml new file mode 100644 index 0000000..db56a02 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseStationMaterialtypeMapper.xml @@ -0,0 +1,7 @@ + + + + +