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 | 184 +++++++++++++++++++++++++++++++++++++++------ 1 files changed, 157 insertions(+), 27 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 188ec6c..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 @@ -2,26 +2,58 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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; -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; + @Autowired + private IMesMaterialUnloadingService mesMaterialUnloadingService; + @Autowired + private ILswMaterialInboundService materialInboundService; @Override public List<MesMaterialUnloading> queryUnloadingByLoadingId(String loadingId) { @@ -29,38 +61,136 @@ } @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 - public IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, Map<String, String[]> parameterMap) { - QueryWrapper<MesMaterialLoading> queryWrapper = Wrappers.query(); - String[] factoryIds = parameterMap.get("factoryId"); - if (factoryIds != null && factoryIds.length > 0) { - queryWrapper.eq("t2.factory_id", factoryIds[0]); + @Transactional(rollbackFor = Exception.class) + public boolean loading(MesMaterialLoading mesMaterialLoading) { + if (mesMaterialLoading == null) { + throw new JeecgBootException("鍙傛暟閿欒锛�"); } - String[] workOrderIds = parameterMap.get("workOrderId"); - if (workOrderIds != null && workOrderIds.length > 0) { - queryWrapper.eq("t1.work_order_id", workOrderIds[0]); + if (StringUtils.isBlank(mesMaterialLoading.getFactoryId()) + || StringUtils.isBlank(mesMaterialLoading.getMaterialNumber()) + || mesMaterialLoading.getQuantity() == null + || mesMaterialLoading.getQuantity().intValue() < 1 + || StringUtils.isBlank(mesMaterialLoading.getBatchNumber())) { + throw new JeecgBootException("鍙傛暟閿欒锛�"); } - String[] materialNumbers = parameterMap.get("materialNumber"); - if (materialNumbers != null && materialNumbers.length > 0) { - queryWrapper.like("t1.material_number", materialNumbers[0]); + LineSideWarehouse warehouse = lineSideWarehouseService.queryByFactoryId(mesMaterialLoading.getFactoryId()); + if (warehouse == null) { + throw new JeecgBootException("绾胯竟搴撲笉瀛樺湪锛岃妫�鏌ワ紒"); } - String[] materialNames = parameterMap.get("materialName"); - if (materialNames != null && materialNames.length > 0) { - queryWrapper.like("t1.material_name", materialNames[0]); + + LswMaterial material = materialService.queryByMaterialNumber(mesMaterialLoading.getMaterialNumber()); + if (material == null) { + throw new JeecgBootException("鐗╂枡淇℃伅涓嶅瓨鍦紝璇锋鏌ワ紒"); } - String[] batchNumbers = parameterMap.get("batchNumber"); - if (batchNumbers != null && batchNumbers.length > 0) { - queryWrapper.like("t1.batch_number", batchNumbers[0]); + + if (MaterialCategoryEnum.STEEL_BALL.name().equals(material.getMaterialCategory()) && StringUtils.isBlank(mesMaterialLoading.getSteelBallSize())) { + throw new JeecgBootException("閽㈢悆灏哄涓嶈兘涓虹┖锛岃妫�鏌ワ紒"); } - String[] equipmentIds = parameterMap.get("equipmentId"); - if (equipmentIds != null && equipmentIds.length > 0) { - queryWrapper.eq("t1.equipment_id", equipmentIds[0]); + + LswMaterialInventory inventory = materialInventoryService.queryByMaterialNumberAndBatchNumber(mesMaterialLoading.getMaterialNumber(), mesMaterialLoading.getBatchNumber(), warehouse.getId()); + if (inventory == null) { + throw new JeecgBootException("搴撳瓨涓嶅瓨鍦紝璇锋鏌ワ紒"); } - queryWrapper.orderByDesc("t1.create_time"); - return this.baseMapper.queryPageList(page, queryWrapper); + 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