From 399e7d565f19f59a8da82277da8f3eab527c2c56 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期二, 09 九月 2025 19:40:20 +0800 Subject: [PATCH] art: 上料接口,上下料查询接口 --- src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 114 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java index 55d26ce..317f986 100644 --- a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java +++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java @@ -1,22 +1,54 @@ package org.jeecg.modules.mes.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.base.entity.LineSideWarehouse; +import org.jeecg.modules.base.service.ILineSideWarehouseService; +import org.jeecg.modules.lsw.entity.LswMaterial; +import org.jeecg.modules.lsw.entity.LswMaterialInventory; +import org.jeecg.modules.lsw.entity.LswMaterialOutbound; +import org.jeecg.modules.lsw.enums.MaterialCategoryEnum; +import org.jeecg.modules.lsw.enums.MaterialOutboundCategory; +import org.jeecg.modules.lsw.service.ILswMaterialInventoryService; +import org.jeecg.modules.lsw.service.ILswMaterialOutboundService; +import org.jeecg.modules.lsw.service.ILswMaterialService; import org.jeecg.modules.mes.entity.MesMaterialLoading; import org.jeecg.modules.mes.entity.MesMaterialUnloading; import org.jeecg.modules.mes.mapper.MesMaterialLoadingMapper; import org.jeecg.modules.mes.service.IMesMaterialLoadingService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * @Description: 涓婃枡 * @Author: jeecg-boot - * @Date: 2025-07-07 + * @Date: 2025-07-07 * @Version: V1.0 */ @Service public class MesMaterialLoadingServiceImpl extends ServiceImpl<MesMaterialLoadingMapper, MesMaterialLoading> implements IMesMaterialLoadingService { + + @Autowired + private ILineSideWarehouseService lineSideWarehouseService; + @Autowired + private ILswMaterialOutboundService lswMaterialOutboundService; + @Autowired + private ILswMaterialInventoryService materialInventoryService; + @Autowired + private ILswMaterialService materialService; @Override public List<MesMaterialUnloading> queryUnloadingByLoadingId(String loadingId) { @@ -24,7 +56,86 @@ } @Override - public List<MesMaterialLoading> queryLoadingByWorkOrderId(String workOrderId) { - return baseMapper.queryLoadingByWorkOrderId(workOrderId); + public IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, MesMaterialLoading mesMaterialLoading) { + QueryWrapper<MesMaterialLoading> queryWrapper = new QueryWrapper<>(); + if (StringUtils.isNotBlank(mesMaterialLoading.getFactoryId())) { + queryWrapper.eq("mml.factory_id", mesMaterialLoading.getFactoryId()); + } + if (StringUtils.isNotBlank(mesMaterialLoading.getCategory())) { + queryWrapper.eq("mml.category", mesMaterialLoading.getCategory()); + } + if (StringUtils.isNotBlank(mesMaterialLoading.getMaterialNumber())) { + queryWrapper.like("mml.material_number", mesMaterialLoading.getMaterialNumber()); + } + if (StringUtils.isNotBlank(mesMaterialLoading.getMaterialName())) { + queryWrapper.like("mml.material_name", mesMaterialLoading.getMaterialName()); + } + if (StringUtils.isNotBlank(mesMaterialLoading.getBatchNumber())) { + queryWrapper.like("mml.batch_number", mesMaterialLoading.getBatchNumber()); + } + queryWrapper.orderByDesc("mml.create_time"); + return this.baseMapper.queryPageList(page, queryWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean loading(MesMaterialLoading mesMaterialLoading) { + if (mesMaterialLoading == null) { + throw new JeecgBootException("鍙傛暟閿欒锛�"); + } + if (StringUtils.isBlank(mesMaterialLoading.getFactoryId()) + || StringUtils.isBlank(mesMaterialLoading.getMaterialNumber()) + || mesMaterialLoading.getQuantity() == null + || mesMaterialLoading.getQuantity().intValue() < 1 + || StringUtils.isBlank(mesMaterialLoading.getBatchNumber())) { + throw new JeecgBootException("鍙傛暟閿欒锛�"); + } + LineSideWarehouse warehouse = lineSideWarehouseService.queryByFactoryId(mesMaterialLoading.getFactoryId()); + if (warehouse == null) { + throw new JeecgBootException("绾胯竟搴撲笉瀛樺湪锛岃妫�鏌ワ紒"); + } + + LswMaterial material = materialService.queryByMaterialNumber(mesMaterialLoading.getMaterialNumber()); + if (material == null) { + throw new JeecgBootException("鐗╂枡淇℃伅涓嶅瓨鍦紝璇锋鏌ワ紒"); + } + + if (MaterialCategoryEnum.STEEL_BALL.name().equals(material.getMaterialCategory()) && StringUtils.isBlank(mesMaterialLoading.getSteelBallSize())) { + throw new JeecgBootException("閽㈢悆灏哄涓嶈兘涓虹┖锛岃妫�鏌ワ紒"); + } + + LswMaterialInventory inventory = materialInventoryService.queryByMaterialNumberAndBatchNumber(mesMaterialLoading.getMaterialNumber(), mesMaterialLoading.getBatchNumber(), warehouse.getId()); + if (inventory == null) { + throw new JeecgBootException("搴撳瓨涓嶅瓨鍦紝璇锋鏌ワ紒"); + } + if (inventory.getQuantity().compareTo(mesMaterialLoading.getQuantity()) != 0) { + throw new JeecgBootException("涓婃枡鍜屽簱瀛樻暟閲忎笉鍖归厤锛岃妫�鏌ワ紒"); + } + + //浜哄憳淇℃伅 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + throw new JeecgBootException("鐢ㄦ埛淇℃伅鑾峰彇澶辫触锛�"); + } + LswMaterialOutbound outbound = new LswMaterialOutbound(); + outbound.setMaterialNumber(mesMaterialLoading.getMaterialNumber()); + outbound.setMaterialName(mesMaterialLoading.getMaterialName()); + outbound.setQuantity(mesMaterialLoading.getQuantity()); + outbound.setFactoryId(mesMaterialLoading.getFactoryId()); + outbound.setWarehouseId(warehouse.getId()); + outbound.setBatchNumber(mesMaterialLoading.getBatchNumber()); + outbound.setOutboundCategory(MaterialOutboundCategory.MATERIAL_LOADING.name()); + outbound.setInventoryId(inventory.getId()); + outbound.setOutboundStaff(sysUser.getUsername()); + boolean b = lswMaterialOutboundService.outboundMaterial(outbound); + if (!b) { + throw new JeecgBootException("搴撳瓨鍑哄簱澶辫触锛�"); + } + mesMaterialLoading.setWarehouseId(warehouse.getId()); + mesMaterialLoading.setRemainingQuantity(mesMaterialLoading.getQuantity()); + mesMaterialLoading.setDelFlag(CommonConstant.DEL_FLAG_0); + mesMaterialLoading.setUnloadingFlag(CommonConstant.STATUS_0); + this.save(mesMaterialLoading); + return true; } } -- Gitblit v1.9.3