From 9e97ded95f71e4c736bf11464ea2c25860d2aab8 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 10 九月 2025 11:47:27 +0800 Subject: [PATCH] art: 下料接口,上下料查询接口修改 --- src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 179 insertions(+), 1 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 1b0813e..69ffb6b 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,18 +1,196 @@ 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.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.LswMaterialInbound; +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.MaterialInboundCategory; +import org.jeecg.modules.lsw.enums.MaterialOutboundCategory; +import org.jeecg.modules.lsw.service.ILswMaterialInboundService; +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.jeecg.modules.mes.service.IMesMaterialUnloadingService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** * @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; + @Autowired + private IMesMaterialUnloadingService mesMaterialUnloadingService; + @Autowired + private ILswMaterialInboundService materialInboundService; + + @Override + public List<MesMaterialUnloading> queryUnloadingByLoadingId(String loadingId) { + return baseMapper.queryUnloadingByLoadingId(loadingId); + } + + @Override + 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; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean unloading(MesMaterialLoading mesMaterialLoading) { + if (mesMaterialLoading == null) { + throw new JeecgBootException("鍙傛暟閿欒锛�"); + } + if (StringUtils.isBlank(mesMaterialLoading.getId()) + || mesMaterialLoading.getUnloadingQuantity() == null + || mesMaterialLoading.getUnloadingQuantity().intValue() < 1) { + throw new JeecgBootException("鍙傛暟閿欒锛�"); + } + //鏌ヨ涓婃枡鏁版嵁 + MesMaterialLoading loading = super.getById(mesMaterialLoading.getId()); + if (loading == null) { + throw new JeecgBootException("鏈煡璇㈠埌涓婃枡鏁版嵁锛�"); + } + if (loading.getRemainingQuantity().compareTo(mesMaterialLoading.getUnloadingQuantity()) < 0) { + throw new JeecgBootException("涓嬫枡鏁伴噺涓嶈兘澶т簬褰撳墠鍓╀綑鏁伴噺锛�"); + } + //绾胯竟搴撲俊鎭� + LineSideWarehouse warehouse = lineSideWarehouseService.getById(loading.getWarehouseId()); + if(warehouse == null) { + throw new JeecgBootException("鏈煡璇㈠埌绾胯竟搴擄紒"); + } + loading.setUnloadingFlag(CommonConstant.STATUS_1); + loading.setRemainingQuantity(loading.getRemainingQuantity().subtract(mesMaterialLoading.getUnloadingQuantity())); + super.updateById(loading); + //淇濆瓨涓嬫枡淇℃伅 + MesMaterialUnloading unloading = new MesMaterialUnloading(); + unloading.setLoadingId(loading.getId()); + unloading.setMaterialNumber(loading.getMaterialNumber()); + unloading.setMaterialName(loading.getMaterialName()); + unloading.setBatchNumber(loading.getBatchNumber()); + unloading.setQuantity(mesMaterialLoading.getUnloadingQuantity()); + mesMaterialUnloadingService.save(unloading); + //淇濆瓨鍏ュ簱淇℃伅 + LswMaterialInbound materialInbound = new LswMaterialInbound() + .setFactoryId(loading.getFactoryId()) + .setWarehouseId(loading.getWarehouseId()) + .setMaterialNumber(loading.getMaterialNumber()) + .setMaterialName(loading.getMaterialName()) + .setBatchNumber(loading.getBatchNumber()) + .setQuantity(unloading.getQuantity()) + .setInboundCategory(MaterialInboundCategory.PRODUCTION_UNLOADING.name())//涓嬫枡 + .setOriginalCode(warehouse.getWarehouseCode()) + .setOriginalName(warehouse.getWarehouseName()); + materialInboundService.inboundMaterial(materialInbound); + return true; + } } -- Gitblit v1.9.3