验收明细和出租台账中可按设备单次验收或出租
所有验收明细中设备数量与合同中设备数量一致修改合同状态
所有台账明细中设备数量与合同中设备数量一致修改合同状态
2个文件已修改
79 ■■■■ 已修改文件
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java
@@ -68,8 +68,19 @@
            for (DeviceLeasingLedgerItem item:deviceLeasingLedger.getLedgerItemList()
            ) {
                if (contractItem.getDeviceId().equals(item.getDeviceId())){
                    if (contractItem.getNum()!=item.getNum()) {
                        return R.failed("合同中"+item.getDeviceName()+"设备数量与台账明细中不一致");
                    if (contractItem.getNum()<item.getNum()) {
                        return R.failed("合同中"+item.getDeviceName()+"设备数量与台账明细中不一致,无法建立台账");
                    }
                    //查询是否有历史出账
                    QueryWrapper<DeviceLeasingLedgerItem> queryWrapperLedgerItem = new QueryWrapper<>();
                    queryWrapperLedgerItem.eq("contract_id",contract.getId());
                    queryWrapperLedgerItem.eq("device_id",contractItem.getDeviceId());
                    List<DeviceLeasingLedgerItem> noteItemList = itemMapper.selectList(queryWrapperLedgerItem);
                    if (noteItemList != null&&noteItemList.size()>0) {
                        Integer deviceNum = noteItemList.stream().mapToInt(DeviceLeasingLedgerItem::getNum).sum();
                        if (contractItem.getNum()<(item.getNum()+deviceNum)) {
                            return R.failed("合同中"+item.getDeviceName()+"设备数量出租台账已超出设备库存,无法建立台账");
                        }
                    }
                }
            }
@@ -124,7 +135,23 @@
                }
            }
        }
        //合同明细中与台账对比
        for (ContractItem contractItem:list
        ) {
            //查询实际台账情况
            QueryWrapper<DeviceLeasingLedgerItem> queryWrapperLedgerItem = new QueryWrapper<>();
            queryWrapperLedgerItem.eq("contract_id",contract.getId());
            queryWrapperLedgerItem.eq("device_id",contractItem.getDeviceId());
            List<DeviceLeasingLedgerItem> ledgerItemList = itemMapper.selectList(queryWrapperLedgerItem);
            if (ledgerItemList != null&&ledgerItemList.size()>0) {
                Integer deviceNum = ledgerItemList.stream().mapToInt(DeviceLeasingLedgerItem::getNum).sum();
                if (contractItem.getNum()!=deviceNum) {
                    return R.ok();
                }
            }else {
                return R.ok();
            }
        }
        //更新合同状态为完成
        contract.setStatus(2);
        contractMapper.updateById(contract);
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java
@@ -57,24 +57,33 @@
        QueryWrapper<ContractItem> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("contract_id",contract.getId());
        List<ContractItem> list = contractItemMapper.selectList(queryWrapper);
        //比较设备种类是否一致
        if (list.size()!=entity.getNoteItemList().size()){
            return R.failed("合同中设备种类与验收明细中不一致");
        }
//
//        //比较设备种类是否一致
//        if (list.size()!=entity.getNoteItemList().size()){
//            return R.failed("合同中设备种类与验收明细中不一致");
//        }
//
        //比较单个设备台账数量是否与合同中一致
        for (ContractItem contractItem:list
        ) {
            for (ReceivingNoteItem item:entity.getNoteItemList()
            ) {
                if (contractItem.getDeviceId().equals(item.getDeviceId())){
                    if (contractItem.getNum()!=item.getNum()) {
                        return R.failed("合同中"+item.getDeviceName()+"设备数量与验收明细中不一致");
                    if (contractItem.getNum()>=item.getNum()) {
                        return R.failed("验收明细中"+item.getDeviceName()+"设备数量不能超过合同明细中签订的设备数量");
                    }
                    //查询是否有历史验收
                    QueryWrapper<ReceivingNoteItem> queryWrapperNoteItem = new QueryWrapper<>();
                    queryWrapperNoteItem.eq("contract_id",contract.getId());
                    queryWrapperNoteItem.eq("device_id",contractItem.getDeviceId());
                    List<ReceivingNoteItem> noteItemList = itemMapper.selectList(queryWrapperNoteItem);
                    if (noteItemList != null&&noteItemList.size()>0) {
                        Integer deviceNum = noteItemList.stream().mapToInt(ReceivingNoteItem::getNum).sum();
                        if (contractItem.getNum()>=(item.getNum()+deviceNum)) {
                            return R.failed("合同中"+item.getDeviceName()+"设备数量与实际验收明细中不一致");
                        }
                    }
                }
                //设备序列号检查是否有相同的存在
                List<String> serialArr = Arrays.stream(item.getSerialNos().split(",")).collect(Collectors.toList());
                for (String serialNo:serialArr
@@ -144,6 +153,23 @@
            }
        }
        //合同明细中与实际验收对比
        for (ContractItem contractItem:list
        ) {
            //查询实际验收情况
            QueryWrapper<ReceivingNoteItem> queryWrapperNoteItem = new QueryWrapper<>();
            queryWrapperNoteItem.eq("contract_id",contract.getId());
            queryWrapperNoteItem.eq("device_id",contractItem.getDeviceId());
            List<ReceivingNoteItem> noteItemList = itemMapper.selectList(queryWrapperNoteItem);
            if (noteItemList != null&&noteItemList.size()>0) {
                Integer deviceNum = noteItemList.stream().mapToInt(ReceivingNoteItem::getNum).sum();
                if (contractItem.getNum()!=deviceNum) {
                    return R.ok();
                }
            }else {
                return R.ok();
            }
        }
        //更新合同状态为完成
        contract.setStatus(2);
        contractMapper.updateById(contract);