From 2329f548c36876a59a7808e8c96466e94e088350 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 04 二月 2026 14:41:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java |  367 ++++++++++++++++++++++++++--------------------------
 1 files changed, 182 insertions(+), 185 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
index 2135a8b..6573b73 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
@@ -1,185 +1,182 @@
-package com.ruoyi.production.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.framework.security.LoginUser;
-import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.Details;
-import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
-import com.ruoyi.procurementrecord.service.impl.ProcurementRecordOutServiceImpl;
-import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl;
-import com.ruoyi.production.dto.ProductionReportDto;
-import com.ruoyi.production.dto.SalesLedgerWorkDto;
-import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
-import com.ruoyi.production.mapper.SalesLedgerWorkMapper;
-import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
-import com.ruoyi.production.pojo.SalesLedgerWork;
-import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
-import com.ruoyi.production.service.SalesLedgerWorkService;
-import com.ruoyi.project.system.domain.SysUser;
-import com.ruoyi.project.system.mapper.SysUserMapper;
-import com.ruoyi.sales.mapper.LossMapper;
-import com.ruoyi.sales.pojo.Loss;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author :yys
- * @date : 2025/7/21 14:40
- */
-@Service
-@RequiredArgsConstructor
-@Slf4j
-public class SalesLedgerWorkServiceImpl extends ServiceImpl<SalesLedgerWorkMapper, SalesLedgerWork> implements SalesLedgerWorkService {
-
-    private final SalesLedgerWorkMapper salesLedgerWorkMapper;
-
-    private final SysUserMapper sysUserMapper;
-
-    private final LossMapper lossMapper;
-
-    private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
-
-    @Override
-    public IPage<SalesLedgerWorkDto> listPage(Page page, SalesLedgerWorkDto salesLedgerWorkDto) {
-        IPage<SalesLedgerWorkDto> iPage = salesLedgerWorkMapper.listPage(page, salesLedgerWorkDto);
-        List<Loss> losses = lossMapper.selectList(null);
-        if(!CollectionUtils.isEmpty(losses)){
-            iPage.getRecords().forEach(item -> {
-                String[] split = item.getSpecificationModel().split("\\*");
-                if(split.length == 2 && isNumeric(split[1]) && isNumeric(split[0])){
-                    // 璁$畻鎹熻�楋紙100000浠h〃 鎹熻�楃殑 100 鍜� 鍗曚綅杞崲鐨�1000锛�
-                    BigDecimal divide = new BigDecimal(split[0])
-                            .multiply(new BigDecimal(split[1]))
-                            .multiply(item.getFinishedNum())
-                            .multiply(losses.get(0).getRate())
-                            .divide(new BigDecimal(100000), 2, RoundingMode.HALF_UP);
-                    item.setLoss(divide.toString());
-                }
-
-            });
-        }
-        return iPage;
-    }
-
-    public static boolean isNumeric(String str) {
-        if (str == null || str.isEmpty()) {
-            return false;
-        }
-        // 閬嶅巻瀛楃涓茬殑姣忎釜瀛楃锛屾鏌ユ槸鍚︿负鏁板瓧
-        for (int i = 0; i < str.length(); i++) {
-            if (!Character.isDigit(str.charAt(i))) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private final ProcurementRecordServiceImpl procurementRecordService;
-
-    @Override
-    public int productionReport(ProductionReportDto productionReportDto) {
-        SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(productionReportDto.getId());
-        SysUser sysUser = sysUserMapper.selectUserById(productionReportDto.getSchedulingUserId());
-        if (salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
-        if (salesLedgerWork.getStatus() == 3) throw new RuntimeException("鎶ュ伐宸插畬鎴�");
-        if (sysUser == null) throw new RuntimeException("鐢熶骇浜轰笉瀛樺湪");
-        salesLedgerWork.setFinishedNum(salesLedgerWork.getFinishedNum().add(productionReportDto.getFinishedNum()));
-        if(salesLedgerWork.getSchedulingNum().compareTo(salesLedgerWork.getFinishedNum()) <= 0){
-            salesLedgerWork.setStatus(3);
-        }else{
-            salesLedgerWork.setStatus(2);
-        }
-        salesLedgerWorkMapper.updateById(salesLedgerWork);
-        // 鏂板鎶ュ伐鏁版嵁
-        SalesLedgerProductionAccounting.SalesLedgerProductionAccountingBuilder builder = SalesLedgerProductionAccounting.builder()
-                .salesLedgerWorkId(salesLedgerWork.getId())
-                .salesLedgerSchedulingId(salesLedgerWork.getSalesLedgerSchedulingId())
-                .salesLedgerId(salesLedgerWork.getSalesLedgerId())
-                .salesLedgerProductId((long)salesLedgerWork.getSalesLedgerProductId())
-                .schedulingUserId(sysUser.getUserId())
-                .schedulingUserName(sysUser.getNickName())
-                .finishedNum(productionReportDto.getFinishedNum())
-                .workHours(salesLedgerWork.getWorkHours())
-                .process(salesLedgerWork.getProcess())
-                .schedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
-        salesLedgerProductionAccountingMapper.insert(builder.build());
-        // 鐢熶骇鎶ュ伐鎴愬姛 -> 鍏ュ簱
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto();
-        procurementRecordOutAdd.setType(2);
-        procurementRecordOutAdd.setTypeName("鐢熶骇鍏ュ簱");
-        procurementRecordOutAdd.setNickName(loginUser.getNickName());
-        List<Details> details = new ArrayList<>();
-        Details details1 = new Details();
-        details1.setInboundQuantity(productionReportDto.getFinishedNum());
-        details1.setId(Integer.parseInt(salesLedgerWork.getSalesLedgerProductId().toString()));
-        details1.setUnitPrice(productionReportDto.getUnitPrice());
-        details1.setTotalPrice(productionReportDto.getTotalPrice());
-        details.add(details1);
-        procurementRecordOutAdd.setDetails(details);
-        procurementRecordService.add(procurementRecordOutAdd);
-
-        return 0;
-    }
-
-    @Override
-    public int productionReportUpdate(ProductionReportDto productionReportDto) {
-        SalesLedgerProductionAccounting salesLedgerProductionAccounting = salesLedgerProductionAccountingMapper.selectById(productionReportDto.getId());
-        if(salesLedgerProductionAccounting == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
-        SysUser sysUser = sysUserMapper.selectUserById(productionReportDto.getSchedulingUserId());
-        if(sysUser == null) throw new RuntimeException("鐢熶骇浜轰笉瀛樺湪");
-        salesLedgerProductionAccounting.setFinishedNum(productionReportDto.getFinishedNum());
-        salesLedgerProductionAccounting.setSchedulingUserId(sysUser.getUserId());
-        salesLedgerProductionAccounting.setSchedulingUserName(sysUser.getNickName());
-        salesLedgerProductionAccounting.setSchedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
-        salesLedgerProductionAccountingMapper.updateById(salesLedgerProductionAccounting);
-
-        // 鏇存柊鎶ュ伐鏁版嵁
-        SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(salesLedgerProductionAccounting.getSalesLedgerWorkId());
-        if(salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
-        salesLedgerWork.setFinishedNum(productionReportDto.getFinishedNum());
-        if(salesLedgerWork.getSchedulingNum().compareTo(salesLedgerWork.getFinishedNum()) <= 0){
-            salesLedgerWork.setStatus(3);
-        }else{
-            salesLedgerWork.setStatus(2);
-        }
-        salesLedgerWork.setSchedulingUserId(sysUser.getUserId());
-        salesLedgerWork.setSchedulingUserName(sysUser.getNickName());
-        salesLedgerWork.setSchedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
-        salesLedgerWorkMapper.updateById(salesLedgerWork);
-        return 0;
-    }
-
-    @Override
-    public List<ProductionReportDto> getList(Long id) {
-        SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(id);
-        if(salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
-        LambdaQueryWrapper<SalesLedgerProductionAccounting> salesLedgerProductionAccountingLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        salesLedgerProductionAccountingLambdaQueryWrapper.eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, id);
-        List<SalesLedgerProductionAccounting> salesLedgerProductionAccountingList = salesLedgerProductionAccountingMapper.selectList(salesLedgerProductionAccountingLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty(salesLedgerProductionAccountingList)) throw new RuntimeException("娌℃湁鐢熶骇璁板綍鏁版嵁");
-        return salesLedgerProductionAccountingList.stream().map(salesLedgerProductionAccounting -> {
-            ProductionReportDto productionReportDto = new ProductionReportDto();
-            BeanUtils.copyProperties(salesLedgerProductionAccounting, productionReportDto);
-            productionReportDto.setSchedulingDate(salesLedgerProductionAccounting.getSchedulingDate().format(DateTimeFormatter.ISO_LOCAL_DATE));
-            productionReportDto.setSchedulingNum(salesLedgerWork.getSchedulingNum());
-            return productionReportDto;
-        }).collect(Collectors.toList());
-    }
-}
+//package com.ruoyi.production.service.impl;
+//
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.baomidou.mybatisplus.core.metadata.IPage;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+//import com.ruoyi.common.utils.SecurityUtils;
+//import com.ruoyi.framework.security.LoginUser;
+//import com.ruoyi.framework.web.domain.AjaxResult;
+//import com.ruoyi.procurementrecord.dto.Details;
+//import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
+//import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
+//import com.ruoyi.procurementrecord.service.impl.ProcurementRecordOutServiceImpl;
+//import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl;
+//import com.ruoyi.production.dto.ProductionReportDto;
+//import com.ruoyi.production.dto.SalesLedgerWorkDto;
+//import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
+//import com.ruoyi.production.mapper.SalesLedgerWorkMapper;
+//import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
+//import com.ruoyi.production.pojo.SalesLedgerWork;
+//import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
+//import com.ruoyi.production.service.SalesLedgerWorkService;
+//import com.ruoyi.project.system.domain.SysUser;
+//import com.ruoyi.project.system.mapper.SysUserMapper;
+//import com.ruoyi.sales.mapper.LossMapper;
+//import com.ruoyi.sales.pojo.Loss;
+//import lombok.RequiredArgsConstructor;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.BeanUtils;
+//import org.springframework.stereotype.Service;
+//import org.springframework.util.CollectionUtils;
+//
+//import java.math.BigDecimal;
+//import java.math.RoundingMode;
+//import java.time.LocalDate;
+//import java.time.format.DateTimeFormatter;
+//import java.util.ArrayList;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * @author :yys
+// * @date : 2025/7/21 14:40
+// */
+//@Service
+//@RequiredArgsConstructor
+//@Slf4j
+//public class SalesLedgerWorkServiceImpl extends ServiceImpl<SalesLedgerWorkMapper, SalesLedgerWork> implements SalesLedgerWorkService {
+//
+//    private final SalesLedgerWorkMapper salesLedgerWorkMapper;
+//
+//    private final SysUserMapper sysUserMapper;
+//
+//    private final LossMapper lossMapper;
+//
+//    private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
+//
+//    @Override
+//    public IPage<SalesLedgerWorkDto> listPage(Page page, SalesLedgerWorkDto salesLedgerWorkDto) {
+//        IPage<SalesLedgerWorkDto> iPage = salesLedgerWorkMapper.listPage(page, salesLedgerWorkDto);
+//        List<Loss> losses = lossMapper.selectList(null);
+//        if(!CollectionUtils.isEmpty(losses)){
+//            iPage.getRecords().forEach(item -> {
+//                String[] split = item.getSpecificationModel().split("\\*");
+//                if(split.length == 2 && isNumeric(split[1]) && isNumeric(split[0])){
+//                    // 璁$畻鎹熻�楋紙100000浠h〃 鎹熻�楃殑 100 鍜� 鍗曚綅杞崲鐨�1000锛�
+//                    BigDecimal divide = new BigDecimal(split[0])
+//                            .multiply(new BigDecimal(split[1]))
+//                            .multiply(item.getFinishedNum())
+//                            .multiply(losses.get(0).getRate())
+//                            .divide(new BigDecimal(100000), 2, RoundingMode.HALF_UP);
+//                    item.setLoss(divide.toString());
+//                }
+//
+//            });
+//        }
+//        return iPage;
+//    }
+//
+//    public static boolean isNumeric(String str) {
+//        if (str == null || str.isEmpty()) {
+//            return false;
+//        }
+//        // 閬嶅巻瀛楃涓茬殑姣忎釜瀛楃锛屾鏌ユ槸鍚︿负鏁板瓧
+//        for (int i = 0; i < str.length(); i++) {
+//            if (!Character.isDigit(str.charAt(i))) {
+//                return false;
+//            }
+//        }
+//        return true;
+//    }
+//
+//    private final ProcurementRecordServiceImpl procurementRecordService;
+//
+//    @Override
+//    public int productionReport(ProductionReportDto productionReportDto) {
+//        SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(productionReportDto.getId());
+//        SysUser sysUser = sysUserMapper.selectUserById(productionReportDto.getSchedulingUserId());
+//        if (salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
+//        if (salesLedgerWork.getStatus() == 3) throw new RuntimeException("鎶ュ伐宸插畬鎴�");
+//        if (sysUser == null) throw new RuntimeException("鐢熶骇浜轰笉瀛樺湪");
+//        salesLedgerWork.setFinishedNum(salesLedgerWork.getFinishedNum().add(productionReportDto.getFinishedNum()));
+//        if(salesLedgerWork.getSchedulingNum().compareTo(salesLedgerWork.getFinishedNum()) <= 0){
+//            salesLedgerWork.setStatus(3);
+//        }else{
+//            salesLedgerWork.setStatus(2);
+//        }
+//        salesLedgerWorkMapper.updateById(salesLedgerWork);
+//        // 鏂板鎶ュ伐鏁版嵁
+//        SalesLedgerProductionAccounting.SalesLedgerProductionAccountingBuilder builder = SalesLedgerProductionAccounting.builder()
+//                .productMainId(null)
+//                .schedulingUserId(sysUser.getUserId())
+//                .schedulingUserName(sysUser.getNickName())
+//                .finishedNum(productionReportDto.getFinishedNum())
+//                .workHours(salesLedgerWork.getWorkHours())
+//                .process(salesLedgerWork.getProcess())
+//                .schedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
+//        salesLedgerProductionAccountingMapper.insert(builder.build());
+//        // 鐢熶骇鎶ュ伐鎴愬姛 -> 鍏ュ簱
+//        LoginUser loginUser = SecurityUtils.getLoginUser();
+//        ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto();
+//        procurementRecordOutAdd.setType(2);
+//        procurementRecordOutAdd.setTypeName("鐢熶骇鍏ュ簱");
+//        procurementRecordOutAdd.setNickName(loginUser.getNickName());
+//        List<Details> details = new ArrayList<>();
+//        Details details1 = new Details();
+//        details1.setInboundQuantity(productionReportDto.getFinishedNum());
+//        details1.setId(Integer.parseInt(salesLedgerWork.getSalesLedgerProductId().toString()));
+//        details1.setUnitPrice(productionReportDto.getUnitPrice());
+//        details1.setTotalPrice(productionReportDto.getTotalPrice());
+//        details.add(details1);
+//        procurementRecordOutAdd.setDetails(details);
+//        procurementRecordService.add(procurementRecordOutAdd);
+//
+//        return 0;
+//    }
+//
+//    @Override
+//    public int productionReportUpdate(ProductionReportDto productionReportDto) {
+//        SalesLedgerProductionAccounting salesLedgerProductionAccounting = salesLedgerProductionAccountingMapper.selectById(productionReportDto.getId());
+//        if(salesLedgerProductionAccounting == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
+//        SysUser sysUser = sysUserMapper.selectUserById(productionReportDto.getSchedulingUserId());
+//        if(sysUser == null) throw new RuntimeException("鐢熶骇浜轰笉瀛樺湪");
+//        salesLedgerProductionAccounting.setFinishedNum(productionReportDto.getFinishedNum());
+//        salesLedgerProductionAccounting.setSchedulingUserId(sysUser.getUserId());
+//        salesLedgerProductionAccounting.setSchedulingUserName(sysUser.getNickName());
+//        salesLedgerProductionAccounting.setSchedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
+//        salesLedgerProductionAccountingMapper.updateById(salesLedgerProductionAccounting);
+//
+//        // 鏇存柊鎶ュ伐鏁版嵁
+//        SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(salesLedgerProductionAccounting.getSalesLedgerWorkId());
+//        if(salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
+//        salesLedgerWork.setFinishedNum(productionReportDto.getFinishedNum());
+//        if(salesLedgerWork.getSchedulingNum().compareTo(salesLedgerWork.getFinishedNum()) <= 0){
+//            salesLedgerWork.setStatus(3);
+//        }else{
+//            salesLedgerWork.setStatus(2);
+//        }
+//        salesLedgerWork.setSchedulingUserId(sysUser.getUserId());
+//        salesLedgerWork.setSchedulingUserName(sysUser.getNickName());
+//        salesLedgerWork.setSchedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
+//        salesLedgerWorkMapper.updateById(salesLedgerWork);
+//        return 0;
+//    }
+//
+//    @Override
+//    public List<ProductionReportDto> getList(Long id) {
+//        SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(id);
+//        if(salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
+//        LambdaQueryWrapper<SalesLedgerProductionAccounting> salesLedgerProductionAccountingLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        salesLedgerProductionAccountingLambdaQueryWrapper.eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, id);
+//        List<SalesLedgerProductionAccounting> salesLedgerProductionAccountingList = salesLedgerProductionAccountingMapper.selectList(salesLedgerProductionAccountingLambdaQueryWrapper);
+//        if(CollectionUtils.isEmpty(salesLedgerProductionAccountingList)) throw new RuntimeException("娌℃湁鐢熶骇璁板綍鏁版嵁");
+//        return salesLedgerProductionAccountingList.stream().map(salesLedgerProductionAccounting -> {
+//            ProductionReportDto productionReportDto = new ProductionReportDto();
+//            BeanUtils.copyProperties(salesLedgerProductionAccounting, productionReportDto);
+//            productionReportDto.setSchedulingDate(salesLedgerProductionAccounting.getSchedulingDate().format(DateTimeFormatter.ISO_LOCAL_DATE));
+//            productionReportDto.setSchedulingNum(salesLedgerWork.getSchedulingNum());
+//            return productionReportDto;
+//        }).collect(Collectors.toList());
+//    }
+//}

--
Gitblit v1.9.3