futian.liu
2023-11-13 c3324e194441e601d474601bd0f7ac62c120c486
consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java
@@ -1,24 +1,25 @@
package com.consum.base.service;
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.util.LockManage;
import com.consum.model.po.*;
import com.consum.base.core.utils.LockManage;
import com.consum.model.po.LWarehouseFlow;
import com.consum.model.po.LWhFormScrapped;
import com.consum.model.po.LWhFormScrappedGoods;
import com.consum.model.po.LWhGoodsRecord;
import com.iplatform.model.po.S_user_core;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.NumberGenerator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @ClassName LWhFormScrappedCoreService
 * @Date 2023/10/30
 * @Description
 * @Version 1.0
@@ -26,7 +27,8 @@
@Service
@Slf4j
public class LWhFormScrappedCoreService {
    private LWhFormScrappedServiceImpl lWhFormScrappedService;
    private GoodsBaseServiceImpl goodsBaseService;
    private LWhFormScrappedGoodsService lWhFormScrappedGoodsService;
    private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
    private LWhGoodsService lWhGoodsService;
@@ -35,20 +37,21 @@
    private LWarehouseFlowService lWarehouseFlowService;
    @Autowired
    public LWhFormScrappedCoreService(LWhFormScrappedServiceImpl lWhFormScrappedService,
                                      LWhFormScrappedGoodsService lWhFormScrappedGoodsService,
                                      BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
                                      LWhGoodsService lWhGoodsService,
                                      LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService,
                                      LWhGoodsRecordService lWhGoodsRecordService,
                                      LWarehouseFlowService lWarehouseFlowService) {
        this.lWhFormScrappedService = lWhFormScrappedService;
    public LWhFormScrappedCoreService(GoodsBaseServiceImpl goodsBaseService,
        LWhFormScrappedGoodsService lWhFormScrappedGoodsService,
        BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
        LWhGoodsService lWhGoodsService,
        LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService,
        LWhGoodsRecordService lWhGoodsRecordService,
        LWarehouseFlowService lWarehouseFlowService) {
//        this.lWhFormScrappedService = lWhFormScrappedService;
        this.lWhFormScrappedGoodsService = lWhFormScrappedGoodsService;
        this.baseGoodsTemplateService = baseGoodsTemplateService;
        this.lWhGoodsService = lWhGoodsService;
        this.lWhGoodsRecordDetailsService = lWhGoodsRecordDetailsService;
        this.lWhGoodsRecordService = lWhGoodsRecordService;
        this.lWarehouseFlowService = lWarehouseFlowService;
        this.goodsBaseService = goodsBaseService;
    }
@@ -64,7 +67,7 @@
            return null;
        }
        LWhFormScrapped lWhFormScrapped = new LWhFormScrapped(formScrappedId);
        lWhFormScrapped = lWhFormScrappedService.get(lWhFormScrapped);
        lWhFormScrapped = goodsBaseService.get(lWhFormScrapped);
        if (lWhFormScrapped != null && lWhFormScrapped.getStates() != 0) {
            log.error("报废失败!请检查报废单状态");
            return null;
@@ -89,7 +92,8 @@
        }
        // 按型号分组
        Map<Long, List<LWhFormScrappedGoods>> modelGroup = formScrappedGoods.stream().collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsModelsId));
        Map<Long, List<LWhFormScrappedGoods>> modelGroup = formScrappedGoods.stream()
            .collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsModelsId));
        for (Map.Entry<Long, List<LWhFormScrappedGoods>> entry : modelGroup.entrySet()) {
            //规格型号编号
            Long baseGoodsModelsId = entry.getKey();
@@ -135,7 +139,8 @@
                        //使用人员名称
                        String userName = formScrappedGood.getUserName();
                        // 根据分发单、规格型号编号、使用人员名称,进行报废
                        srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(warehouseType, warehouseId, transBusinessId, userName, baseGoodsModelsId, (short) 2, counts);
                        srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(warehouseType, warehouseId, transBusinessId, userName, baseGoodsModelsId,
                            (short) 2, counts);
                    }
                    if (CollectionUtils.isEmpty(srappedGoodsIds) || srappedGoodsIds.size() < counts) {
                        log.error("要报废的物品数量不足!");
@@ -148,7 +153,7 @@
                    whGoodsRecord.setEndCount(goodsModelNum - counts);
                    // 设置物品为报废状态
                    lWhGoodsService.modGoodsTransfering(srappedGoodsIds, null, null, null, (short) 3);
                    lWhGoodsService.modGoodsTransfering(srappedGoodsIds, null, null, null, 3);
                    // 批量插入 进出库流水明细[L_WH_GOODS_RECORD_DETAILS]
                    lWhGoodsRecordDetailsService.sameGoodsInsertMore(srappedGoodsIds, whGoodsRecordId, (short) 2);
                }
@@ -174,8 +179,8 @@
            return null;
        }
        // 更新报废单
         lWhFormScrapped = new LWhFormScrapped(formScrappedId);
        lWhFormScrapped = lWhFormScrappedService.get(lWhFormScrapped);
        lWhFormScrapped = new LWhFormScrapped(formScrappedId);
        lWhFormScrapped = goodsBaseService.get(lWhFormScrapped);
        if (lWhFormScrapped != null && lWhFormScrapped.getStates() != 0) {
            log.error("报废失败!请检查报废单状态");
            return null;
@@ -185,7 +190,7 @@
        lWhFormScrapped.setOperatorId(userId);
        lWhFormScrapped.setOperatorName(nickName);
        lWhFormScrapped.setDealTime(dealTime);
        lWhFormScrappedService.update(lWhFormScrapped);
        goodsBaseService.update(lWhFormScrapped);
        return lWarehouseFlowId;
    }