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 |  125 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 124 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 96cb028..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,18 +1,141 @@
 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-04
+ * @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) {
+        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;
+    }
 }

--
Gitblit v1.9.3