diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java index 5bed053d..e3776c15 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java @@ -107,9 +107,21 @@ public class ProdMaterialBomController extends BaseController { /** * 下拉框查询物料BOM信息列表 */ - @GetMapping("getProdMaterialBomList") + @GetMapping("/getProdMaterialBomList") public R> getProdMaterialBomlist(ProdMaterialBomBo bo) { List list = prodMaterialBomService.queryList(bo); return R.ok(list); } + + /** + * 根据结构BOM批量插入物料清单BOM。 + */ + @SaCheckPermission("mes:materialBom:add") + @Log(title = "物料BOM信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/addBatchMaterialBom") + public R addBatchMaterialBom(@RequestBody List boList) { + //不是单纯的批量新增,是新增BOM对话框(参考结构BOM批量新增物料BOM) + return toAjax(prodMaterialBomService.insertBatchByBoList(boList)); + } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java index 92756a3c..5d2aba6e 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java @@ -72,8 +72,14 @@ public class ProdBaseStationInfo extends TenantEntity { */ private String remark; + /** + * 机台ID + */ + private Long machineId; + @TableField(exist = false) private String processName;//字段映射 - + @TableField(exist = false) + private String machineName;//字段映射 } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java index 1c09d3d4..73c76b2f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java @@ -72,5 +72,9 @@ public class ProdBaseMachineInfoBo extends BaseEntity { */ private String remark; + /** + * 工序 + */ + private Long processId; } 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 b3a59428..c3c2d400 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 @@ -74,5 +74,5 @@ public class ProdBaseStationInfoBo extends BaseEntity { */ private String remark; - + private Long machineId; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java index 415897ad..b67bfca6 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.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.ProdTechnologyStepInfo; + +import java.util.List; /** * 工序工艺信息业务对象 prod_technology_info @@ -67,5 +70,6 @@ public class ProdTechnologyInfoBo extends BaseEntity { */ private String remark; + private List prodTechnologyStepInfoList; } 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 3f37b31a..93ed805f 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 @@ -131,5 +131,11 @@ public class ProdBaseStationInfoVo implements Serializable { @ExcelProperty(value = "更新时间") private Date updateTime; + private Long machineId; + /** + * 机台名称 + */ + @ExcelProperty(value = "机台名称") + private String machineName; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java index 34cd4f31..387a1cb7 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java @@ -7,11 +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.ProdTechnologyStepInfo; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -90,4 +91,6 @@ public class ProdTechnologyInfoVo implements Serializable { @ExcelProperty(value = "物料名称") private String materialName; + + private List prodTechnologyStepInfoList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java index 206eab7b..95d9157f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java @@ -56,4 +56,11 @@ public interface IProdMaterialBomService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 根据结构BOM批量插入物料清单BOM。 + * @param boList 需要插入的物料清单BOM列表。 + * @return 如果所有节点都成功插入,返回true;否则抛出异常。 + */ + Boolean insertBatchByBoList(List boList); } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java index 8df3baa3..4752ab27 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java @@ -10,6 +10,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.mes.domain.BaseMaterialInfo; +import org.dromara.mes.mapper.BaseMaterialInfoMapper; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.BaseEqualMaterialInfoBo; import org.dromara.mes.domain.vo.BaseEqualMaterialInfoVo; @@ -21,6 +22,8 @@ import java.util.List; import java.util.Map; import java.util.Collection; +import org.springframework.util.ObjectUtils; + /** * 等同物料信息Service业务层处理 * @@ -32,6 +35,7 @@ import java.util.Collection; public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoService { private final BaseEqualMaterialInfoMapper baseMapper; + private final BaseMaterialInfoMapper baseMaterialInfoMapper; /** * 查询等同物料信息 @@ -41,7 +45,16 @@ public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoS */ @Override public BaseEqualMaterialInfoVo queryById(Long equalMaterialInfoId){ - return baseMapper.selectVoById(equalMaterialInfoId); + BaseEqualMaterialInfoVo baseEqualMaterialInfoVo = baseMapper.selectVoById(equalMaterialInfoId); + if (!ObjectUtils.isEmpty(baseEqualMaterialInfoVo)) { + // 关联物料名称 + BaseMaterialInfo baseMaterialInfo = baseMaterialInfoMapper.selectOne(Wrappers.lambdaQuery(BaseMaterialInfo.class) + .eq(BaseMaterialInfo::getMaterialId, baseEqualMaterialInfoVo.getMaterialId())); + if (!ObjectUtils.isEmpty(baseMaterialInfo)) { + baseEqualMaterialInfoVo.setMaterialName(baseMaterialInfo.getMaterialName()); + } + } + return baseEqualMaterialInfoVo; } /** diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java index 390b2461..677a04b7 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java @@ -10,6 +10,8 @@ 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.ProdBaseProcessInfo; +import org.dromara.mes.domain.ProdBaseStationInfo; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdBaseMachineInfoBo; import org.dromara.mes.domain.vo.ProdBaseMachineInfoVo; @@ -74,6 +76,8 @@ public class ProdBaseMachineInfoServiceImpl implements IProdBaseMachineInfoServi Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseMachineInfo.class) .selectAll(ProdBaseMachineInfo.class) + .leftJoin(ProdBaseStationInfo.class, ProdBaseStationInfo::getMachineId, ProdBaseMachineInfo::getMachineId) + .leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, ProdBaseStationInfo::getProcessId) .eq(bo.getMachineId() != null, ProdBaseMachineInfo::getMachineId, bo.getMachineId()) .eq(StringUtils.isNotBlank(bo.getMachineCode()), ProdBaseMachineInfo::getMachineCode, bo.getMachineCode()) .like(StringUtils.isNotBlank(bo.getMachineName()), ProdBaseMachineInfo::getMachineName, bo.getMachineName()) @@ -83,7 +87,8 @@ public class ProdBaseMachineInfoServiceImpl implements IProdBaseMachineInfoServi .eq(StringUtils.isNotBlank(bo.getMachineSpec()), ProdBaseMachineInfo::getMachineSpec, bo.getMachineSpec()) .eq(StringUtils.isNotBlank(bo.getSupplierId()), ProdBaseMachineInfo::getSupplierId, bo.getSupplierId()) .eq(StringUtils.isNotBlank(bo.getMachineStatus()), ProdBaseMachineInfo::getMachineStatus, bo.getMachineStatus()) - .orderByDesc(ProdBaseMachineInfo::getCreateTime); + .eq(StringUtils.isNotNull(bo.getProcessId()), ProdBaseProcessInfo::getProcessId, bo.getProcessId()) + .orderByAsc(ProdBaseMachineInfo::getCreateTime); return lqw; } 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 5e173e39..6ff215c7 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 @@ -9,6 +9,7 @@ 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.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdBaseStationInfoBo; @@ -75,16 +76,19 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi 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()) - .orderByDesc(ProdBaseStationInfo::getCreateTime); + .orderByAsc(ProdBaseStationInfo::getCreateTime); return lqw; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java index bb32d5da..6767f87f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java @@ -15,6 +15,14 @@ import org.dromara.mes.service.IProdMaterialBomService; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.HashMap; + +import org.springframework.transaction.annotation.Transactional; +import cn.hutool.core.collection.CollUtil; +import org.dromara.common.core.exception.ServiceException; + /** * 物料BOM信息Service业务层处理 @@ -154,4 +162,89 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { } } + + + /** + * 根据结构BOM批量插入物料清单BOM。 + * @param boList 需要插入的物料清单BOM列表。 + * @return 如果所有节点都成功插入,返回true;否则抛出异常。 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertBatchByBoList(List boList) { + if (CollUtil.isEmpty(boList)) { + return false; + } + + try { + // 按层级分组(根据parentId分组) + Map> levelMap = new HashMap<>(); + // 1. 首先找出所有顶级节点 + List topNodes = boList.stream() + .filter(bo -> bo.getParentId() == null || bo.getParentId() == 0) + .collect(Collectors.toList()); + // 2. 其他节点按parentId分组 + Map> childrenMap = boList.stream() + .filter(bo -> bo.getParentId() != null && bo.getParentId() != 0) + .collect(Collectors.groupingBy(bo -> Math.abs(bo.getParentId()))); + // 存储临时ID到实际ID的映射 + Map idMapping = new HashMap<>(); + // 3. 优先处理顶级节点,设置基础数据并插入 + for (ProdMaterialBomBo topNode : topNodes) { + Long tempId = Math.abs(topNode.getMaterialBomId()); + topNode.setMaterialBomId(null); // 清除临时ID + topNode.setParentId(0L); // 确保顶级节点parentId为0 + topNode.setAncestors("0"); // 顶级节点的ancestors为"0" + topNode.setTopFlag(1L); // 设置顶级节点的topFlag为1 + // 插入顶级节点 + ProdMaterialBom add = MapstructUtils.convert(topNode, ProdMaterialBom.class); + if (baseMapper.insert(add) <= 0) { + throw new ServiceException("插入顶级节点失败"); + } + // 记录映射关系 + idMapping.put(tempId, add.getMaterialBomId()); + } + // 4. 处理子节点,直到所有节点都处理完 + while (!childrenMap.isEmpty()) { + // 找出当前可以处理的节点(父节点已经在idMapping中的节点) + List processableParentIds = new ArrayList<>(childrenMap.keySet()); + boolean processed = false;// 标记本轮是否有节点被处理 + for (Long parentTempId : processableParentIds) { + // 检查父节点是否已处理 + if (idMapping.containsKey(parentTempId)) { + List children = childrenMap.remove(parentTempId); + // 处理同一父节点的所有子节点 + for (ProdMaterialBomBo child : children) { + Long childTempId = Math.abs(child.getMaterialBomId()); + // 设置实际的父节点ID + child.setMaterialBomId(null);// 清除临时ID + child.setTopFlag(0L); // 设置非顶级节点的topFlag为0 + Long actualParentId = idMapping.get(parentTempId); + child.setParentId(actualParentId); + // 设置祖级列表 + ProdMaterialBom parent = baseMapper.selectById(actualParentId); + child.setAncestors(parent.getAncestors() + "," + actualParentId); + + // 插入子节点 + ProdMaterialBom add = MapstructUtils.convert(child, ProdMaterialBom.class); + if (baseMapper.insert(add) <= 0) { + throw new ServiceException("插入子节点失败"); + } + + // 记录映射关系 + idMapping.put(childTempId, add.getMaterialBomId()); + } + processed = true; + } + } + // 如果一轮循环没有处理任何节点,说明数据有问题 + if (!processed && !childrenMap.isEmpty()) { + throw new ServiceException("存在无法处理的节点,可能是父节点丢失"); + } + } + return true; + } catch (Exception e) { + throw new ServiceException("批量插入失败: " + e.getMessage()); + } + } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyInfoServiceImpl.java index 85c9ae5b..c9064b59 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyInfoServiceImpl.java @@ -1,5 +1,7 @@ package org.dromara.mes.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -11,12 +13,16 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.mes.domain.BaseMaterialInfo; import org.dromara.mes.domain.ProdBaseProcessInfo; +import org.dromara.mes.domain.ProdTechnologyStepInfo; +import org.dromara.mes.domain.bo.ProdTechnologyStepInfoBo; +import org.dromara.mes.mapper.ProdTechnologyStepInfoMapper; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdTechnologyInfoBo; import org.dromara.mes.domain.vo.ProdTechnologyInfoVo; import org.dromara.mes.domain.ProdTechnologyInfo; import org.dromara.mes.mapper.ProdTechnologyInfoMapper; import org.dromara.mes.service.IProdTechnologyInfoService; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -34,6 +40,8 @@ public class ProdTechnologyInfoServiceImpl implements IProdTechnologyInfoService private final ProdTechnologyInfoMapper baseMapper; + private final ProdTechnologyStepInfoMapper prodTechnologyStepInfoMapper; + /** * 查询工序工艺信息 * @@ -46,7 +54,15 @@ public class ProdTechnologyInfoServiceImpl implements IProdTechnologyInfoService bo.setTechnologyId(technologyId); MPJLambdaWrapper lqw = buildQueryWrapper(bo); List voList = baseMapper.selectVoList(lqw); - return voList.get(0); + ProdTechnologyInfoVo prodTechnologyInfoVo = voList.get(0); + //工艺步序信息 + MPJLambdaWrapper lqwStep = JoinWrappers.lambda(ProdTechnologyStepInfo.class) + .selectAll(ProdTechnologyStepInfo.class) + .eq(bo.getTechnologyId() != null, ProdTechnologyStepInfo::getTechnologyId, bo.getTechnologyId()) + .orderByAsc(ProdTechnologyStepInfo::getCreateTime); + List prodTechnologyStepInfoList = prodTechnologyStepInfoMapper.selectList(lqwStep); + prodTechnologyInfoVo.setProdTechnologyStepInfoList(prodTechnologyStepInfoList); + return prodTechnologyInfoVo; } /** @@ -91,7 +107,7 @@ public class ProdTechnologyInfoServiceImpl implements IProdTechnologyInfoService .eq(StringUtils.isNotBlank(bo.getTechnologyVersion()), ProdTechnologyInfo::getTechnologyVersion, bo.getTechnologyVersion()) .eq(bo.getStandardTime() != null, ProdTechnologyInfo::getStandardTime, bo.getStandardTime()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdTechnologyInfo::getActiveFlag, bo.getActiveFlag()) - .orderByDesc(ProdTechnologyInfo::getCreateTime); + .orderByAsc(ProdTechnologyInfo::getCreateTime); return lqw; } @@ -119,9 +135,22 @@ public class ProdTechnologyInfoServiceImpl implements IProdTechnologyInfoService * @return 是否修改成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(ProdTechnologyInfoBo bo) { ProdTechnologyInfo update = MapstructUtils.convert(bo, ProdTechnologyInfo.class); validEntityBeforeSave(update); + + List technologyStepInfoList = bo.getProdTechnologyStepInfoList(); + + if (technologyStepInfoList.size() > 0){ + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotNull(bo.getTechnologyId()), ProdTechnologyStepInfo::getTechnologyId, bo.getTechnologyId()); + prodTechnologyStepInfoMapper.delete(lqw); + for (ProdTechnologyStepInfo stepInfo : technologyStepInfoList) { + stepInfo.setStepId(null); + prodTechnologyStepInfoMapper.insert(stepInfo); + } + } return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyStepInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyStepInfoServiceImpl.java index e9a22f71..803c633d 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyStepInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyStepInfoServiceImpl.java @@ -81,7 +81,7 @@ public class ProdTechnologyStepInfoServiceImpl implements IProdTechnologyStepInf .eq(StringUtils.isNotBlank(bo.getStepParameter()), ProdTechnologyStepInfo::getStepParameter, bo.getStepParameter()) .eq(StringUtils.isNotBlank(bo.getValueState()), ProdTechnologyStepInfo::getValueState, bo.getValueState()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdTechnologyStepInfo::getActiveFlag, bo.getActiveFlag()) - .orderByDesc(ProdTechnologyStepInfo::getCreateTime); + .orderByDesc(ProdTechnologyStepInfo::getStepCode); return lqw; } diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml index 6ff9373f..5c57c3a4 100644 --- a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml @@ -74,7 +74,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bmi.material_code, bmi.material_name, bomi.material_name material_bom_name, - pbsi.station_name release_name, + case + when t.release_type = 1 then (select pbmi.machine_name + from prod_base_machine_info pbmi + where t.release_id = pbmi.machine_id) + when t.release_type = 2 then (select su.nick_name + from sys_user su + where t.release_id = su.user_id) + when t.release_type = 3 then (select pbsi.station_name + from prod_base_station_info pbsi + where t.release_id = pbsi.station_id) + end as release_name, pbpi.process_name, bsi.shift_name, bcti.team_name @@ -85,7 +95,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from ${tableName} t left join base_material_info bmi on bmi.material_id = t.material_id left join base_material_info bomi on bomi.material_id = t.material_bom_id - left join prod_base_station_info pbsi on pbsi.station_id = t.release_id left join prod_base_process_info pbpi on pbpi.process_id = t.process_id left join base_shift_info bsi on bsi.shift_id = t.shift_id left join base_class_team_info bcti on bcti.class_team_id = t.class_team_id diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsPurchaseOrderController.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsPurchaseOrderController.java index c1529b62..7c0da25b 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsPurchaseOrderController.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsPurchaseOrderController.java @@ -77,7 +77,7 @@ public class WmsPurchaseOrderController extends BaseController { @Log(title = "采购订单", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody WmsPurchaseOrderBo bo) { + public R add(@RequestBody WmsPurchaseOrderBo bo) { return R.ok(wmsPurchaseOrderService.insertByBo(bo)); } @@ -88,7 +88,7 @@ public class WmsPurchaseOrderController extends BaseController { @Log(title = "采购订单", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody WmsPurchaseOrderBo bo) { + public R edit(@RequestBody WmsPurchaseOrderBo bo) { return toAjax(wmsPurchaseOrderService.updateByBo(bo)); } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/BaseSupplierInfo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/BaseSupplierInfo.java new file mode 100644 index 00000000..c6074ca2 --- /dev/null +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/BaseSupplierInfo.java @@ -0,0 +1,90 @@ +package org.dromara.wms.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.Date; + +/** + * 供应商信息对象 base_supplier_info + * + * @author ZangCH + * @date 2025-01-07 + */ +@Data +@TableName("base_supplier_info") +public class BaseSupplierInfo { + + @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; + /** + * 租户id + */ + private String tenantId; + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + +} diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsInventory.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsInventory.java index c582aa9b..74ac0e8c 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsInventory.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsInventory.java @@ -93,7 +93,7 @@ public class WmsInventory{ private Date updateTime; @TableField(exist = false) private String warehouseCode;//字段映射 - @TableField(exist = false) +// @TableField(exist = false) private String materialCode;//字段映射 private String warehouseId; diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrder.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrder.java index a308aa15..957fc868 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrder.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrder.java @@ -16,9 +16,8 @@ import java.io.Serial; * @date 2025-01-08 */ @Data -@EqualsAndHashCode(callSuper = true) @TableName("wms_purchase_order") -public class WmsPurchaseOrder extends TenantEntity { +public class WmsPurchaseOrder { @Serial private static final long serialVersionUID = 1L; @@ -88,6 +87,36 @@ public class WmsPurchaseOrder extends TenantEntity { * 审核意见 */ private String auditComments; + /** + * 供应商编号 + */ + @TableField(exist = false) + private String supplierCode; + + /** + * 租户id + */ + private String tenantId; + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrderDetail.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrderDetail.java index 86d73a44..d8b9b4a5 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrderDetail.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrderDetail.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.math.BigDecimal; /** * 采购订单-物料对象 wms_purchase_order_detail @@ -45,12 +46,12 @@ public class WmsPurchaseOrderDetail extends TenantEntity { /** * 含税单价 */ - private Long taxPrice; + private BigDecimal taxPrice; /** * 采购数量 */ - private Long purchaseQty; + private BigDecimal purchaseQty; /** * 物料规格 @@ -65,7 +66,7 @@ public class WmsPurchaseOrderDetail extends TenantEntity { /** * 送货数量=送货单数量=总入库数量 */ - private Long deliveryQty; + private BigDecimal deliveryQty; private Long materialId; diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsInventoryBo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsInventoryBo.java index f71fb547..d1fd96c9 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsInventoryBo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsInventoryBo.java @@ -77,5 +77,6 @@ public class WmsInventoryBo extends BaseEntity { private Long storeId; private String tenantId; private String warehouseId; + private String materialCode;//字段映射 } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsPurchaseOrderDetailBo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsPurchaseOrderDetailBo.java index 25eecce7..e7edf92f 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsPurchaseOrderDetailBo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsPurchaseOrderDetailBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.math.BigDecimal; + /** * 采购订单-物料业务对象 wms_purchase_order_detail * @@ -46,12 +48,12 @@ public class WmsPurchaseOrderDetailBo extends BaseEntity { /** * 含税单价 */ - private Long taxPrice; + private BigDecimal taxPrice; /** * 采购数量 */ - private Long purchaseQty; + private BigDecimal purchaseQty; /** * 物料规格 @@ -66,7 +68,7 @@ public class WmsPurchaseOrderDetailBo extends BaseEntity { /** * 送货数量=送货单数量=总入库数量 */ - private Long deliveryQty; + private BigDecimal deliveryQty; private Long materialId; diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/BaseSupplierInfoVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/BaseSupplierInfoVo.java new file mode 100644 index 00000000..151f1f02 --- /dev/null +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/BaseSupplierInfoVo.java @@ -0,0 +1,116 @@ +package org.dromara.wms.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.wms.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-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderDetailVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderDetailVo.java index 16a74e90..5df46354 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderDetailVo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderDetailVo.java @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; @@ -62,13 +63,13 @@ public class WmsPurchaseOrderDetailVo implements Serializable { * 含税单价 */ @ExcelProperty(value = "含税单价") - private Long taxPrice; + private BigDecimal taxPrice; /** * 采购数量 */ @ExcelProperty(value = "采购数量") - private Long purchaseQty; + private BigDecimal purchaseQty; /** * 物料规格 @@ -86,7 +87,7 @@ public class WmsPurchaseOrderDetailVo implements Serializable { * 送货数量=送货单数量=总入库数量 */ @ExcelProperty(value = "送货数量=送货单数量=总入库数量") - private Long deliveryQty; + private BigDecimal deliveryQty; /** * 租户号 diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderVo.java index 109f8d3d..89a042b9 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderVo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderVo.java @@ -141,6 +141,10 @@ public class WmsPurchaseOrderVo implements Serializable { */ @ExcelProperty(value = "审核意见") private String auditComments; + /** + * 供应商编号 + */ + private String supplierCode; } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/BaseSupplierInfoMapper.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/BaseSupplierInfoMapper.java new file mode 100644 index 00000000..28b074d1 --- /dev/null +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/BaseSupplierInfoMapper.java @@ -0,0 +1,15 @@ +package org.dromara.wms.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.wms.domain.BaseSupplierInfo; +import org.dromara.wms.domain.vo.BaseSupplierInfoVo; + +/** + * 供应商信息Mapper接口 + * + * @author ZangCH + * @date 2025-01-07 + */ +public interface BaseSupplierInfoMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryCheckRecordServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryCheckRecordServiceImpl.java index 8e884c7f..80c6c9bd 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryCheckRecordServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryCheckRecordServiceImpl.java @@ -79,8 +79,8 @@ public class WmsInventoryCheckRecordServiceImpl implements IWmsInventoryCheckRec .eq(StringUtils.isNotBlank(bo.getCheckCode()), WmsInventoryCheckRecord::getCheckCode, bo.getCheckCode()) .eq(StringUtils.isNotBlank(bo.getBatchCode()), WmsInventoryCheckRecord::getBatchCode, bo.getBatchCode()) .eq(bo.getMaterialId() != null, WmsInventoryCheckRecord::getMaterialId, bo.getMaterialId()) - .eq(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryCheckRecord::getLocationCode, bo.getLocationCode()) - .eq(StringUtils.isNotBlank(bo.getMaterialCode()), WmsInventoryCheckRecord::getMaterialCode, bo.getMaterialCode()) + .like(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryCheckRecord::getLocationCode, bo.getLocationCode()) + .like(StringUtils.isNotBlank(bo.getMaterialCode()), WmsInventoryCheckRecord::getMaterialCode, bo.getMaterialCode()) .like(StringUtils.isNotBlank(bo.getMaterialName()), WmsInventoryCheckRecord::getMaterialName, bo.getMaterialName()) .eq(StringUtils.isNotBlank(bo.getInventoryQty()), WmsInventoryCheckRecord::getInventoryQty, bo.getInventoryQty()) .eq(bo.getCheckQty() != null, WmsInventoryCheckRecord::getCheckQty, bo.getCheckQty()) diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsMoveOrderServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsMoveOrderServiceImpl.java index 02cc091a..dc681a8b 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsMoveOrderServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsMoveOrderServiceImpl.java @@ -92,9 +92,9 @@ public class WmsMoveOrderServiceImpl implements IWmsMoveOrderService { .eq(bo.getMaterialId() != null, WmsMoveOrder::getMaterialId, bo.getMaterialId()) .eq(StringUtils.isNotBlank(bo.getMaterialCategories()), WmsMoveOrder::getMaterialCategories, bo.getMaterialCategories()) .eq(bo.getWarehouseId() != null, WmsMoveOrder::getWarehouseId, bo.getWarehouseId()) - .eq(bo.getPlanLocationCode() != null, WmsMoveOrder::getPlanLocationCode, bo.getPlanLocationCode()) + .like(bo.getPlanLocationCode() != null, WmsMoveOrder::getPlanLocationCode, bo.getPlanLocationCode()) .eq(StringUtils.isNotBlank(bo.getOrderStatus()), WmsMoveOrder::getOrderStatus, bo.getOrderStatus()) - .eq(bo.getTargetLocationCode() != null, WmsMoveOrder::getTargetLocationCode, bo.getTargetLocationCode()) + .like(bo.getTargetLocationCode() != null, WmsMoveOrder::getTargetLocationCode, bo.getTargetLocationCode()) .eq(StringUtils.isNotBlank(bo.getAuditBy()), WmsMoveOrder::getAuditBy, bo.getAuditBy()) .eq(bo.getAuditTime() != null, WmsMoveOrder::getAuditTime, bo.getAuditTime()) .eq(StringUtils.isNotBlank(bo.getAuditStatus()), WmsMoveOrder::getAuditStatus, bo.getAuditStatus()) diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPurchaseOrderServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPurchaseOrderServiceImpl.java index bb1ccf85..909fb30b 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPurchaseOrderServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPurchaseOrderServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.wms.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,6 +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.common.satoken.utils.LoginHelper; +import org.dromara.wms.domain.BaseSupplierInfo; +import org.dromara.wms.domain.WmsInstockOrder; +import org.dromara.wms.domain.vo.WmsInstockOrderVo; +import org.dromara.wms.mapper.WmsInstockOrderMapper; import org.springframework.stereotype.Service; import org.dromara.wms.domain.bo.WmsPurchaseOrderBo; import org.dromara.wms.domain.vo.WmsPurchaseOrderVo; @@ -16,9 +22,12 @@ import org.dromara.wms.domain.WmsPurchaseOrder; import org.dromara.wms.mapper.WmsPurchaseOrderMapper; import org.dromara.wms.service.IWmsPurchaseOrderService; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.concurrent.atomic.AtomicInteger; /** * 采购订单Service业务层处理 @@ -31,6 +40,10 @@ import java.util.Collection; public class WmsPurchaseOrderServiceImpl implements IWmsPurchaseOrderService { private final WmsPurchaseOrderMapper baseMapper; + private static final AtomicInteger sequence = new AtomicInteger(0); + public static Integer nextSequence() { + return sequence.incrementAndGet(); + } /** * 查询采购订单 @@ -73,6 +86,8 @@ public class WmsPurchaseOrderServiceImpl implements IWmsPurchaseOrderService { Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsPurchaseOrder.class) .selectAll(WmsPurchaseOrder.class) + .select(BaseSupplierInfo::getSupplierCode) + .leftJoin(BaseSupplierInfo.class,BaseSupplierInfo::getSupplierId,WmsPurchaseOrder::getSupplierId) .eq(StringUtils.isNotBlank(bo.getPoNo()), WmsPurchaseOrder::getPoNo, bo.getPoNo()) .eq(StringUtils.isNotBlank(bo.getPoStatus()), WmsPurchaseOrder::getPoStatus, bo.getPoStatus()) .eq(StringUtils.isNotBlank(bo.getPlanDeliveryDate()), WmsPurchaseOrder::getPlanDeliveryDate, bo.getPlanDeliveryDate()) @@ -96,14 +111,39 @@ public class WmsPurchaseOrderServiceImpl implements IWmsPurchaseOrderService { */ @Override public WmsPurchaseOrder insertByBo(WmsPurchaseOrderBo bo) { + String username = LoginHelper.getUsername(); + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHssmm"); + String orderDate = format.format(date); + String order = "PUR"; + String orderLast=""; + Integer value = nextSequence(); + if (value.toString().length()==4){ + sequence.set(1); + orderLast = generateOrder(sequence.get()); + }else { + orderLast = generateOrder(value); + } + String purOrder = order + orderDate + orderLast; WmsPurchaseOrder add = MapstructUtils.convert(bo, WmsPurchaseOrder.class); validEntityBeforeSave(add); + add.setPoNo(purOrder); + add.setCreateBy(username); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setPoId(add.getPoId()); } return add; } + public String generateOrder(Integer value){ + if (value.toString().length()<3){ + String fixedLengthString = String.format("%03d", value); + return fixedLengthString; + }else if (value.toString().length()==3){ + return value.toString(); + } + return value.toString(); + } /** * 修改采购订单 @@ -114,6 +154,8 @@ public class WmsPurchaseOrderServiceImpl implements IWmsPurchaseOrderService { @Override public Boolean updateByBo(WmsPurchaseOrderBo bo) { WmsPurchaseOrder update = MapstructUtils.convert(bo, WmsPurchaseOrder.class); + String username = LoginHelper.getUsername(); + update.setUpdateBy(username); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/hwmom-wms/src/main/resources/mapper/wms/WmsInventoryMapper.xml b/ruoyi-modules/hwmom-wms/src/main/resources/mapper/wms/WmsInventoryMapper.xml index 6ac278df..d2052478 100644 --- a/ruoyi-modules/hwmom-wms/src/main/resources/mapper/wms/WmsInventoryMapper.xml +++ b/ruoyi-modules/hwmom-wms/src/main/resources/mapper/wms/WmsInventoryMapper.xml @@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" MAX(b.min_stock_amount) min_stock_amount, MAX(b.max_stock_amount) max_stock_amount, MAX(c.warehouse_code) warehouse_code, - MAX(d.material_code) material_code, + MAX(b.material_code) material_code, MAX(x.lock_state) lock_state, MAX(x.inventory_status) inventory_status, MAX(x.material_categories) material_categories, @@ -34,12 +34,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" x.material_id = b.material_id left join wms_base_warehouse c on x.warehouse_id = c.warehouse_id - left join base_material_info d - on - x.material_id = d.material_id +-- left join base_material_info d +-- on +-- x.material_id = d.material_id - and x.material_id = #{entity.materialId} + and x.warehouse_id = #{entity.warehouseId} + and x.lock_state = #{entity.lockState} + and x.material_categories = #{entity.materialCategories} + and x.inventory_status = #{entity.inventoryStatus} + and x.location_code like concat('%',#{entity.locationCode},'%') + and x.batch_code like concat('%',#{entity.batchCode},'%') + and x.material_code like concat('%',#{entity.materialCode},'%') group by x.warehouse_id , diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMasterDataDetailController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMasterDataDetailController.java index 3a867dea..be772567 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMasterDataDetailController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMasterDataDetailController.java @@ -38,7 +38,7 @@ public class SysMasterDataDetailController extends BaseController { private final ISysMasterDataDetailService sysMasterDataDetailService; /** - * 查询主数据维护明细列表 + * 查询主数据维护明细列表-列表结构 */ @SaCheckPermission("system:masterDataDetail:list") @GetMapping("/list") @@ -46,6 +46,16 @@ public class SysMasterDataDetailController extends BaseController { return sysMasterDataDetailService.queryPageList(bo, pageQuery); } + /** + * 查询主数据维护明细列表-树状结构 + */ + @SaCheckPermission("system:masterDataDetail:list") + @GetMapping("/treeList") + public R> list(SysMasterDataDetailBo bo) { + List list = sysMasterDataDetailService.queryList(bo); + return R.ok(list); + } + /** * 导出主数据维护明细列表 */