liujie
2 天以前 f73e9c5419c82b9ff685b8e67d839fd942100073
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
@@ -7,6 +7,7 @@
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.BaseModel;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.CodeGenerateUtils;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.dto.InventoryDto;
@@ -535,11 +536,38 @@
            supplierClinicId =crmClinic.getId();
        }
        TErpSupplierInventory tErpSupplierInventory = new TErpSupplierInventory();
        String s = DateUtils.dateTimeNow();
        tErpSupplierInventory.setInventoryNumber("P" + s);
        TErpSupplierInventory last1 = erpSupplierInventoryMapper.selectOne(new LambdaQueryWrapper<TErpSupplierInventory>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpSupplierInventory::getInventoryNumber).last("limit 1"));
        if(last1==null){
            tErpSupplierInventory.setInventoryNumber("P" + DateUtils.dateTimeNow()+"00001");
        }else {
            String lastProcurementCode = last1.getInventoryNumber();
            String datePart = "P" + DateUtils.dateTimeNow();
            // 直接获取后五位数字并+1,不考虑是否同一天
            try {
                String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                int number = Integer.parseInt(numberPart);
                if (number < 99999) {
                    number++;
                } else {
                    number = 2; // 达到99999后重置为00002
                }
                tErpSupplierInventory.setInventoryNumber(datePart + String.format("%05d", number));
            } catch (NumberFormatException e) {
                // 如果解析失败,默认从00001开始
                tErpSupplierInventory.setInventoryNumber(datePart + "00001");
            }
        }
        tErpSupplierInventory.setWarehouseId(dto.getWarehouseId());
        tErpSupplierInventory.setSupplierId(supplierClinicId);
        erpSupplierInventoryMapper.insert(tErpSupplierInventory);
        try {
            erpSupplierInventoryMapper.insert(tErpSupplierInventory);
        }catch (Exception e){
            throw new RuntimeException("网络繁忙,请重试");
        }
        List<InventoryGoodsDto> dtos = dto.getDtos();
        for (InventoryGoodsDto inventoryGoodsDto : dtos) {
@@ -561,10 +589,34 @@
                tErpSupplierWarehousing.setUnitAmount(tErpSupplierWarehousing1.getUnitAmount());
                tErpSupplierWarehousing.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(tErpSupplierWarehousing.getGoodsCount())));
                // 当前年月日时分秒
                String time = DateUtils.dateTimeNow();
                tErpSupplierWarehousing.setWarehouseNo("G" + time);
                TErpSupplierWarehousing last = erpSupplierWarehousingMapper.selectOne(new LambdaQueryWrapper<TErpSupplierWarehousing>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpSupplierWarehousing::getWarehouseNo).last("LIMIT 1"));
                if(last==null){
                    tErpSupplierWarehousing.setWarehouseNo("G"+DateUtils.dateTimeNow()+"00001");
                }else {
                    String lastProcurementCode = last.getWarehouseNo();
                    String datePart = "G" + DateUtils.dateTimeNow();
                    // 直接获取后五位数字并+1,不考虑是否同一天
                    try {
                        String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                        int number = Integer.parseInt(numberPart);
                        if (number < 99999) {
                            number++;
                        } else {
                            number = 2; // 达到99999后重置为00002
                        }
                        tErpSupplierWarehousing.setWarehouseNo(datePart + String.format("%05d", number));
                    } catch (NumberFormatException e) {
                        // 如果解析失败,默认从00001开始
                        tErpSupplierWarehousing.setWarehouseNo(datePart + "00001");
                    }
                }
                tErpSupplierWarehousing.setType(2);
                erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing);
                try {
                    erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing);
                }catch (Exception e){
                    throw new RuntimeException("网络繁忙,请重试");
                }
                // 添加批次信息
                TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpSupplierWarehousingBatch();
@@ -588,7 +640,7 @@
                erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
            } else {
                int i =1;
                TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = erpSupplierWarehousingBatchMapper.selectById(inventoryGoodsDto.getId());
                String warehousingId1 = tErpSupplierWarehousingBatch1.getWarehousingId();
                TErpSupplierWarehousing tErpSupplierWarehousing2 = erpSupplierWarehousingMapper.selectById(warehousingId1);
@@ -598,13 +650,37 @@
                    tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
                    tErpSupplierOutbound.setSupplierId(supplierClinicId);
                    tErpSupplierOutbound.setOutboundType(1);
                    tErpSupplierOutbound.setOutboundNumber("G" + s);
                    TErpSupplierOutbound last = erpSupplierOutboundMapper.selectOne(new LambdaQueryWrapper<TErpSupplierOutbound>().orderByDesc(BaseModel::getCreateTime).last("limit 1"));
                    if(last==null){
                        tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+ "00001");
                    }else {
                        String lastProcurementCode = last.getOutboundNumber();
                        String datePart = "G" + DateUtils.dateTimeNow();
                        // 直接获取后五位数字并+1,不考虑是否同一天
                        try {
                            String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                            int number = Integer.parseInt(numberPart);
                            if (number < 99999) {
                                number++;
                            } else {
                                number = 2; // 达到99999后重置为00002
                            }
                            tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
                        } catch (NumberFormatException e) {
                            // 如果解析失败,默认从00001开始
                            tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
                        }
                    }
                    int count = inventoryGoodsDto.getDamagedCount();
                    tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
                    tErpSupplierOutbound.setGoodsId(tErpSupplierWarehousing2.getGoodsId());
                    erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
                    try {
                        erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
                    }catch (Exception e){
                        throw new RuntimeException("网络繁忙,请重试");
                    }
                    TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
                    tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
                    tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
