From d346846239a8a39246c464dc634f5fd72add99ab Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期二, 26 八月 2025 15:22:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/pim-jlmy' into pim-jlmy

---
 main-business/src/main/java/com/ruoyi/business/service/impl/ProductionSchedulingServiceImpl.java |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionSchedulingServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionSchedulingServiceImpl.java
new file mode 100644
index 0000000..0ce8ddb
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionSchedulingServiceImpl.java
@@ -0,0 +1,103 @@
+package com.ruoyi.business.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.business.entity.Production;
+import com.ruoyi.business.entity.ProductionScheduling;
+import com.ruoyi.business.mapper.ProductionMapper;
+import com.ruoyi.business.mapper.ProductionSchedulingMapper;
+import com.ruoyi.business.service.ProductionSchedulingService;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.mapper.SysUserMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/8/25 16:38
+ */
+@Service
+@Slf4j
+public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSchedulingMapper, ProductionScheduling> implements ProductionSchedulingService {
+
+    @Autowired
+    private ProductionSchedulingMapper productionSchedulingMapper;
+
+    @Autowired
+    private ProductionMapper productionMapper;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private ProductionMasterServiceImpl productionMasterService;
+
+    @Override
+    public IPage<ProductionScheduling> listPage(Page<ProductionScheduling> page, ProductionScheduling productionScheduling) {
+        return productionSchedulingMapper.listPage(page, productionScheduling);
+    }
+
+    @Override
+    public boolean addProductionScheduling(List<ProductionScheduling> productionScheduling) {
+        if (CollectionUtils.isEmpty(productionScheduling)) {
+            return false;
+        }
+        BigDecimal reduce = productionScheduling.stream()
+                .map(ProductionScheduling::getSchedulingNum)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        if(reduce.compareTo(productionScheduling.get(0).getProductionQuantity()) < 0){
+            return false;
+        }
+        Production production = productionMapper.selectById(productionScheduling.get(0).getProductionId());
+        if(production == null){
+            throw new RuntimeException("鐢熶骇璁㈠崟涓虹┖");
+        }
+        production.setStatus(2);
+        if(reduce.compareTo(productionScheduling.get(0).getProductionQuantity()) == 0){
+            production.setStatus(3);
+        }
+        productionMapper.updateById(production);
+        for (ProductionScheduling scheduling : productionScheduling) {
+            SysUser sysUser = sysUserMapper.selectUserById(scheduling.getSchedulingUserId());
+            if(sysUser == null) throw new RuntimeException("鎺掍骇浜哄憳涓嶅瓨鍦�");
+            scheduling.setStatus(1);
+            scheduling.setSchedulingUserName(sysUser.getNickName());
+            productionSchedulingMapper.insert(scheduling);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean work(ProductionScheduling productionScheduling) {
+        ProductionScheduling productionScheduling1 = productionSchedulingMapper.selectById(productionScheduling.getId());
+        if(productionScheduling1 == null){
+            throw new RuntimeException("鐢熶骇鎶ュ伐涓嶅瓨鍦�");
+        }
+        Production production = productionMapper.selectById(productionScheduling1.getProductionId());
+        if(production == null){
+            throw new RuntimeException("鐢熶骇璁㈠崟涓虹┖");
+        }
+        production.setProductionQuantity(productionScheduling.getSuccessNum());
+        production.setProducerId(productionScheduling.getSchedulingUserId());
+        // 鍏ュ簱
+        productionMasterService.insertPendingInventory(Arrays.asList(production));
+        // 淇敼鎶ュ伐琛ㄧ殑鍏ュ簱鏁伴噺
+
+        productionScheduling1.setSuccessNum(productionScheduling1.getSuccessNum().add(productionScheduling.getSuccessNum()));
+        productionScheduling1.setStatus(2);
+        // 鍏ュ簱鏁伴噺 == 鎺掍骇鏁伴噺 鍒欎慨鏀圭敓浜ц鍗曠姸鎬�
+        if(productionScheduling1.getSuccessNum().compareTo(productionScheduling1.getSchedulingNum()) == 0){
+            productionScheduling1.setStatus(3);
+        }
+        productionSchedulingMapper.updateById(productionScheduling1);
+        return true;
+    }
+}

--
Gitblit v1.9.3