AsServiceImpl.java 3.75 KB
package com.huaheng.api.as.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
import com.huaheng.pc.shipment.shipmentHeader.domain.ASDocumentDetail;
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 升降柜实现方法
 * @author xcq
 */
@Service
public class AsServiceImpl implements AsService {

    @Resource
    private ShipmentDetailService shipmentDetailService;
    @Resource
    private ShipmentHeaderService shipmentHeaderService;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult executionResultFeedbackService(List<ASDocumentDetail> asDocumentDetailList) {
        if (asDocumentDetailList == null || asDocumentDetailList.size() == 0){
            return AjaxResult.error("执行结果不能为空值!");
        }
        List<String> codes = asDocumentDetailList.stream().map(ASDocumentDetail::getRIG_ORDINE).distinct().collect(Collectors.toList());
        for (ASDocumentDetail asDocumentDetail : asDocumentDetailList){
            String code = asDocumentDetail.getRIG_ORDINE();
            String materialCode = asDocumentDetail.getRIG_ARTICOLO();
            // 查询出库单详情
            LambdaQueryWrapper<ShipmentDetail> query = Wrappers.lambdaQuery();
            query.eq(ShipmentDetail::getShipmentCode, code)
                    .eq(ShipmentDetail::getMaterialCode, materialCode);
            ShipmentDetail shipmentDetail = shipmentDetailService.getOne(query);
            if (shipmentDetail != null && (!QuantityConstant.SHIPMENT_HEADER_RETURN.equals(shipmentDetail.getStatus()))){
                shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
                shipmentDetail.setTaskQty(asDocumentDetail.getRIG_QTAE());
                shipmentDetailService.updateById(shipmentDetail);
            }
        }
        for (String code : codes){
            LambdaQueryWrapper<ShipmentDetail> query = Wrappers.lambdaQuery();
            query.eq(ShipmentDetail::getShipmentCode, code);
            List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(query);
            Boolean complete = true;
            BigDecimal total = BigDecimal.ZERO;
            for (ShipmentDetail item : shipmentDetailList){
                if (!QuantityConstant.SHIPMENT_HEADER_RETURN.equals(item.getStatus())){
                    complete = false;
                }
                total = total.add(item.getTaskQty());
            }
            if (complete){
                LambdaQueryWrapper<ShipmentHeader> queryWrapper = Wrappers.lambdaQuery();
                queryWrapper.eq(ShipmentHeader::getCode, code);
                ShipmentHeader shipmentHeader = shipmentHeaderService.getOne(queryWrapper);
                shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
                shipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
                shipmentHeader.setTotalQty(total);
                shipmentHeaderService.updateById(shipmentHeader);
            }

        }
        return AjaxResult.success();
    }
}