@@ -612,6 +688,7 @@
                    tErpSupplierOutboundGoods.setOutboundCount(count);
                    tErpSupplierOutboundGoods.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
                    erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
                    i=2;
                }
@@ -619,11 +696,37 @@
                tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
                tErpSupplierOutbound.setSupplierId(supplierClinicId);
                tErpSupplierOutbound.setOutboundType(6);
                tErpSupplierOutbound.setOutboundNumber("G" + s);
                TErpSupplierOutbound last = erpSupplierOutboundMapper.selectOne(new LambdaQueryWrapper<TErpSupplierOutbound>().orderByDesc(BaseModel::getCreateTime).last("limit 1"));
                if(last==null){
                    tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+ "00001");
                }else {
                    String lastProcurementCode = last.getOutboundNumber();
                    String datePart = "G" + DateUtils.dateTimeNow();
                    // 直接获取后五位数字并+1,不考虑是否同一天
                    try {
                        String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                        int number = Integer.parseInt(numberPart);
                        if (number < 99999) {
                            number+=i;
                        } else {
                            number = 2; // 达到99999后重置为00002
                        }
                        tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
                    } catch (NumberFormatException e) {
                        // 如果解析失败,默认从00001开始
                        tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
                    }
                }
                int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount();
                tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
                tErpSupplierOutbound.setGoodsId(tErpSupplierWarehousing2.getGoodsId());
                erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
                try {
                    erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
                }catch (Exception e){
                    throw new RuntimeException("网络繁忙,请重试");
                }
                TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
@@ -651,6 +754,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
    public void inventoryGoods1(InventoryDto dto, SysUser user) {
        Integer roleType = user.getRoleType();
        String supplierClinicId = null;
@@ -669,10 +773,36 @@
            supplierClinicId =crmClinic.getId();
        }
        TErpClinicInventory tErpSupplierInventory = new TErpClinicInventory();
        String s = DateUtils.dateTimeNow();
        tErpSupplierInventory.setInventoryNumber("P" + s);
        TErpClinicInventory last = erpClinicInventoryMapper.selectOne(new LambdaQueryWrapper<TErpClinicInventory>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicInventory::getInventoryNumber).last("limit 1"));
        if(last==null){
            tErpSupplierInventory.setInventoryNumber("P" + DateUtils.dateTimeNow()+"00001");
        }else {
            String lastProcurementCode = last.getInventoryNumber();
            String datePart = "P" + DateUtils.dateTimeNow();
            // 直接获取后五位数字并+1,不考虑是否同一天
            try {
                String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                int number = Integer.parseInt(numberPart);
                if (number < 99999) {
                    number++;
                } else {
                    number = 2; // 达到99999后重置为00002
                }
                tErpSupplierInventory.setInventoryNumber(datePart + String.format("%05d", number));
            } catch (NumberFormatException e) {
                // 如果解析失败,默认从00001开始
                tErpSupplierInventory.setInventoryNumber(datePart + "00001");
            }
        }
        tErpSupplierInventory.setClinicId(supplierClinicId);
        erpClinicInventoryMapper.insert(tErpSupplierInventory);
        try {
            erpClinicInventoryMapper.insert(tErpSupplierInventory);
        }catch (Exception e){
            throw new RuntimeException("网络繁忙,请重试");
        }
        List<InventoryGoodsDto> dtos = dto.getDtos();
        for (InventoryGoodsDto inventoryGoodsDto : dtos) {
@@ -682,8 +812,6 @@
            String warehousingId = tErpSupplierWarehousingBatch.getWarehousingId();
            TErpClinicWarehousing tErpSupplierWarehousing1 = erpClinicWarehousingMapper.selectById(warehousingId);
            TErpGoods erpGoods = this.getById(tErpSupplierWarehousingBatch.getGoodsId());
            // 盘点是盘亏盘盈   赢
            if (inventoryGoodsDto.getNum() < inventoryGoodsDto.getInventoryCount()) {
@@ -695,8 +823,28 @@
//                tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount());
                tErpSupplierWarehousing.setTotalPrice(tErpSupplierWarehousingBatch.getUnitAmount().multiply(new BigDecimal(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum())));
                // 当前年月日时分秒
                String time = DateUtils.dateTimeNow();
                tErpSupplierWarehousing.setWarehouseNo("G" + time);
                TErpClinicWarehousing last1 = erpClinicWarehousingMapper.selectOne(new LambdaQueryWrapper<TErpClinicWarehousing>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicWarehousing::getWarehouseNo).last("limit 1"));
                if(last1==null){
                    tErpSupplierWarehousing.setWarehouseNo("G" + DateUtils.dateTimeNow()+"00001");
                }else {
                    String lastProcurementCode = last1.getWarehouseNo();
                    String datePart = "G" + DateUtils.dateTimeNow();
                    // 直接获取后五位数字并+1,不考虑是否同一天
                    try {
                        String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                        int number = Integer.parseInt(numberPart);
                        if (number < 99999) {
                            number++;
                        } else {
                            number = 2; // 达到99999后重置为00002
                        }
                        tErpSupplierWarehousing.setWarehouseNo(datePart + String.format("%05d", number));
                    } catch (NumberFormatException e) {
                        // 如果解析失败,默认从00001开始
                        tErpSupplierWarehousing.setWarehouseNo(datePart + "00001");
                    }
                }
                tErpSupplierWarehousing.setType(2);
                tErpSupplierWarehousing.setInventoryId(tErpSupplierInventory.getId());
                if(erpGoods.getGoodsSource()==1){
@@ -705,7 +853,11 @@
                }else {
                    tErpSupplierWarehousing.setSupplierName(erpGoods.getSupplierName());
                }
                erpClinicWarehousingMapper.insert(tErpSupplierWarehousing);
                try {
                    erpClinicWarehousingMapper.insert(tErpSupplierWarehousing);
                }catch (Exception e){
                    throw new RuntimeException("网络繁忙,请重试");
                }
                // 添加批次信息
                TErpClinicWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpClinicWarehousingBatch();
@@ -734,18 +886,42 @@
                erpClinicInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
            } else {
                int i=1;
                if(inventoryGoodsDto.getDamagedCount()!=null && inventoryGoodsDto.getDamagedCount()>0){
                    TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound();
//                tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
//                tErpSupplierOutbound.setSupplierId(supplierClinicId);
                    tErpSupplierOutbound.setOutboundType(1);
                    tErpSupplierOutbound.setOutboundNumber("G" + s);
                    TErpClinicOutbound last2 = erpClinicOutboundMapper.selectOne(new LambdaQueryWrapper<TErpClinicOutbound>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicOutbound::getOutboundNumber).last("limit 1"));
                    if(last2==null){
                        tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+"00001");
                    }else {
                        String lastProcurementCode = last2.getOutboundNumber();
                        String datePart = "G" + DateUtils.dateTimeNow();
                        // 直接获取后五位数字并+1,不考虑是否同一天
                        try {
                            String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                            int number = Integer.parseInt(numberPart);
                            if (number < 99999) {
                                number++;
                            } else {
                                number = 2; // 达到99999后重置为00002
                            }
                            tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
                        } catch (NumberFormatException e) {
                            // 如果解析失败,默认从00001开始
                            tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
                        }
                    }
                    int count = inventoryGoodsDto.getDamagedCount();
                    tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
                    tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId());
                    erpClinicOutboundMapper.insert(tErpSupplierOutbound);
                    try {
                        erpClinicOutboundMapper.insert(tErpSupplierOutbound);
                    }catch (Exception e){
                        throw new RuntimeException("网络繁忙,请重试");
                    }
                    TErpClinicOutboundGoods tErpSupplierOutboundGoods = new TErpClinicOutboundGoods();
@@ -755,16 +931,42 @@
                    tErpSupplierOutboundGoods.setOutboundCount(count);
                    tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
                    erpClinicOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
                    i=2;
                }
                TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound();
//                tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
//                tErpSupplierOutbound.setSupplierId(supplierClinicId);
                tErpSupplierOutbound.setOutboundType(6);
                tErpSupplierOutbound.setOutboundNumber("G" + s);
                TErpClinicOutbound last4 = erpClinicOutboundMapper.selectOne(new LambdaQueryWrapper<TErpClinicOutbound>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicOutbound::getOutboundNumber).last("limit 1"));
                if(last4==null){
                    tErpSupplierOutbound.setOutboundNumber("G" +  DateUtils.dateTimeNow()+"00001");
                }else {
                    String lastProcurementCode = last4.getOutboundNumber();
                    String datePart = "G" + DateUtils.dateTimeNow();
                    // 直接获取后五位数字并+1,不考虑是否同一天
                    try {
                        String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                        int number = Integer.parseInt(numberPart);
                        if (number < 99999) {
                            number+=i;
                        } else {
                            number = 2; // 达到99999后重置为00002
                        }
                        tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
                    } catch (NumberFormatException e) {
                        // 如果解析失败,默认从00001开始
                        tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
                    }
                }
                int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount();
                tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousingBatch.getSalesAmount().multiply(new BigDecimal(count)));
                tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId());
                erpClinicOutboundMapper.insert(tErpSupplierOutbound);
                try {
                    erpClinicOutboundMapper.insert(tErpSupplierOutbound);
                }catch (Exception e){
                    throw new RuntimeException("网络繁忙,请重试");
                }
                TErpClinicOutboundGoods tErpSupplierOutboundGoods = new TErpClinicOutboundGoods();