自动化立体仓库 - WMS系统
#
LSH
2023-12-29 63817fb8bd1933714c4a51d552f15b6e4342c976
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -18,6 +18,7 @@
import com.zy.asrs.utils.MatUtils;
import com.zy.common.model.DetlDto;
import com.zy.common.utils.NodeUtils;
import com.zy.erp.kingdee.enums.KingDeeUtilType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -133,14 +134,26 @@
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getOwnerName(),detail.getPayment());
            dto.setBeBatch(detail.getBeBatch());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
            KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
            if (kingDeeUtilType.entryId==1){
                if (DetlDto.has2(list, dto)) {
                    DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),detail.getOwnerName(),detail.getBeBatch());
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
            } else {
                list.add(dto);
            }
            dto.setWeight(detail.getWeight());
            }else {
                if (DetlDto.has1(list, dto)) {
                    DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),detail.getOwnerName());
                    assert detlDto != null;
                    detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
                } else {
                    list.add(dto);
                }
                dto.setWeight(detail.getWeight());
            }
        }
        for (DetlDto detlDto : list) {
            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -168,7 +181,7 @@
            if (Cools.isEmpty(locOwner)){
                throw new CoolException("生成单据明细失败,请联系管理员");
            }else {
                orderDetl.setOwner(locOwner.getId().intValue());
                orderDetl.setOwner(locOwner.getId());
            }
            orderDetl.setPayment(detlDto.getPayment());
            orderDetl.setStatus(1);
@@ -185,6 +198,20 @@
    @Transactional
    public void pakoutOrderCreate(OpenOrderPakoutParam param) {
        Order order = orderService.selectByNo(param.getOrderNo());
        for (DetlDto detlDto : param.getOrderDetails()){
            if (Cools.isEmpty(detlDto) || Cools.isEmpty(detlDto.getOwnerName(),detlDto.getPayment())){
                throw new CoolException(param.getOrderNo() + "缺少货主或货物形态");
            }else {
                LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().eq("owner", detlDto.getOwnerName()));
                if (Cools.isEmpty(locOwner)){
                    LocOwner locOwner1 = new LocOwner();
                    locOwner1.setOwner(detlDto.getOwnerName());
                    locOwnerService.insert(locOwner1);
                }
            }
        }
        // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
        if (!Cools.isEmpty(order)) {
            if (order.getSettle() > 1L) {
@@ -238,16 +265,28 @@
        List<DetlDto> list = new ArrayList<>();
        List<DetlDto> orderDetails = param.getOrderDetails();
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getOwnerName(),detail.getPayment());
            dto.setBeBatch(detail.getBeBatch());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
            KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
            if (kingDeeUtilType.entryId==1){
                if (DetlDto.has2(list, dto)) {
                    DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),detail.getOwnerName(),detail.getBeBatch());
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
            } else {
                list.add(dto);
            }
            dto.setWeight(detail.getWeight());
            }else {
                if (DetlDto.has1(list, dto)) {
                    DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),detail.getOwnerName());
                    assert detlDto != null;
                    detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
                } else {
                    list.add(dto);
                }
                dto.setWeight(detail.getWeight());
            }
        }
        for (DetlDto detlDto : list) {
            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -266,8 +305,15 @@
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            orderDetl.setOwner(detlDto.getOwner());
            orderDetl.setBeBatch(detlDto.getBeBatch());
            orderDetl.setWeight(detlDto.getWeight());
            LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().eq("owner", detlDto.getOwnerName()));
            if (Cools.isEmpty(locOwner)){
                throw new CoolException("生成单据明细失败,请联系管理员");
            }else {
                orderDetl.setOwner(locOwner.getId());
            }
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
@@ -342,8 +388,10 @@
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getOwnerName(),detail.getPayment());
            dto.setBeBatch(detail.getBeBatch());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
            dto.setSourceLocName(detail.getSourceLocName());
            dto.setTargetLocName(detail.getTargetLocName());
            if (DetlDto.has3(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),dto.getOwnerName(),dto.getSourceLocName(),dto.getTargetLocName());
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
            } else {
@@ -384,6 +432,8 @@
            orderDetl.setQty(0.0D);
            orderDetl.setBeBatch(detlDto.getBeBatch());
            orderDetl.setWeight(detlDto.getWeight());
            orderDetl.setSourceLocName(detlDto.getSourceLocName());
            orderDetl.setTargetLocName(detlDto.getTargetLocName());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }